chore(frontend): purge dead code per guide red line
- delete 4 dead pages (~2300 lines): Home, ConfigPlatformPage, DataDictionaryPage, NotificationsPage (kept the live NotificationPage) - delete 52 unused shadcn ui components (keep button/card/dialog in use; re-generate via shadcn CLI when needed) - delete App.css, SkeletonCard, empty shared/ and features engine dirs - remove dead theme blocks (midnight-purple / orange-vitality) from index.css - uninstall ~40 dead deps (echarts, sonner, next-themes, zod, react-hook-form, unused radix packages, cmdk, vaul, ...) - fix DEVELOPMENT.md drift: mock layer section rewritten to real API layer, permission docs now point to menu.ts single source
This commit is contained in:
1 parent
16f1f7d65f
commit
a213d08e31
62 files changed
+19
-9220
No files matched your search
+16
-27
@@ -55,13 +55,14 @@ src/
|
||||
│ ├── WorkflowPage.tsx # 审批流程配置
|
||||
│ ├── AutoTaskPage.tsx # 自动任务
|
||||
│ ├── AnnouncementPage.tsx # 公告管理
|
||||
│ ├── ConfigPlatformPage.tsx # 配置平台
|
||||
│ └── LoginPage.tsx # 登录
|
||||
├── hooks/ # 自定义 Hooks
|
||||
│ └── useAuth.tsx # 权限上下文 + useAuth + useActionPermission
|
||||
├── lib/ # 工具库
|
||||
│ ├── mock.ts # 全量 Mock 数据
|
||||
│ └── utils.ts # 工具函数
|
||||
│ ├── utils.ts # 工具函数
|
||||
│ ├── constants.ts # 常量
|
||||
│ ├── queryTemplates.ts# 查询模板
|
||||
│ └── storage.ts # localStorage 命名空间与迁移
|
||||
├── types/ # TypeScript 类型定义
|
||||
│ └── index.ts # 全局类型
|
||||
├── App.tsx # 根组件(路由 + 路由守卫)
|
||||
@@ -89,7 +90,7 @@ src/
|
||||
**关键代码**:
|
||||
```tsx
|
||||
// pages/Dashboard.tsx
|
||||
// 使用 recharts 绘制图表,工单表格复用 tickets mock 数据
|
||||
// 使用 recharts 绘制图表,数据来自 /dashboard/stats 接口
|
||||
```
|
||||
|
||||
---
|
||||
@@ -347,9 +348,8 @@ const canApprove = useActionPermission('ticket.approve'); // true/false
|
||||
|
||||
### 4.3 权限配置表
|
||||
|
||||
路由权限:`useAuth.tsx` 中 `routePermissionMap`
|
||||
操作权限:`useAuth.tsx` 中 `actionPermissionMap`
|
||||
菜单权限:`lib/mock.ts` 中 `menuItems[*].roles`
|
||||
菜单/路由权限(唯一源):`constants/menu.ts` 中 `menuItems[*].roles`
|
||||
操作权限:`hooks/useAuth.tsx` 中 `actionPermissionMap`
|
||||
|
||||
### 4.4 角色切换演示
|
||||
|
||||
@@ -360,35 +360,24 @@ const canApprove = useActionPermission('ticket.approve'); // true/false
|
||||
|
||||
---
|
||||
|
||||
## 五、Mock 数据层
|
||||
## 五、数据层
|
||||
|
||||
所有数据存储在 `src/lib/mock.ts`,后端接口就绪后替换为 API 调用即可。
|
||||
后端 API 已全面就绪,无 Mock 层。所有请求走 `src/api/request.ts` 统一实例:
|
||||
|
||||
**主要数据集合**:
|
||||
|
||||
| 数据 | 变量名 | 用途 |
|
||||
|------|--------|------|
|
||||
| 数据库实例 | `dbInstances` | 实例管理 |
|
||||
| 工单 | `tickets` | 工单管理 |
|
||||
| 查询审计 | `queryAudits` | 查询审计 |
|
||||
| 审核规则 | `auditRules` | 审核规则 |
|
||||
| 用户 | `users` | 用户管理 |
|
||||
| 角色 | `roles` | 角色管理 |
|
||||
| 审批流程 | `workflows` | 流程配置 |
|
||||
| 菜单 | `menuItems` | 侧边栏菜单 |
|
||||
| 当前用户 | `currentUser` | 登录用户 |
|
||||
- 响应拦截器已解包一层(拿到的是响应体本身),API 函数用 `request.get<unknown, T>()` 标注返回类型
|
||||
- 401 自动走 refresh token 单飞刷新(并发只刷一次),失败才跳登录并携带 redirect 回跳
|
||||
- 单请求逃生口:`{ skipErrorHandler: true }` 关闭全局错误提示
|
||||
- 列表数据获取用 `hooks/useFetchList.ts`(取消 + 版本号防错序 + error 三态)
|
||||
|
||||
---
|
||||
|
||||
## 六、开发规范
|
||||
|
||||
### 6.1 新增页面步骤
|
||||
|
||||
1. 在 `src/pages/` 创建页面组件
|
||||
2. 在 `src/App.tsx` 添加路由(配置 `routePermissionMap` 权限)
|
||||
3. 在 `src/hooks/useAuth.tsx` 的 `routePermissionMap` 中添加路由权限
|
||||
4. 在 `src/lib/mock.ts` 的 `menuItems` 中添加菜单项
|
||||
5. (如需要)在 `actionPermissionMap` 中添加页面操作权限
|
||||
2. 在 `src/App.tsx` 添加路由
|
||||
3. 在 `src/constants/menu.ts` 的 `menuItems` 中添加菜单项(roles 即路由权限,单源维护)
|
||||
4. (如需要)在 `actionPermissionMap` 中添加页面操作权限
|
||||
|
||||
### 6.2 新增操作权限
|
||||
|
||||
|
||||
Reference in new issue
Block a user