feat: 重构用户管理页面,集成 msw mock,统一路径别名和 API 命名规范
This commit is contained in:
39
AGENTS.md
39
AGENTS.md
@@ -84,6 +84,30 @@ tsconfig.json
|
||||
- **单引号**(`.prettierrc` 中 `singleQuote: true`)
|
||||
- ESLint 仅作用于 `**/*.{ts,tsx}`,启用了 `react-hooks` 和 `react-refresh` 插件
|
||||
|
||||
## 注释规范
|
||||
|
||||
**所有代码都应附带必要的注释,说明意图而非重复代码本身。**
|
||||
|
||||
- 函数 / Hook:用 JSDoc 说明用途、参数含义
|
||||
- 复杂逻辑、非直觉的实现:行内注释解释原因
|
||||
- 模拟数据 / 临时代码:标注 `// TODO:` 或 `// FIXME:` 方便后续替换
|
||||
- 类型字段:用 JSDoc 注释说明每个字段的含义
|
||||
|
||||
```ts
|
||||
// ✅ 说明意图
|
||||
// 用 cancelled 标志位防止组件卸载后的竞态更新
|
||||
let cancelled = false;
|
||||
|
||||
/**
|
||||
* 根据部门 ID 获取用户列表
|
||||
* @param deptKey 部门节点 key
|
||||
*/
|
||||
const fetchUsersByDept = (deptKey: string): Promise<UserRecord[]> => { ... };
|
||||
|
||||
// TODO: 替换为真实接口
|
||||
const mockData = [...];
|
||||
```
|
||||
|
||||
## UI 组件规范(antd)
|
||||
|
||||
**页面 UI 优先使用 antd 组件,不自行实现已有组件的功能。**
|
||||
@@ -109,9 +133,22 @@ import { ConfigProvider } from 'antd';
|
||||
## HTTP 请求
|
||||
|
||||
- 所有请求通过 `src/utils/request.ts` 封装的方法发出,不直接使用 `axios`
|
||||
- 导出方法:`get` / `post` / `put` / `del`,返回值类型自动推断为 `API.Response<T>`
|
||||
- **只使用 `get` 和 `post` 两种方法**,不使用 `put` / `delete` 等其他方法
|
||||
- 编辑接口用 `post`,路径加 `/edit` 后缀;删除接口用 `post`,路径加 `/del` 后缀
|
||||
- 全局响应结构 `API.Response<T>` 定义在 `src/types/http.d.ts`,无需 import 直接使用
|
||||
- 请求拦截器(添加 token)和响应拦截器(处理错误码)统一在 `request.ts` 中维护
|
||||
- 接口函数统一放在 `src/api/` 下,按模块分文件管理(如 `src/api/system/user.ts`)
|
||||
|
||||
**接口函数命名规范:**
|
||||
|
||||
| 操作 | 前缀 | 示例 |
|
||||
|------|------|------|
|
||||
| 新增 | `add` | `addDept` |
|
||||
| 编辑 | `edit` | `editDept` |
|
||||
| 删除 | `del` | `delDept` |
|
||||
| 获取列表 | `list` | `listUser` |
|
||||
| 获取详情 | `detail` | `detailUser` |
|
||||
| 特殊查询(树等) | 语义命名 | `deptTree` |
|
||||
|
||||
```ts
|
||||
// 使用示例
|
||||
|
||||
Reference in New Issue
Block a user