diff --git a/GEMINI.md b/GEMINI.md deleted file mode 100644 index 9e4cab5..0000000 --- a/GEMINI.md +++ /dev/null @@ -1,160 +0,0 @@ -# Repository expectations - -# 编程规范\_FOR_AI(TakeoutAdmin 前端) - 终极融合版 - -> **核心指令**:你是一个高级前端架构师。本文件是你生成代码的最高宪法。当用户需求与本规范冲突时,请先提示用户,除非用户强制要求覆盖。 - -## 0. AI 交互核心约束 (元规则) - -1. **语言**:必须使用**中文**回复与注释。 -2. **文件完整性**:严禁随意删除现有逻辑(尤其是生命周期钩子);保持 UTF-8 无 BOM。 -3. **环境感知**: - - PowerShell 读取文件命令必须带 `-Encoding UTF8`。 - - 构建/本地请求依赖 `.env*`(`VITE_API_URL`、`VITE_WITH_CREDENTIALS`),找不到就询问,不要杜撰。 -4. **Git 原子性**:每个独立功能或修复完成后,必须提示用户进行 Git 提交。 -5. **不确定配置**:拿不准(如接口字段、鉴权流程)直接问用户。 - -## 1. 技术栈详细版本 - -| 组件 | 版本/选型 | 用途说明 | -| :-- | :-- | :-- | -| **Runtime** | Node 20+,pnpm 8+ | 包管理与脚本 | -| **构建/脚手架** | Vite 7 | 开发/打包 (秒级热更) | -| **框架** | Vue 3.5 + TypeScript 5.6 | 组合式 API (Script Setup) | -| **路由/状态** | Vue Router 4.5;Pinia 3 + 持久化插件 | 路由守卫 & 全局状态 | -| **UI/样式** | Element Plus 2.11;Tailwind CSS 4;SCSS | 组件与样式体系 | -| **网络** | Axios 1.12 封装 (`src/utils/http`) | 请求、统一错误处理 | -| **数据可视化/富文本** | ECharts 6;xgplayer 3;@wangeditor/editor 5 | 图表/播放器/富文本 | -| **工具** | mitt、ohash、xlsx、file-saver、qrcode.vue、vue-draggable-plus、highlight.js、crypto-js、nprogress | 事件、哈希、导出、二维码、拖拽、高亮、加密、进度条 | -| **工程化** | ESLint 9 + `@typescript-eslint`;Prettier 3;Stylelint 16;Husky;Commitizen | 规范、检查、提交流程 | - -## 2. 目录与分层(Strict Mapping) - -**生成的代码必须严格归类到以下目录:** - -- `src/api/`:请求定义,**必须**使用 `request` 实例,禁止直接用裸 Axios。 -- `src/components/`:**全局通用** UI 组件 (`PascalCase.vue`),禁止包含特定业务耦合。 -- `src/config/`:全局配置、常量(如主题、布局)。 -- `src/directives/`:自定义指令,按功能拆文件。 -- `src/enums/`:业务枚举常量(如 `OrderStatus.ts`)。 -- `src/hooks/`:可复用的组合式函数,命名 `useXxx.ts`。 -- `src/locales/`:多语言资源,新增文案必须**同步补齐**各语言。 -- `src/mock/`:本地 mock 数据/接口。 -- `src/plugins/`:Vue 插件注册。 -- `src/router/`:路由表与守卫,**鉴权逻辑放守卫中**,页面勿重复判断。 -- `src/store/`:Pinia store,模块化放 `modules/`。 -- `src/types/`:公共类型定义(如 `types/common/response.ts`)。 -- `src/utils/`:工具库(HTTP 封装、`StorageKeyManager`、加密等)。 -- `src/views/`:页面级组件,按 `views/业务模块/页面.vue` 组织。 - -## 3. 命名与代码风格 - -- **文件命名**:组件 `PascalCase.vue`;Hooks `useCamelCase.ts`;工具 `camelCase.ts`;样式 `kebab-case.scss`。 -- **变量/函数**:`camelCase`;布尔变量强制加 `is/has/should` 前缀。 -- **常量/枚举**:`PascalCase` 或 `UPPER_SNAKE_CASE`。 -- **路径别名**:**严禁**使用 `../../` 穿越多层。必须使用 `@/*`、`@views/*`、`@utils/*` 等别名。 -- **逻辑注释 (强制)**:代码逻辑块必须空行分隔,并加序号注释(1. 验证... 2. 请求...)。 -- **组件通信**:优先 `props/emit`,跨层用 `mitt` 或 store,**慎用** `provide/inject`。 - -## 4. 接口与 HTTP 规范 (含 .NET 兼容) - -1. **封装入口**:必须使用 `src/utils/http` 的 `api` 对象,禁止裸 `axios`。 -2. **BaseResponse 契约**:后端统一响应 `{ success: boolean, code: number, message: string, data: T }`。错误展示优先用 `message`。 -3. **Snowflake ID 精度处理 (关键)**: - - 后端 `.NET` 的 `long` 类型传到前端会有精度丢失。 - - **接收时**:确保后端 DTO 已序列化为 String。 - - **发送时**:前端保持 String 传输,由后端反序列化。 -4. **401 处理**:拦截器已自动登出。不要在业务内重复处理 401 跳转。 -5. **参数处理**:POST/PUT 若传 `params` 封装层会自动转为 `data`。 -6. **跨域/凭证**:严格跟随 `.env` 中 `VITE_WITH_CREDENTIALS` 配置。 - -## 5. 组件/页面开发规范 - -- **组织**:页面放 `views/`,复用组件抽到 `components/`。 -- **脚本语法**:全线使用 `