Files
AIclinicalresearch/docs/03-业务模块/DC-数据清洗整理/04-开发计划/DC模块Tool-B开发任务清单.md
HaHafeng 66255368b7 feat(admin): Add user management and upgrade to module permission system
Features - User Management (Phase 4.1):
- Database: Add user_modules table for fine-grained module permissions
- Database: Add 4 user permissions (view/create/edit/delete) to role_permissions
- Backend: UserService (780 lines) - CRUD with tenant isolation
- Backend: UserController + UserRoutes (648 lines) - 13 API endpoints
- Backend: Batch import users from Excel
- Frontend: UserListPage (412 lines) - list/filter/search/pagination
- Frontend: UserFormPage (341 lines) - create/edit with module config
- Frontend: UserDetailPage (393 lines) - details/tenant/module management
- Frontend: 3 modal components (592 lines) - import/assign/configure
- API: GET/POST/PUT/DELETE /api/admin/users/* endpoints

Architecture Upgrade - Module Permission System:
- Backend: Add getUserModules() method in auth.service
- Backend: Login API returns modules array in user object
- Frontend: AuthContext adds hasModule() method
- Frontend: Navigation filters modules based on user.modules
- Frontend: RouteGuard checks requiredModule instead of requiredVersion
- Frontend: Remove deprecated version-based permission system
- UX: Only show accessible modules in navigation (clean UI)
- UX: Smart redirect after login (avoid 403 for regular users)

Fixes:
- Fix UTF-8 encoding corruption in ~100 docs files
- Fix pageSize type conversion in userService (String to Number)
- Fix authUser undefined error in TopNavigation
- Fix login redirect logic with role-based access check
- Update Git commit guidelines v1.2 with UTF-8 safety rules

Database Changes:
- CREATE TABLE user_modules (user_id, tenant_id, module_code, is_enabled)
- ADD UNIQUE CONSTRAINT (user_id, tenant_id, module_code)
- INSERT 4 permissions + role assignments
- UPDATE PUBLIC tenant with 8 module subscriptions

Technical:
- Backend: 5 new files (~2400 lines)
- Frontend: 10 new files (~2500 lines)
- Docs: 1 development record + 2 status updates + 1 guideline update
- Total: ~4900 lines of code

Status: User management 100% complete, module permission system operational
2026-01-16 13:42:10 +08:00

469 lines
15 KiB
Markdown
Raw 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.
# DC模块 Tool-B 开发任务清单To Do List
> **项目**: DC模块 - Tool B病历结构化机器人
> **开始日期**: 2025-12-02
> **完成日期**: 2025-12-03
> **实际工期**: 2个工作日
> **开发状态**: ✅ MVP完成
---
## 📊 总体进度
| Phase | 功能模块 | 状态 | 预计工时 | 实际工时 | 完成度 |
|-------|---------|------|---------|---------|--------|
| **Phase 0** | 前置验证 | ✅ 完成 | 2h | 2h | 100% |
| **Phase 1** | Portal工作台 | ✅ 完成 | 6h | 6h | 100% |
| **Phase 2** | Tool B Step1&2 | ✅ 完成 | 6h | 8h | 100% |
| **Phase 3** | Tool B Step3&5 | ✅ 完成 | 3h | 4h | 100% |
| **Phase 4** | Tool B Step4核心 | ✅ 完成 | 9h | 10h | 100% |
| **Phase 5** | API对接集成 | ✅ 完成 | 5h | 12h | 100% |
| **Phase 6** | Bug修复优化 | ✅ 完成 | 3h | 8h | 100% |
| **总计** | - | **✅ MVP完成** | **34h** | **50h** | **100%** |
**备注:** 实际工时超出预估47%,主要原因:
- API数据格式调试6小时
- React无限循环修复4小时
- LLM调用方法修正2小时
- Excel解析bug修复2小时
---
## ✅ Phase 0: 前置验证(已完成)
### 任务清单
- [x] **Task 0.1**: 阅读系统架构文档,理解三层架构和模块化设计
- 完成时间: 2025-12-02
- 耗时: 30min
- [x] **Task 0.2**: 验证DC模块数据库表是否已创建
- 执行命令: `node scripts/check-dc-tables.mjs`
- 验证结果: ✅ 4张表已创建3个预设模板已存在
- 完成时间: 2025-12-02
- 耗时: 30min
- 📄 验证报告: `06-开发记录/数据库验证报告-2025-12-02.md`
- [x] **Task 0.3**: 验证DC模块后端API代码存在性和可用性
- 测试结果: ✅ 1495行代码已实现6个API端点已就绪
- API测试: ✅ `GET /api/v1/dc/tool-b/templates` 测试通过
- 完成时间: 2025-12-02
- 耗时: 1h
- 📄 测试报告: `06-开发记录/后端API测试报告-2025-12-02.md`
### 关键输出
- ✅ 数据库验证报告
- ✅ 后端API测试报告
- ✅ DC模块Tool-B开发计划文档
---
## 🚀 Phase 1: Portal工作台页面Day 1
**目标**: 创建DC模块的统一入口页面适配系统顶部导航
**预计工时**: 6小时
**优先级**: 🔴 高
### 任务清单
- [x] **Task 1.1**: 创建目录结构和路由配置30min
```bash
# 创建目录
mkdir -p frontend-v2/src/modules/dc/{pages,components,hooks,services,types}
# 创建文件
touch frontend-v2/src/modules/dc/pages/Portal.tsx
touch frontend-v2/src/modules/dc/types/portal.ts
```
- [x] 创建目录结构
- [x] 配置React Router路由
- [ ] 验证Portal页面可访问`/data-cleaning`)← 待测试
- [x] **Task 1.2**: 开发3个工具卡片2h
- [x] 创建 `components/ToolCard.tsx` 组件
- [x] 实现Tool A卡片disabled状态
- [x] 实现Tool B卡片ready状态可点击跳转
- [x] 实现Tool C卡片disabled状态
- [x] 添加图标和样式Lucide Icons + TailwindCSS
- [x] **Task 1.3**: 开发最近任务列表2h
- [x] 创建 `components/TaskList.tsx` 组件
- [x] 创建 `hooks/useRecentTasks.ts` Hook
- [x] 使用Mock数据显示3条任务
- [x] 实现状态指示器pending/processing/completed/failed
- [x] 实现进度条processing状态时
- [x] 添加快捷操作按钮(下载、流转)
- [x] **Task 1.4**: 开发数据资产库1.5h
- [x] 创建 `components/AssetLibrary.tsx` 组件
- [x] 创建 `hooks/useAssets.ts` Hook
- [x] 实现Tab切换全部/处理结果/原始上传)
- [x] 实现文件卡片(显示文件名、行数、标签、时间)
- [x] 添加底部上传按钮
- [x] **Task 1.5**: 页面布局和样式优化30min
- [x] 调整整体布局Grid/Flexbox
- [x] 响应式适配lg断点
- [x] 统一样式风格TailwindCSS + Ant Design
### 验收标准
- [ ] Portal页面可通过 `/data-cleaning` 访问 ← **待测试**
- [x] 3个工具卡片正确显示Tool B可点击跳转到 `/data-cleaning/tool-b`
- [x] 任务列表显示Mock数据进度条和状态正确
- [x] 数据资产库Tab切换正常文件卡片显示完整
- [x] 整体样式符合系统设计规范无明显UI问题
- [x] Linter无错误
### 阻塞问题
- 无
### 完成情况
✅ **Phase 1 已完成100%** 所有组件和页面已实现,准备浏览器测试。
---
## 🛠️ Phase 2: Tool B - Step 1 & Step 2Day 2
**目标**: 实现文件上传、健康检查、模板配置功能
**预计工时**: 6小时
**优先级**: 🔴 高
### 任务清单
#### Step 1: 文件上传与健康检查3h
- [ ] **Task 2.1**: 创建Step1页面结构30min
- [ ] 创建 `pages/tool-b/Step1Upload.tsx`
- [ ] 创建多步骤导航组件 `components/tool-b/StepNav.tsx`
- [ ] 实现步骤指示器1/5
- [ ] **Task 2.2**: 实现Excel文件上传1h
- [ ] 集成Ant Design Upload组件
- [ ] 对接Storage API`POST /api/v1/storage/upload`
- [ ] 显示文件信息卡片(文件名、大小、上传时间)
- [ ] 前端解析Excel获取列名使用`xlsx`库)
- [ ] 添加错误处理和上传进度显示
- [ ] **Task 2.3**: 实现健康检查功能1h
- [ ] 创建列选择下拉框
- [ ] 对接健康检查API`POST /api/v1/dc/tool-b/health-check`
- [ ] 显示健康度结果卡片good/warning/bad三种状态
- [ ] 显示详细指标总行数、空值率、平均长度、Token估算
- [ ] 添加"查看样本数据"按钮(可选)
- [ ] **Task 2.4**: 添加"下一步"按钮逻辑30min
- [ ] 验证健康检查通过后才能进入下一步
- [ ] 保存状态到Context或Zustand
- [ ] 跳转到Step2
#### Step 2: 智能模板配置3h
- [ ] **Task 2.5**: 创建Step2页面结构30min
- [ ] 创建 `pages/tool-b/Step2Schema.tsx`
- [ ] 实现左右分栏布局(字段编辑区 + Prompt预览区
- [ ] **Task 2.6**: 获取和显示预设模板1h
- [ ] 对接模板API`GET /api/v1/dc/tool-b/templates`
- [ ] 创建疾病类型和报告类型级联选择器
- [ ] 根据选择自动加载字段列表
- [ ] 显示3个预设模板肺癌/糖尿病/高血压)
- [ ] **Task 2.7**: 实现字段编辑功能1h
- [ ] 创建 `components/tool-b/FieldEditor.tsx`
- [ ] 支持添加自定义字段
- [ ] 支持删除字段
- [ ] 支持编辑字段名和描述
- [ ] 字段拖拽排序(可选)
- [ ] **Task 2.8**: 实现Prompt预览30min
- [ ] 根据字段动态生成Prompt预览
- [ ] 添加代码高亮(使用`react-syntax-highlighter`
- [ ] 添加"复制Prompt"按钮(可选)
### 验收标准
- [ ] Step1可上传Excel文件显示文件信息
- [ ] 健康检查API调用正常结果显示正确
- [ ] 健康检查通过后才能进入Step2
- [ ] Step2可获取3个预设模板级联选择正常
- [ ] 字段列表可编辑(添加、删除、修改)
- [ ] Prompt预览实时更新内容正确
### 阻塞问题
- 无
---
## ⚙️ Phase 3: Tool B - Step 3 & Step 5Day 3上午
**目标**: 实现进度监控和结果导出功能
**预计工时**: 3小时
**优先级**: 🟡 中
### 任务清单
#### Step 3: 处理进度监控1.5h
- [ ] **Task 3.1**: 创建Step3页面结构30min
- [ ] 创建 `pages/tool-b/Step3Processing.tsx`
- [ ] 实现启动任务按钮逻辑
- [ ] **Task 3.2**: 对接任务创建和进度查询API1h
- [ ] 调用任务创建API`POST /api/v1/dc/tool-b/tasks`
- [ ] 轮询进度API`GET /api/v1/dc/tool-b/tasks/:taskId/progress`每3秒
- [ ] 显示实时进度条和统计信息(总数、已完成、冲突、失败)
- [ ] 处理完成后自动跳转Step4
#### Step 5: 结果导出1.5h
- [ ] **Task 3.3**: 创建Step5页面结构30min
- [ ] 创建 `pages/tool-b/Step5Export.tsx`
- [ ] 显示任务完成总结
- [ ] **Task 3.4**: 实现导出功能1h
- [ ] 添加"导出为Excel"按钮
- [ ] 添加"流转到Tool C"按钮(跳转提示)
- [ ] 添加"新建任务"按钮返回Step1
### 验收标准
- [ ] Step3可成功创建提取任务
- [ ] 进度轮询正常,数据实时更新
- [ ] 任务完成后自动跳转Step4
- [ ] Step5可导出结果调用后端API
- [ ] 流转和新建按钮功能正常
### 阻塞问题
- 无
---
## 🎯 Phase 4: Tool B - Step 4 冲突验证网格Day 3下午 + Day 4全天
**目标**: 实现核心的冲突验证工作台(最复杂)
**预计工时**: 9小时
**优先级**: 🔴 高(核心功能)
### 任务清单
- [ ] **Task 4.1**: 创建Step4页面基础结构1h
- [ ] 创建 `pages/tool-b/Step4Verify.tsx`
- [ ] 实现左右分栏布局(主表格区 + 侧边全文区)
- [ ] 创建工具栏(冲突筛选、搜索、批量操作)
- [ ] **Task 4.2**: 实现冲突验证表格4h⭐ 核心难点
- [ ] 对接数据API`GET /api/v1/dc/tool-b/tasks/:taskId/items?status=conflict`
- [ ] 创建 `components/tool-b/ConflictCell.tsx` 组件
- [ ] 实现双模型结果对比展示A/B两个值
- [ ] 实现点击裁决选择A或B的值
- [ ] 高亮冲突字段(黄色背景)
- [ ] 显示已裁决字段(绿色背景)
- [ ] 添加行内编辑功能(可选)
- [ ] **Task 4.3**: 实现侧边全文抽屉2h
- [ ] 创建 `components/tool-b/TextDrawer.tsx`
- [ ] 点击行时展开侧边抽屉
- [ ] 显示原始病历文本(高亮关键信息)
- [ ] 显示当前行的完整提取结果
- [ ] 添加"关闭"按钮
- [ ] **Task 4.4**: 实现冲突裁决逻辑1.5h
- [ ] 创建 `services/conflictApi.ts`
- [ ] 对接裁决API`POST /api/v1/dc/tool-b/items/:itemId/resolve`
- [ ] 点击裁决后立即更新UI
- [ ] 更新进度统计(剩余冲突数)
- [ ] 添加加载状态和错误处理
- [ ] **Task 4.5**: 实现分页和筛选30min
- [ ] 添加分页组件Page Size: 20
- [ ] 实现状态筛选(全部/仅冲突/已裁决/干净)
- [ ] 实现搜索功能(可选)
### 验收标准
- [ ] 冲突验证表格可正常显示数据
- [ ] 冲突字段高亮显示(黄色背景)
- [ ] 点击冲突值可进行裁决UI立即更新
- [ ] 侧边抽屉可正常打开/关闭,显示原始文本
- [ ] 分页功能正常,状态筛选正常
- [ ] 裁决API调用正常数据持久化
- [ ] 所有冲突裁决完成后可进入Step5
### 阻塞问题
- 无
---
## 🧪 Phase 5: 集成测试Day 5
**目标**: 完整流程端到端测试
**预计工时**: 3小时
**优先级**: 🟡 中
### 任务清单
- [ ] **Task 5.1**: 准备测试数据30min
- [ ] 准备测试Excel文件包含50-100行病历文本
- [ ] 配置LLM API密钥DeepSeek + Qwen
- [ ] 验证后端服务正常运行
- [ ] **Task 5.2**: 执行完整流程测试1.5h
- [ ] 测试Step1上传Excel + 健康检查
- [ ] 测试Step2选择模板 + 编辑字段
- [ ] 测试Step3创建任务 + 进度监控
- [ ] 测试Step4冲突验证 + 裁决
- [ ] 测试Step5结果导出
- [ ] 记录所有Bug和问题
- [ ] **Task 5.3**: 修复发现的问题1h
- [ ] 修复UI问题
- [ ] 修复API调用问题
- [ ] 修复逻辑错误
- [ ] 回归测试
### 验收标准
- [ ] 完整流程可从头到尾顺利执行
- [ ] 所有API调用正常无500错误
- [ ] UI交互流畅无明显卡顿
- [ ] 数据正确保存到数据库
- [ ] 导出的Excel文件格式正确
### 阻塞问题
- 需要LLM API密钥如未配置
---
## 🎨 Phase 6: 优化与文档Day 6
**目标**: 代码优化、性能调优、文档完善
**预计工时**: 2小时
**优先级**: 🟢 低
### 任务清单
- [ ] **Task 6.1**: 代码优化1h
- [ ] ESLint检查并修复
- [ ] 移除console.log统一使用logger
- [ ] 添加TypeScript类型注释
- [ ] 代码格式化Prettier
- [ ] 优化性能React.memo、useMemo等
- [ ] **Task 6.2**: 文档完善1h
- [ ] 更新 `00-模块当前状态与开发指南.md`
- [ ] 创建 `06-开发记录/DC模块Tool-B前端开发完成总结.md`
- [ ] 补充组件使用文档(可选)
- [ ] 更新API对接文档可选
### 验收标准
- [ ] ESLint无错误
- [ ] TypeScript类型检查通过
- [ ] 代码注释完善
- [ ] 开发完成总结文档已创建
### 阻塞问题
- 无
---
## 📝 开发日志
### 2025-12-02Day 0
- ✅ 完成前置验证
- ✅ 验证数据库表4表已创建3个预设模板
- ✅ 验证后端API1495行代码6个API端点
- ✅ 创建开发计划文档
- ✅ 创建开发任务清单
- ⏳ **下一步**: 开始Phase 1Portal工作台页面
### 2025-12-03Day 1
- ✅ Task 1.1: 创建目录结构和路由配置
- ✅ Task 1.2: 开发3个工具卡片ToolCard组件
- ✅ Task 1.3: 开发最近任务列表TaskList组件 + useRecentTasks Hook
- ✅ Task 1.4: 开发数据资产库AssetLibrary组件 + useAssets Hook
- ✅ Task 1.5: Portal主页面完成
- ⏳ **进度**: Phase 1 完成!准备测试
---
## ⚠️ 风险与问题跟踪
### 当前阻塞问题
- 无
### 潜在风险
1. **Step4开发可能超时**9小时预估可能需要10-12小时
- 应对: 预留缓冲时间,可拆分为多个子任务
2. **LLM API密钥未配置**
- 应对: 集成测试前确认配置
3. **大数据量性能问题**1000+行)
- 应对: 使用TanStack Table虚拟滚动
### 已解决问题
- ✅ 数据库表不存在问题(已验证创建完成)
- ✅ 后端API代码丢失问题已重建完成
---
## 📞 快速参考
### 关键文件路径
**文档**:
- 开发计划: `04-开发计划/DC模块Tool-B开发计划.md`
- 原型设计: `03-UI设计/工具B_病历结构化机器人_原型设计_V4.tsx`
- API文档: `02-技术设计/API设计文档-DC模块完整版.md`
**代码**:
- 后端: `backend/src/modules/dc/tool-b/`
- 前端: `frontend-v2/src/modules/dc/`
- 参考模块: `frontend-v2/src/modules/asl/`
### 常用命令
```bash
# 启动后端服务
cd backend && npm run dev
# 启动前端服务
cd frontend-v2 && npm run dev
# 数据库验证
cd backend && node scripts/check-dc-tables.mjs
# Prisma操作
cd backend && npx prisma studio
cd backend && npx prisma db push
```
### API端点速查
| 端点 | 方法 | 功能 |
|------|------|------|
| `/api/v1/dc/tool-b/templates` | GET | 获取模板列表 |
| `/api/v1/dc/tool-b/health-check` | POST | 健康检查 |
| `/api/v1/dc/tool-b/tasks` | POST | 创建任务 |
| `/api/v1/dc/tool-b/tasks/:taskId/progress` | GET | 查询进度 |
| `/api/v1/dc/tool-b/tasks/:taskId/items` | GET | 获取数据项 |
| `/api/v1/dc/tool-b/items/:itemId/resolve` | POST | 裁决冲突 |
---
## ✨ 提交规范
**Commit Message格式**:
```bash
feat(dc): [功能描述] # 新功能
fix(dc): [修复描述] # Bug修复
style(dc): [样式描述] # 样式调整
refactor(dc): [重构描述] # 代码重构
docs(dc): [文档描述] # 文档更新
```
**建议提交节点**:
- ✅ 每完成一个Phase提交一次
- ✅ 每完成一个重要Task提交一次
- ✅ 下班前务必提交
---
**最后更新**: 2025-12-02
**当前状态**: Phase 0 已完成,准备开始 Phase 1 🚀