finyx_frontend/docs/.cursorrules
2026-01-05 09:57:25 +08:00

174 lines
6.1 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Cursor Rules for Finyx Frontend
## 项目概述
这是一个基于 Vue 3 + TypeScript + Vite 的前端项目,主要功能包括智能问答、智能写作、智能审核和知识库管理。
## 技术栈
- **框架**: Vue 3.3.4 (Composition API)
- **构建工具**: Vite 6.3.5
- **语言**: TypeScript 5.1.6
- **UI框架**: Element Plus 2.9.1
- **状态管理**: Pinia 2.1.6
- **路由**: Vue Router 4.2.4
- **HTTP客户端**: Axios 0.28.0
- **样式**: SCSS
- **代码编辑器**: CodeMirror 6.0.1
- **Markdown编辑器**: md-editor-v3 5.8.4
## 代码规范
### 1. 语言与注释
- 默认使用中文回答问题,除非用户特别要求英文
- 默认使用英文代码注释,除非特别要求中文
- 公共 API 使用 JSDoc/TSDoc 格式
### 2. 回答风格
- 尽量简洁明了,避免不必要的废话和重复说明
- 先给出关键答案,再提供简短解释或示例
### 3. 安全与稳健性(最高优先级)
- 绝对禁止硬编码任何敏感信息密码、API密钥、IP
- 所有配置必须从环境变量或配置文件中读取
- 必须进行错误处理,对可能失败的操作使用 try-catch 或等效机制
### 4. 代码整洁与可维护性(参考《代码整洁之道》)
- 函数短小且单一职责,每个函数只做一件事
- 变量、函数、类命名语义清晰,易读易理解
- 避免重复代码(遵循 DRY 原则)
- 错误处理明确且一致,保证程序健壮
- 模块和类职责明确,依赖清晰,便于扩展和维护
## 项目结构
### 目录结构
```
src/
├── api/ # API接口定义
├── assets/ # 静态资源
├── bus/ # 事件总线
├── components/ # 全局组件
├── directives/ # 自定义指令
├── enums/ # 枚举定义
├── layout/ # 布局组件
├── request/ # HTTP请求封装
├── router/ # 路由配置
├── servers/ # 服务层API
│ ├── base/ # 基础服务
│ ├── finyx/ # Finyx业务服务
│ └── oauth/ # 认证服务
├── stores/ # Pinia状态管理
│ └── modules/ # 状态模块
├── styles/ # 全局样式
├── utils/ # 工具函数
└── views/ # 页面组件
├── chat/ # 聊天页面
├── knowledge/ # 知识中心
├── login/ # 登录页面
└── smart/ # 智能中心
```
### 命名规范
- **组件**: PascalCase (如 `AppAvatar.vue`)
- **文件/目录**: kebab-case (如 `app-avatar/`)
- **变量/函数**: camelCase (如 `getUserInfo`)
- **常量**: UPPER_SNAKE_CASE (如 `MAX_SIZE`)
- **类型/接口**: PascalCase (如 `UserInfo`)
## 开发规范
### Vue组件规范
1. **使用 Composition API**: 优先使用 `<script setup>` 语法
2. **组件结构**: template -> script -> style
3. **Props定义**: 使用 TypeScript 类型定义
4. **响应式数据**: 使用 `ref` 和 `reactive` 明确声明
5. **生命周期**: 使用组合式API的生命周期钩子
### TypeScript规范
1. **类型定义**: 所有函数参数和返回值必须定义类型
2. **接口定义**: 使用 `interface` 定义数据结构
3. **类型导入**: 使用 `import type` 导入类型
4. **避免使用 `any`**: 尽量使用具体类型或 `unknown`
### API请求规范
1. **统一使用**: `src/request/http.ts` 封装的请求方法
2. **错误处理**: 在请求拦截器中统一处理
3. **Token管理**: 通过 `dada` store 管理认证信息
4. **请求头**: 自动添加 Token、TenantId、AuthId、ApplicationId
### 状态管理规范
1. **使用 Pinia**: 所有状态管理使用 Pinia
2. **Store模块化**: 按功能模块划分 store
3. **当前Store模块**:
- `dada`: 用户认证和基础信息
- `docs`: 文档管理
- `chat`: 聊天相关
- `answerSetting`: 问答设置
- `knowledge`: 知识库管理
### 路由规范
1. **路由配置**: 统一在 `src/router/routes.ts` 中定义
2. **路由守卫**: 在 `src/router/index.ts` 中实现
3. **路由元信息**: 使用 `meta` 字段定义标题、图标、权限等
4. **懒加载**: 使用动态导入 `() => import()` 实现路由懒加载
### 样式规范
1. **使用SCSS**: 所有样式文件使用 SCSS
2. **CSS变量**: 使用全局CSS变量定义在 `src/styles/variables.scss`
3. **作用域**: 组件样式使用 `scoped`
4. **BEM命名**: 复杂组件可考虑使用BEM命名规范
### 组件开发规范
1. **全局组件**: 在 `src/components/index.ts` 中注册
2. **组件导出**: 使用具名导出
3. **Props验证**: 使用 TypeScript 类型验证
4. **事件命名**: 使用 kebab-case (如 `@update-value`)
## 环境变量
### 环境变量文件位置
- 环境变量文件存放在 `env/` 目录
- 通过 `VITE_` 前缀暴露给前端
### 常用环境变量
- `VITE_APP_PORT`: 开发服务器端口
- `VITE_BASE_PATH`: 基础路径
- `VITE_MOCK_DEV_SERVER`: 是否启用Mock服务
- `VITE_BUILD`: 构建模式
## 构建与部署
### 开发命令
```bash
pnpm dev # 启动开发服务器
pnpm build # 构建生产版本
pnpm build:prd # 构建生产版本(含类型检查)
pnpm preview # 预览构建结果
pnpm lint # 代码检查
pnpm format # 代码格式化
```
### 构建配置
- **压缩**: 使用 Terser 压缩
- **代码分割**: 按模块手动分割vue, lodash, echarts等
- **资源处理**: SVG图标自动生成雪碧图
- **Gzip压缩**: 生产环境启用Gzip压缩
## 注意事项
1. **API代理**: 开发环境通过 Vite 代理配置转发请求
2. **Token管理**: Token失效会自动跳转登录页
3. **错误码处理**: 特定错误码11011-11016表示认证失效
4. **文件上传**: 使用 `src/servers/base/api/wenjianshangchuan.ts`
5. **Markdown渲染**: 使用 md-editor-v3支持 KaTeX、Mermaid、代码高亮等
## 代码审查要点
1. ✅ 是否进行了错误处理
2. ✅ 是否使用了类型定义
3. ✅ 是否遵循命名规范
4. ✅ 是否避免了硬编码
5. ✅ 是否遵循单一职责原则
6. ✅ 是否进行了代码复用
7. ✅ 是否添加了必要的注释