# 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. **推送优先级**:提交后推送时,优先使用 SSH 远程(`git@github.com:...`),避免 HTTPS TLS 问题。 6. **推送默认**:提交后自动执行 `git push`,无需再次提醒或确认。 7. **不确定配置**:拿不准(如接口字段、鉴权流程)直接问用户。 ## 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/`。 - **脚本语法**:全线使用 `