Summary: - Complete IIT Manager Agent MVP Day 1 (12.5% progress) - Database: Create iit_schema with 5 tables (IitProject, IitPendingAction, IitTaskRun, IitUserMapping, IitAuditLog) - Backend: Add module structure (577 lines) and types (223 lines) - WeChat: Configure Enterprise WeChat app (CorpID, AgentID, Secret) - WeChat: Obtain web authorization and JS-SDK authorization - WeChat: Configure trusted domain (iit.xunzhengyixue.com) - Frontend: Deploy v1.2 with WeChat domain verification file - Frontend: Fix CRLF issue in docker-entrypoint.sh (CRLF -> LF) - Testing: 11/11 database CRUD tests passed - Testing: Access Token retrieval test passed - Docs: Create module status and development guide - Docs: Update MVP task list with Day 1 completion - Docs: Rename deployment doc to SAE real-time status record - Deployment: Update frontend internal IP to 172.17.173.80 Technical Details: - Prisma: Multi-schema support (iit_schema) - pg-boss: Job queue integration prepared - Taro 4.x: Framework selected for WeChat Mini Program - Shadow State: Architecture foundation laid - Docker: Fix entrypoint script line endings for Linux container Status: Day 1/14 complete, ready for Day 2 REDCap integration
18 KiB
18 KiB
IIT Manager Agent MVP 开发任务清单
版本: V1.1(基于架构评审修正版)
时间规划: 2周(10个工作日)
目标: 打通 REDCap → Node.js → 企微 的完整闭环
参考文档:02-技术设计/IIT Manager Agent 完整技术开发方案 (V1.1).md
📅 Week 1:基础连接层(Day 1-5)
Day 1:环境初始化(8小时)✅ 已完成(2025-12-31 ~ 2026-01-01)
数据库初始化(4小时)✅
- 创建
iit_schema数据库Schema - 编写 Prisma Schema
- IitProject 表(含V1.1新增字段:cachedRules, lastSyncAt)
- IitPendingAction 表(影子状态)
- IitTaskRun 表(任务管理)
- IitUserMapping 表(含V1.1新增字段:miniProgramOpenId, sessionKey)
- IitAuditLog 表(审计日志)
- 同步数据库:
npx prisma db push - 生成 Prisma Client:
npx prisma generate - 验证:编写测试CRUD操作(
test-iit-database.ts)
验收标准:
- ✅ 5个表全部创建成功
- ✅ Prisma Client可正常导入
- ✅ 测试脚本能执行CRUD(11/11测试通过)
完成情况:
- ✅ Schema定义完整(223行类型定义)
- ✅ 数据库表创建成功
- ✅ CRUD操作验证通过
企业微信初始化(2小时)✅
- 注册企业微信开发者账号
- 创建自建应用:
IIT Manager Agent - 获取并保存凭证:
- CorpID:
ww01cb7b72ea2db83c - AgentID:
1000002 - Secret:
F3XqlAqKdcOKHi9pLGv5a2dSUowWbevdcDRrBk2pXLM
- CorpID:
- 配置环境变量到后端 SAE
- 测试:获取Access Token成功
验收标准:
- ✅ 企微账号注册成功
- ✅ 能成功获取Access Token
- ✅ 网页授权及JS-SDK授权已获取
- ✅ 可信域名配置成功:iit.xunzhengyixue.com
完成情况:
- ✅ 企业微信应用创建成功
- ✅ Access Token获取测试通过(
test-wechat-push.ts) - ✅ 前端域名验证文件部署成功(v1.2)
- ✅ 可信域名授权完成
项目初始化(2小时)✅
- 创建模块目录结构
backend/src/modules/iit-manager/ ├── controllers/ ├── services/ ├── agents/ ├── adapters/ ├── routes/ └── types/ - 配置路由前缀:
/api/v1/iit - 配置健康检查端点
- 创建基础类型定义(223行)
验收标准:
- ✅ 目录结构完整
- ✅ 路由骨架已创建
- ✅ 类型定义完整
完成情况:
- ✅ 模块目录结构创建完成
- ✅
types/index.ts完整定义(223行) - ✅ 路由骨架创建(
routes/index.ts) - ✅ 主模块入口创建(
index.ts)
📊 Day 1 完成总结
实际完成时间:2025-12-31 ~ 2026-01-01
任务完成度:11/11(100%)
关键成果:
- ✅ 数据库Schema创建(iit_schema,5个表)
- ✅ Prisma Schema编写(223行类型定义)
- ✅ 模块目录结构创建
- ✅ 企业微信应用注册和配置
- ✅ 企业微信Access Token获取成功
- ✅ 企业微信可信域名配置成功(iit.xunzhengyixue.com)
- ✅ 前端域名验证文件部署(v1.2)
重要里程碑:
- 🎉 IIT Manager Agent模块正式启动
- 🎉 企业微信集成基础完成
- 🎉 网页授权及JS-SDK授权已获取
Day 2:REDCap拉取能力(🔥 V1.1核心)(8小时)⏳ 待开始
REDCap API Adapter(4小时)
- 创建
RedcapAdapter.ts - 实现
exportRecords()方法- 支持
dateRangeBegin时间过滤 - 支持
fields字段过滤 - 支持
records记录过滤
- 支持
- 实现
importRecords()方法(回写数据) - 实现
exportMetadata()方法(获取字段定义) - 配置超时和重试机制
- 编写单元测试
验收标准:
- ✅ 能成功拉取REDCap数据(测试项目)
- ✅ 时间过滤功能正常
- ✅ 单元测试全部通过
SyncManager(混合同步模式)(4小时)
- 创建
SyncManager.ts - 实现
initializeSync()方法- Webhook连通性测试
- 自动选择同步模式
- 实现
schedulePolling()方法- 使用 pg-boss 的 schedule 功能
- 配置轮询间隔(5分钟或30分钟)
- 实现
handlePoll()方法- 获取上次同步时间(缓存 + 数据库)
- 拉取增量数据
- 推送到质控队列
- 更新同步时间
- 实现幂等性保护(
isDuplicate()) - 注册 Worker:
iit:redcap:poll
验收标准:
- ✅ 轮询任务能正确调度(pg-boss)
- ✅ 能拉取增量数据(按时间过滤)
- ✅ 幂等性保护生效(不重复处理)
- ✅ 日志完整记录
Day 3:历史数据扫描(🔥 V1.1功能补充)(8小时)
BulkScanService(全量扫描)(6小时)
- 创建
BulkScanService.ts - 实现
scanAllRecords()方法- 轻量级拉取所有 record_id
- 智能阈值判断(<50直接处理,≥50队列)
- 实现
scanViaQueue()方法- 创建 IitTaskRun 记录
- 任务拆分(每批50条)
- 推送批次任务
- 实现
processBatch()Worker- 加载断点(CheckpointService)
- 逐个拉取完整数据
- 调用质控Agent
- 每10条保存断点
- 更新任务统计
- 实现
scanDirectly()方法(小批量) - 注册 Worker:
iit:bulk-scan:batch
验收标准:
- ✅ 能扫描100条历史数据
- ✅ 断点续传功能正常(模拟中断)
- ✅ 任务进度可查询
- ✅ 大批量任务正确拆分
API端点(2小时)
- 创建
POST /api/v1/iit/projects/:id/scan-all - 创建
GET /api/v1/iit/tasks/:taskRunId/progress - 实现并发扫描检查(防止重复)
- 编写API文档(Swagger)
验收标准:
- ✅ API端点可正常调用
- ✅ 进度查询返回正确数据
- ✅ 并发保护生效
Day 4:Webhook增强(作为补充)(8小时)
REDCap External Module(4小时)
- 创建EM目录结构
iit_manager_connector_v1.0.0/ ├── config.json ├── IITManagerConnector.php ├── js/ │ └── ai_assistant.js └── README.md - 编写
config.json(EM配置) - 实现
IITManagerConnector.php- 实现
redcap_save_recordHook - 实现 Webhook 推送
- HMAC-SHA256 签名
- 错误日志记录
- 实现
- 本地测试(Docker REDCap)
验收标准:
- ✅ EM可成功安装到REDCap
- ✅ 保存记录时触发Hook
- ✅ Webhook签名正确
Node.js Webhook接收器(4小时)
- 创建
webhookController.ts - 实现
handleRedcapWebhook()方法- 验证签名(HMAC-SHA256)
- 防重放攻击(5分钟有效期)
- 立即返回200(不阻塞REDCap)
- 异步推送质控任务
- 实现
verifyWebhookSignature()工具函数 - 配置路由:
POST /api/v1/iit/webhooks/redcap - 编写单元测试(模拟Webhook)
验收标准:
- ✅ Webhook签名验证正确
- ✅ 响应时间 < 100ms
- ✅ 异步任务正确入队
- ✅ 单元测试全部通过
Day 5:企微集成与测试(8小时)
企微适配器(4小时)
- 创建
WeChatAdapter.ts - 实现
getAccessToken()方法- 调用企微API获取token
- 缓存到 Postgres(7000秒)
- 实现
sendMessage()方法(卡片消息) - 实现
sendQualityAlert()方法(质控预警) - 错误处理和重试机制
- 编写单元测试
验收标准:
- ✅ Access Token可正确获取和缓存
- ✅ 能发送卡片消息到企微
- ✅ 质控预警格式正确
端到端测试(4小时)
- 场景1:Webhook模式测试
- REDCap保存记录 → Node.js收到Webhook
- 延迟 < 2秒
- 场景2:轮询模式测试
- 手动修改REDCap数据 → 轮询拉取到
- 延迟 < 10分钟
- 场景3:全量扫描测试
- 触发扫描 → 处理历史数据
- 断点续传正常
- 场景4:企微通知测试
- 质控发现问题 → 企微收到卡片
- 延迟 < 5秒
- 编写测试报告
验收标准:
- ✅ 4个场景全部通过
- ✅ 测试报告完成
- ✅ Week 1 里程碑达成
📅 Week 2:AI智能质控(Day 6-10)
Day 6-7:Protocol服务与Dify集成(16小时)
ProtocolService(8小时)
- 创建
ProtocolService.ts - 实现
initializeProtocolKnowledgeBase()方法- 上传Protocol PDF到OSS
- 调用Dify创建Dataset
- 上传文档到Dify
- 🔥 预提取关键规则(V1.1性能优化)
- 缓存规则到
cachedRules字段
- 实现
extractKeyRules()方法(私有)- 调用Dify提取入排标准
- 提取关键字段规则
- 解析JSON结构
- 实现
checkProtocolCompliance()方法- 优先使用缓存规则(快速路径)
- 复杂规则调用Dify RAG(慢路径)
- 解析AI响应
- 实现
parseComplianceResult()方法 - 错误处理和降级策略
验收标准:
- ✅ Protocol可成功上传到Dify
- ✅ 关键规则正确提取和缓存
- ✅ 简单规则检查 < 100ms
- ✅ 复杂规则检查 < 2秒
- ✅ Dify RAG准确率 > 80%
API端点(2小时)
- 创建
POST /api/v1/iit/projects(创建项目) - 创建
POST /api/v1/iit/projects/:id/protocol(上传Protocol) - 创建
PUT /api/v1/iit/projects/:id/field-mappings(配置映射) - 编写API文档
验收标准:
- ✅ API端点可正常调用
- ✅ 字段映射配置正确存储
Dify集成测试(6小时)
- 准备测试Protocol(标准IIT方案)
- 测试入排标准检索
- 年龄范围(18-60岁)
- 性别要求
- 必填字段
- 测试复杂规则检索
- 用药禁忌
- 合并症排除
- 调优Dify参数(temperature, top_k等)
- 记录测试结果和准确率
验收标准:
- ✅ 简单规则准确率 > 95%
- ✅ 复杂规则准确率 > 80%
- ✅ 假阳性率 < 15%
Day 8-9:数据质控Agent(16小时)
DataQualityAgent(10小时)
- 创建
DataQualityAgent.ts - 实现
checkRecord()方法- 获取项目配置(字段映射、Dify DatasetId)
- 提取关键字段值
- 逐个字段检查合规性
- 调用ProtocolService检查
- 收集所有问题
- 创建影子建议(PROPOSED状态)
- 发送企微通知(严重违背)
- 实现
createPendingActions()方法(私有)- 批量创建影子记录
- 包含推理过程和证据链
- 实现
sendWeChatNotification()方法(私有)- 调用WeChatAdapter
- 格式化质控预警
- 注册 Worker:
iit:quality-check - 错误处理和重试
验收标准:
- ✅ 能检测年龄违背(如65岁)
- ✅ 能检测性别不符
- ✅ 能检测必填字段缺失
- ✅ 影子记录正确创建
- ✅ 企微通知正确发送
- ✅ Worker可靠处理任务
影子状态管理(6小时)
- 创建
PendingActionService.ts - 实现
getPendingActions()方法- 分页查询
- 按状态过滤
- 按项目过滤
- 实现
getPendingActionDetail()方法- 返回详细信息
- 包含证据链
- 实现
approveAction()方法- 更新状态:PROPOSED → APPROVED
- 调用REDCap API回写数据
- 更新状态:APPROVED → EXECUTED
- 记录审计日志
- 实现
rejectAction()方法- 更新状态:PROPOSED → REJECTED
- 记录拒绝原因
- 记录审计日志
- API端点
GET /api/v1/iit/pending-actionsGET /api/v1/iit/pending-actions/:idPOST /api/v1/iit/pending-actions/:id/approvePOST /api/v1/iit/pending-actions/:id/reject
验收标准:
- ✅ 影子建议列表可查询
- ✅ 确认后数据正确回写REDCap
- ✅ 状态流转正确(PROPOSED → APPROVED → EXECUTED)
- ✅ 审计日志完整
Day 10-12:PC Workbench前端(24小时)
前端骨架(8小时)
- 创建前端路由:
/iit/workbench - 创建主布局组件
- 顶部导航
- 侧边栏(项目列表)
- 内容区
- 创建任务列表页
- 表格组件(Ant Design Table)
- 状态筛选(PROPOSED/APPROVED/REJECTED)
- 分页功能
- 刷新按钮
- 创建项目选择器
- 下拉选择
- 快速切换
验收标准:
- ✅ 路由可正常访问
- ✅ 任务列表可展示
- ✅ 项目切换功能正常
详情对比页(10小时)
- 创建详情页面组件
- 左侧:当前数据展示
- 字段名 + 当前值
- 高亮违背字段(红色)
- 右侧:AI建议展示
- AI建议值
- 推理过程
- 证据链(Protocol页码)
- 置信度(进度条)
- 底部:操作按钮
- [拒绝] 按钮 + 拒绝原因输入
- [确认] 按钮 + 二次确认
- 证据链高亮
- 点击跳转到Protocol PDF
- 高亮相关文字
- 实时状态更新
- WebSocket 或 轮询
验收标准:
- ✅ 详情页面布局合理
- ✅ 当前数据与AI建议对比清晰
- ✅ 证据链可点击查看
- ✅ 操作按钮功能正常
交互优化(6小时)
- 加载状态(Skeleton)
- 错误提示(Message/Notification)
- 成功提示(绿色通知)
- 二次确认(Modal)
- 批量操作(多选)
- 快捷键支持(回车确认、ESC关闭)
- 响应式布局(适配不同屏幕)
- 性能优化
- 虚拟滚动(大列表)
- 防抖搜索
验收标准:
- ✅ 加载状态友好
- ✅ 错误提示清晰
- ✅ 操作响应流畅
- ✅ 快捷键可用
Day 13:影子状态闭环(8小时)
完整流程测试(6小时)
- 场景1:年龄违背检测
- REDCap录入年龄65岁
- AI检测到违背(18-60岁)
- 影子建议创建
- 企微通知发送
- Workbench显示建议
- CRC确认
- 数据回写REDCap(标记为排除)
- 审计日志记录
- 场景2:性别不符检测
- 场景3:必填字段缺失检测
- 场景4:复杂规则检测(用药禁忌)
- 场景5:拒绝建议流程
- 性能测试
- 100条记录批量质控
- 平均处理时间 < 10秒/条
- 压力测试
- 并发10个质控任务
- 系统稳定运行
验收标准:
- ✅ 5个场景全部通过
- ✅ 完整闭环(录入→发现→确认→回写)
- ✅ 审计日志完整
- ✅ 性能指标达标
错误处理测试(2小时)
- REDCap连接失败
- Dify API超时
- 企微推送失败
- 数据库连接中断
- Webhook签名错误
- 轮询任务失败
- 断点续传验证
验收标准:
- ✅ 所有错误场景有友好提示
- ✅ 系统能自动重试
- ✅ 不影响其他任务执行
Day 14:Demo录制与交付(8小时)
Demo录制(3小时)
- 准备Demo脚本(5分钟)
场景:骨科IIT研究,年龄18-60岁 第1分钟:背景介绍 第2分钟:问题录入(年龄65岁) 第3分钟:AI发现(企微卡片) 第4分钟:人类复核(Workbench) 第5分钟:价值总结 - 录制视频
- 屏幕录制
- 语音讲解
- 关键节点字幕
- 视频剪辑和优化
验收标准:
- ✅ Demo视频5分钟
- ✅ 流程清晰完整
- ✅ 价值展示到位
文档整理(3小时)
- 更新部署文档
- 编写使用手册
- 管理员手册(项目配置)
- CRC手册(Workbench使用)
- PI手册(企微通知查看)
- 编写API文档(完善Swagger)
- 编写故障排查文档
验收标准:
- ✅ 文档完整清晰
- ✅ 新人可根据文档上手
技术债务记录(2小时)
- 记录已知问题
- Dify准确率待提升
- 前端性能可优化
- 小程序待开发
- 记录改进建议
- OCR智能采集(Phase 2)
- 任务驱动Agent(Phase 2)
- 智能汇报Agent(Phase 3)
- 创建技术债务清单
- 按优先级排序
- 估算工作量
验收标准:
- ✅ 技术债务清单完整
- ✅ 优先级合理
- ✅ MVP可交付
📊 MVP验收标准(最终)
功能完整性
- ✅ REDCap数据监听(Webhook + 轮询)
- ✅ 历史数据全量扫描
- ✅ AI质控检测(Dify RAG)
- ✅ 影子状态管理
- ✅ 企微卡片通知
- ✅ PC Workbench复核
- ✅ 数据回写REDCap
- ✅ 审计日志记录
技术指标
| 指标 | 目标值 | 验收 |
|---|---|---|
| Webhook响应时间 | < 100ms | [ ] |
| AI质控完成时间 | < 30秒 | [ ] |
| 企微推送延迟 | < 5秒 | [ ] |
| AI准确率 | > 80% | [ ] |
| 假阳性率 | < 15% | [ ] |
| 系统可用性 | > 99% | [ ] |
文档完整性
- ✅ 技术方案 V1.1
- ✅ API文档(Swagger)
- ✅ 部署文档
- ✅ 使用手册(3份)
- ✅ Demo视频(5分钟)
- ✅ 技术债务清单
📝 日常开发习惯
每日站会(15分钟)
- 昨天完成了什么?
- 今天计划做什么?
- 遇到什么阻碍?
每日提交
- 代码提交(至少1次)
- 更新TODO清单
- 记录开发笔记
每日复盘(10分钟)
- 今日完成度?
- 明日优先级?
- 需要调整计划?
🎯 关键里程碑
| 里程碑 | 时间 | 目标 | 状态 |
|---|---|---|---|
| 🏁 Week 1 完成 | Day 5结束 | 基础连接层打通 | [ ] |
| 🏁 Week 2 完成 | Day 14结束 | MVP完整交付 | [ ] |
| 🏁 Demo录制 | Day 14 | 5分钟演示视频 | [ ] |
创建日期:2025-12-31
维护者:开发团队
更新频率:每日
参考文档:02-技术设计/IIT Manager Agent 完整技术开发方案 (V1.1).md