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
25 KiB
25 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实时集成(8小时)✅ 已完成(2026-01-02)
REDCap API Adapter(4小时)✅
- 创建
RedcapAdapter.ts(271行) - 实现
exportRecords()方法- 支持
dateRangeBegin时间过滤 - 支持
fields字段过滤 - 支持
records记录过滤
- 支持
- 实现
importRecords()方法(回写数据) - 实现
exportMetadata()方法(获取字段定义) - 配置超时和重试机制
- 编写集成测试脚本
验收标准:
- ✅ 能成功拉取REDCap数据(test0102项目,PID 16)
- ✅ 时间过滤功能正常
- ✅ 集成测试通过(test-redcap-api.ts)
完成情况:
- ✅ RedcapAdapter 实现完整(7个核心方法)
- ✅ 支持REDCap REST API v15.8.0
- ✅ API测试验证通过
WebhookController + SyncManager(4小时)✅
- 创建
WebhookController.ts(327行)- 实现 DET webhook 接收(<10ms响应)
- 幂等性检查(防重复处理)
- 队列任务推送(iit_quality_check)
- 审计日志记录
- 创建
SyncManager.ts(398行)- 实现定时轮询机制(pg-boss schedule)
- 增量数据拉取(按时间过滤)
- 全量数据同步(初始化或修复)
- Worker 注册(iit_redcap_poll)
- 配置 Fastify 路由
- POST
/api/v1/iit/webhooks/redcap - POST
/api/v1/iit/projects/:id/sync - POST
/api/v1/iit/projects/:id/full-sync
- POST
- 添加 form-urlencoded 解析器(支持REDCap DET格式)
验收标准:
- ✅ DET实时触发成功(0ms延迟)
- ✅ 轮询任务正常调度(pg-boss)
- ✅ 幂等性保护生效
- ✅ 审计日志完整
完成情况:
- ✅ WebhookController响应时间 <10ms
- ✅ 集成测试12/12通过
- ✅ 真实场景验证通过(REDCap → Node.js → 队列)
- ✅ Docker网络问题解决(host.docker.internal)
📊 Day 2 完成总结
实际完成时间:2026-01-02
任务完成度:100%
关键成果:
- ✅ RedcapAdapter 实现完整(271行,7个方法)
- ✅ WebhookController 实现完整(327行,<10ms响应)
- ✅ SyncManager 实现完整(398行,增量+全量)
- ✅ Worker注册(iit_quality_check + iit_redcap_poll)
- ✅ 路由配置(5个API端点)
- ✅ 集成测试脚本(3个,912行)
- ✅ 真实场景验证通过
技术亮点:
- 🔥 REDCap DET实时触发(0ms延迟)
- 🔥 Webhook + 轮询双重机制
- 🔥 form-urlencoded格式支持
- 🔥 Postgres-Only架构(pg-boss队列)
参考文档:
06-开发记录/Day2-REDCap实时集成开发完成记录.md
Day 3:企业微信集成(8小时)✅ 已完成(2026-01-02)
WechatService(企业微信推送)(2小时)✅
- 创建
WechatService.ts(314行) - 实现 Access Token 管理(缓存+自动刷新)
- 实现
sendTextMessage()方法 - 实现
sendMarkdownMessage()方法 - 审计日志记录
验收标准:
- ✅ Access Token 获取成功
- ✅ 消息推送功能正常
- ✅ Token缓存机制生效
完成情况:
- ✅ Token缓存7200秒,提前5分钟刷新
- ✅ 完整的错误处理和重试
- ✅ 详细的日志记录
WechatCallbackController(企业微信回调)(4小时)✅
- 创建
WechatCallbackController.ts(501行) - 实现 URL 验证(GET请求)
- 实现消息接收(POST请求)
- 实现异步回复模式(规避5秒超时)
- 实现消息解密(@wecom/crypto)
- 实现签名验证(@wecom/crypto)
- 实现关键词意图识别
- 实现业务逻辑(汇总、帮助、新患者)
验收标准:
- ✅ URL验证通过
- ✅ 消息解密成功
- ✅ 签名验证通过
- ✅ 异步处理正常
完成情况:
- ✅ 企业微信开发者调试工具验证通过
- ✅ 返回状态:request: 成功
- ✅ HTTP 200,解密23位字符正确
- ✅ 异步回复模式实现完整
质控Worker完善(1小时)✅
- 完善
iit_quality_checkWorker - 实现简单质控逻辑
- 实现企业微信通知推送
- 实现通知消息格式化
验收标准:
- ✅ Worker正常执行
- ✅ 企业微信推送成功
- ✅ 通知格式正确
完成情况:
- ✅ 质控逻辑实现(基础规则检查)
- ✅ 通知消息格式化完成
- ✅ 审计日志记录完整
配置与测试(1小时)✅
- 安装依赖(@wecom/crypto, xml2js)
- 配置环境变量(.env)
- 配置企业微信路由
- natapp内网穿透配置
- 企业微信URL验证测试
验收标准:
- ✅ 依赖安装成功
- ✅ 环境变量配置正确
- ✅ URL验证通过
- ✅ natapp隧道在线
完成情况:
- ✅ @wecom/crypto 和 xml2js 安装完成
- ✅ 环境变量配置验证通过
- ✅ natapp配置成功(http://iit.nat100.top)
- ✅ 企业微信调试工具验证通过
📊 Day 3 完成总结
实际完成时间:2026-01-03
任务完成度:100%
关键成果:
- ✅ WechatService 实现完整(314行)
- ✅ WechatCallbackController 实现完整(501行)
- ✅ 质控Worker企业微信推送功能
- ✅ 企业微信路由配置(GET + POST)
- ✅ natapp内网穿透配置成功
- ✅ 企业微信URL验证测试通过
- ✅ 端到端测试通过(REDCap → Node.js → 企业微信)
- ✅ Worker注册修复(
initIitManager()调用) - ✅ 数据库字段名修复(
action_type) - ✅ MVP闭环打通(<2秒延迟,100%成功率)
技术亮点:
- 🔥 异步回复模式(规避5秒超时)
- 🔥 @wecom/crypto正确用法(decrypt 2个参数)
- 🔥 签名验证(getSignature)
- 🔥 消息解密(XML + AES)
- 🔥 natapp内网穿透(https支持)
- 🔥 pg-boss Worker最佳范式(符合Postgres-Only指南)
- 🔥 审计日志非致命错误处理
技术难点解决:
- ✅ 环境变量名称不一致(WECHAT_CORP_SECRET)
- ✅ @wecom/crypto导入方式(createRequire)
- ✅ decrypt函数参数(2个参数,不是4个)
- ✅ Token字符识别(小写l vs 数字1)
- ✅ EncodingAESKey重新生成(43位正确格式)
- ✅ Worker未注册问题(
initIitManager()未调用) - ✅ 数据库字段名错误(
action→action_type) - ✅ 循环发送问题(pg-boss重试机制导致)
性能指标:
- ⚡ Webhook响应时间:5.8ms(目标<10ms)
- ⚡ Worker执行时间:~50ms(目标<100ms)
- ⚡ 端到端延迟:<2秒(目标<5秒)
- ⚡ 消息发送成功率:100%(测试5次)
参考文档:
06-开发记录/Day3-企业微信集成与端到端测试完成记录.md
✅ Day 3 已完成任务(端到端测试)
- 保存企业微信正式回调URL配置(已配置到企业微信后台)
- 配置
wechat_user_id(使用环境变量WECHAT_TEST_USER_ID=FengZhiBo) - 端到端测试(REDCap → 企微推送)✅ 测试通过
- Worker注册修复(
initIitManager()在src/index.ts中调用) - 数据库字段名修复(
action→action_type) - 循环发送问题修复(审计日志错误导致Worker失败重试)
- 企业微信推送测试(文本/卡片/Markdown)✅ 全部通过
- 测试对话功能(发送关键词)✅ Phase 1.5已完成(2026-01-03)
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分钟演示视频 | [ ] |
🎉 Phase 1.5 完成总结(2026-01-03 & 2026-01-04)
核心成果
- ✅ AI对话集成: DeepSeek-V3 + LLMFactory
- ✅ REDCap数据查询: 基于真实数据回答,解决LLM幻觉
- ✅ Dify知识库集成 (2026-01-04新增): 研究方案文档查询
- ✅ 混合检索: 同时支持结构化数据(REDCap)和非结构化文档(Dify)
- ✅ 上下文记忆: SessionMemory保存最近3轮对话
- ✅ 即时反馈: "正在查询"消息
- ✅ 意图识别: 关键词匹配(查记录/统计/项目信息/文档查询)
- ✅ 智能路由: 根据意图自动选择数据源(REDCap/Dify)
测试验证
- 项目: test0102
- REDCap PID: 16, 11条记录
- Dify Dataset ID:
b49595b2-bf71-4e47-9988-4aa2816d3c6f - 文档: 研究方案、CRF表格(2个文件)
- 测试场景1: 查询ID 7患者详细信息(REDCap)
- 测试场景2: 查询研究排除标准(Dify)
- 测试场景3: 查询CRF观察指标(Dify)
- 测试场景4: 统计入组人数(REDCap)
- 测试结果: ✅ 所有场景通过,数据准确,无编造
详细记录
创建日期:2025-12-31
最后更新:2026-01-04
维护者:开发团队
更新频率:每日
参考文档:02-技术设计/IIT Manager Agent 完整技术开发方案 (V1.1).md