feat(iit): Initialize IIT Manager Agent MVP - Day 1 complete
- Add iit_schema with 5 tables - Create module structure and types (223 lines) - WeChat integration verified (Access Token success) - Update system docs to v2.4 - Add REDCap source folders to .gitignore - Day 1/14 complete (11/11 tasks)
This commit is contained in:
614
docs/03-业务模块/IIT Manager Agent/04-开发计划/MVP开发任务清单.md
Normal file
614
docs/03-业务模块/IIT Manager Agent/04-开发计划/MVP开发任务清单.md
Normal file
@@ -0,0 +1,614 @@
|
||||
# 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小时)
|
||||
|
||||
#### 数据库初始化(4小时)
|
||||
|
||||
- [ ] 创建 `iit_schema` 数据库Schema
|
||||
- [ ] 编写 Prisma Schema
|
||||
- [ ] IitProject 表(含V1.1新增字段:cachedRules, lastSyncAt)
|
||||
- [ ] IitPendingAction 表(影子状态)
|
||||
- [ ] IitTaskRun 表(任务管理)
|
||||
- [ ] IitUserMapping 表(含V1.1新增字段:miniProgramOpenId, sessionKey)
|
||||
- [ ] IitAuditLog 表(审计日志)
|
||||
- [ ] 运行迁移:`npx prisma migrate dev --name init_iit_schema`
|
||||
- [ ] 生成 Prisma Client:`npx prisma generate`
|
||||
- [ ] 验证:编写测试CRUD操作
|
||||
|
||||
**验收标准**:
|
||||
- ✅ 5个表全部创建成功
|
||||
- ✅ Prisma Client可正常导入
|
||||
- ✅ 测试脚本能执行CRUD
|
||||
|
||||
#### 企业微信初始化(2小时)
|
||||
|
||||
- [ ] 注册企业微信开发者账号
|
||||
- [ ] 创建自建应用:`IIT Manager Agent(测试)`
|
||||
- [ ] 获取并保存凭证:
|
||||
- [ ] CorpID
|
||||
- [ ] AgentID
|
||||
- [ ] Secret
|
||||
- [ ] 配置环境变量到 `.env`
|
||||
- [ ] 测试:用 Postman 发送一条卡片消息
|
||||
|
||||
**验收标准**:
|
||||
- ✅ 企微账号注册成功
|
||||
- ✅ 能收到Postman发送的测试卡片
|
||||
|
||||
#### 项目初始化(2小时)
|
||||
|
||||
- [ ] 创建模块目录结构
|
||||
```
|
||||
backend/src/modules/iit-manager/
|
||||
├── controllers/
|
||||
├── services/
|
||||
├── agents/
|
||||
├── adapters/
|
||||
├── routes/
|
||||
└── types/
|
||||
```
|
||||
- [ ] 配置路由前缀:`/api/v1/iit`
|
||||
- [ ] 配置健康检查端点
|
||||
- [ ] 创建基础类型定义
|
||||
|
||||
**验收标准**:
|
||||
- ✅ 目录结构完整
|
||||
- ✅ 健康检查端点可访问
|
||||
|
||||
---
|
||||
|
||||
### 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_record` Hook
|
||||
- [ ] 实现 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-actions`
|
||||
- [ ] `GET /api/v1/iit/pending-actions/:id`
|
||||
- [ ] `POST /api/v1/iit/pending-actions/:id/approve`
|
||||
- [ ] `POST /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`
|
||||
|
||||
208
docs/03-业务模块/IIT Manager Agent/04-开发计划/企业微信注册指南.md
Normal file
208
docs/03-业务模块/IIT Manager Agent/04-开发计划/企业微信注册指南.md
Normal file
@@ -0,0 +1,208 @@
|
||||
# 企业微信注册与配置指南
|
||||
|
||||
> **目标**:获取企业微信API凭证,用于IIT Manager Agent发送质控预警卡片
|
||||
> **预计时间**:20分钟
|
||||
|
||||
---
|
||||
|
||||
## 📋 步骤1:注册企业微信账号
|
||||
|
||||
### 1.1 访问企业微信官网
|
||||
|
||||
访问:https://work.weixin.qq.com/
|
||||
|
||||
### 1.2 注册企业
|
||||
|
||||
1. 点击"**立即注册**"
|
||||
2. 选择"**企业**"类型
|
||||
3. 填写企业信息:
|
||||
- 企业名称:`测试医院`(或您的实际机构名称)
|
||||
- 行业类型:`医疗健康`
|
||||
- 企业人数:`100人以下`
|
||||
- 管理员姓名:您的姓名
|
||||
- 管理员手机:您的手机号(接收验证码)
|
||||
4. 完成验证,注册成功
|
||||
|
||||
---
|
||||
|
||||
## 📋 步骤2:创建自建应用
|
||||
|
||||
### 2.1 登录管理后台
|
||||
|
||||
1. 访问:https://work.weixin.qq.com/wework_admin/loginpage_wx
|
||||
2. 使用企业微信APP扫码登录(需先在手机上下载企业微信APP)
|
||||
|
||||
### 2.2 创建应用
|
||||
|
||||
1. 进入**【应用管理】** → **【自建】** → **【创建应用】**
|
||||
|
||||
2. 填写应用信息:
|
||||
- **应用名称**:`IIT Manager Agent(测试)`
|
||||
- **应用Logo**:上传一个图标(可暂时使用默认)
|
||||
- **应用介绍**:`IIT研究智能质控助手 - 数据质量实时监控`
|
||||
- **可见范围**:选择"**所有人**"(测试阶段)
|
||||
|
||||
3. 点击"**创建应用**"
|
||||
|
||||
### 2.3 获取API凭证(重要!)
|
||||
|
||||
创建成功后,在应用详情页可以看到:
|
||||
|
||||
```
|
||||
企业ID(CorpID): ww1234567890abcdef
|
||||
AgentID: 1000002
|
||||
Secret: 点击"查看"按钮查看
|
||||
```
|
||||
|
||||
**⚠️ 重要提示**:
|
||||
- **Secret** 只显示一次,请立即复制保存!
|
||||
- 如果忘记Secret,需要重置(会导致旧Secret失效)
|
||||
|
||||
---
|
||||
|
||||
## 📋 步骤3:配置API权限
|
||||
|
||||
### 3.1 设置网页授权及JS-SDK
|
||||
|
||||
1. 在应用详情页,找到"**网页授权及JS-SDK**"
|
||||
2. 设置**可信域名**:
|
||||
- 开发环境:`localhost`(如果支持)
|
||||
- 生产环境:您的实际域名(如 `iit.example.com`)
|
||||
|
||||
### 3.2 设置接收消息
|
||||
|
||||
1. 找到"**接收消息**"配置
|
||||
2. 暂时不用配置(MVP阶段只需要推送消息,不需要接收)
|
||||
|
||||
### 3.3 设置权限范围
|
||||
|
||||
确保应用有以下权限:
|
||||
- ✅ **发送消息到微信** - 核心功能
|
||||
- ✅ **成员信息读取** - 用于获取用户OpenID
|
||||
- ✅ **通讯录管理** - 用于用户映射
|
||||
|
||||
---
|
||||
|
||||
## 📋 步骤4:配置到项目中
|
||||
|
||||
### 4.1 复制凭证
|
||||
|
||||
将获取到的凭证记录下来:
|
||||
|
||||
```
|
||||
CorpID: ww1234567890abcdef
|
||||
AgentID: 1000002
|
||||
Secret: abc123xyz789_your_secret_here
|
||||
```
|
||||
|
||||
### 4.2 添加到 .env 文件
|
||||
|
||||
编辑 `AIclinicalresearch/backend/.env`,添加:
|
||||
|
||||
```bash
|
||||
# ==================== 企业微信配置 ====================
|
||||
WECHAT_CORP_ID=ww1234567890abcdef
|
||||
WECHAT_CORP_SECRET=abc123xyz789_your_secret_here
|
||||
WECHAT_AGENT_ID=1000002
|
||||
```
|
||||
|
||||
**⚠️ 注意**:
|
||||
- 不要提交 `.env` 文件到Git(已在 `.gitignore` 中)
|
||||
- 生产环境使用独立的企业微信应用
|
||||
|
||||
---
|
||||
|
||||
## 📋 步骤5:测试企微API
|
||||
|
||||
### 5.1 重启后端服务
|
||||
|
||||
保存 `.env` 后,重启后端:
|
||||
|
||||
```bash
|
||||
# 停止当前服务(Ctrl+C)
|
||||
# 重新启动
|
||||
cd D:\MyCursor\AIclinicalresearch\backend
|
||||
npm run dev
|
||||
```
|
||||
|
||||
### 5.2 手动测试(使用Postman或curl)
|
||||
|
||||
**测试端点**(后续Day 5会创建):
|
||||
|
||||
```bash
|
||||
POST http://localhost:3001/api/v1/iit/test/wechat-push
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"toUser": "YourUserID",
|
||||
"title": "测试通知",
|
||||
"description": "这是一条来自IIT Manager的测试消息",
|
||||
"url": "http://localhost:5173"
|
||||
}
|
||||
```
|
||||
|
||||
**预期结果**:
|
||||
- ✅ 返回200状态码
|
||||
- ✅ 企业微信APP收到卡片消息
|
||||
|
||||
---
|
||||
|
||||
## 📋 常见问题(FAQ)
|
||||
|
||||
### Q1:我没有企业,可以注册吗?
|
||||
|
||||
**A**:可以!选择"**个人**"或"**个体工商户**"类型注册,功能完全相同。
|
||||
|
||||
### Q2:Secret忘记了怎么办?
|
||||
|
||||
**A**:在应用详情页点击"**重置Secret**",但会导致旧Secret失效。
|
||||
|
||||
### Q3:测试环境需要实名认证吗?
|
||||
|
||||
**A**:不需要。未认证企业也可以使用自建应用的全部功能,只是人数有限制(100人)。
|
||||
|
||||
### Q4:如何找到用户的 UserID?
|
||||
|
||||
**A**:
|
||||
1. 方法1:登录管理后台 → 通讯录 → 点击成员 → 查看"账号"
|
||||
2. 方法2:调用企业微信API获取:`GET /cgi-bin/user/getuserinfo`
|
||||
|
||||
### Q5:消息发送失败,返回40014错误?
|
||||
|
||||
**A**:`invalid access_token`,可能原因:
|
||||
- Secret配置错误
|
||||
- Access Token过期(需重新获取)
|
||||
- CorpID或AgentID配置错误
|
||||
|
||||
---
|
||||
|
||||
## ✅ 验收标准
|
||||
|
||||
完成以下任务后,Day 1就完美收官了:
|
||||
|
||||
- [ ] 企业微信账号注册成功
|
||||
- [ ] 自建应用创建成功
|
||||
- [ ] 获取到CorpID、AgentID、Secret
|
||||
- [ ] 配置到 `.env` 文件
|
||||
- [ ] 后端服务能正常启动(无报错)
|
||||
|
||||
---
|
||||
|
||||
## 🎯 下一步
|
||||
|
||||
完成企业微信配置后,Day 2我们将开始:
|
||||
|
||||
1. **REDCap API Adapter开发**(核心功能)
|
||||
2. **SyncManager开发**(混合同步模式)
|
||||
3. 实现REDCap数据拉取和轮询
|
||||
|
||||
预计完成时间:8小时
|
||||
|
||||
---
|
||||
|
||||
**创建日期**:2025-12-31
|
||||
**维护者**:开发团队
|
||||
**参考文档**:
|
||||
- 企业微信官方文档:https://developer.work.weixin.qq.com/document/
|
||||
- 发送应用消息:https://developer.work.weixin.qq.com/document/path/90236
|
||||
|
||||
Reference in New Issue
Block a user