feat(iit): Implement real-time quality control system
Summary: - Add 4 new database tables: iit_field_metadata, iit_qc_logs, iit_record_summary, iit_qc_project_stats - Implement pg-boss debounce mechanism in WebhookController - Refactor QC Worker for dual output: QC logs + record summary - Enhance HardRuleEngine to support form-based rule filtering - Create QcService for QC data queries - Optimize ChatService with new intents: query_enrollment, query_qc_status - Add admin batch operations: one-click full QC + one-click full summary - Create IIT Admin management module: project config, QC rules, user mapping Status: Code complete, pending end-to-end testing Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -4,7 +4,9 @@
|
||||
> **更新日期:** 2026-02-05
|
||||
> **关联文档:** [IIT Manager Agent V2.6 综合开发计划](./IIT%20Manager%20Agent%20V2.6%20综合开发计划.md)
|
||||
>
|
||||
> **V2.9 更新**:
|
||||
> **V2.9.1 更新**:
|
||||
> - **新增 Phase 1.5**:隐私安全与自动化工具(P0 合规必需)
|
||||
> - Phase 1 新增 AutoMapperService 任务
|
||||
> - Phase 3 新增反馈循环任务
|
||||
> - Phase 4 新增 ProfilerService 和 Cron Skill 任务
|
||||
> - Phase 5 新增多意图处理任务
|
||||
@@ -14,15 +16,15 @@
|
||||
## 1. 开发阶段总览
|
||||
|
||||
```
|
||||
Phase 1 Phase 2 Phase 3 Phase 4 Phase 5 Phase 6
|
||||
┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
|
||||
│ 基础工具层 │ ──▶ │ SOP 引擎 │ ──▶ │ ReAct 引擎 │ ──▶ │ 调度系统 │ ──▶ │ 智能路由 │ ──▶ │ 视觉能力 │
|
||||
│ │ │ + 记忆L2 │ │ + 记忆L1 │ │ + 记忆L3 │ │ │ │ (延后) │
|
||||
└─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘
|
||||
▼ ▼ ▼ ▼ ▼ ▼
|
||||
ToolsService SopEngine ReActEngine SchedulerService IntentService VisionService
|
||||
FieldMapping HotMemory FlowMemory WeeklyReports MixedRouting (Postponed)
|
||||
HardRuleEngine SoftRuleEngine AgentTrace ReportService StreamingFB
|
||||
Phase 1 Phase 1.5 Phase 2 Phase 3 Phase 4 Phase 5 Phase 6
|
||||
┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
|
||||
│基础工具层│ ──▶│ 隐私安全 │ ──▶│ SOP 引擎 │ ──▶│ReAct 引擎│ ──▶│ 调度系统 │ ──▶│ 智能路由 │ ──▶│ 视觉能力 │
|
||||
│ │ │ P0必需 │ │ + 记忆L2 │ │ + 记忆L1 │ │ + 记忆L3 │ │ │ │ (延后) │
|
||||
└──────────┘ └──────────┘ └──────────┘ └──────────┘ └──────────┘ └──────────┘ └──────────┘
|
||||
▼ ▼ ▼ ▼ ▼ ▼ ▼
|
||||
ToolsService Anonymizer SopEngine ReActEngine Scheduler IntentService VisionService
|
||||
FieldMapping AutoMapper HotMemory FlowMemory WeeklyReports MixedRouting (Postponed)
|
||||
HardRule PII Audit SoftRule AgentTrace ReportService StreamingFB
|
||||
```
|
||||
|
||||
---
|
||||
@@ -46,17 +48,72 @@ Phase 1 Phase 2 Phase 3 Phase 4
|
||||
| P1-05 | 实现 `search_protocol` 工具 | 高 | 待开始 | P1-03 |
|
||||
| P1-06 | 实现 `HardRuleEngine` | 高 | 待开始 | - |
|
||||
| P1-07 | 集成字段映射到 ToolsService | 中 | 待开始 | P1-02, P1-03 |
|
||||
| P1-08 | 单元测试覆盖 | 中 | 待开始 | P1-01~P1-07 |
|
||||
| P1-08 | **[V2.9.1]** 实现 `AutoMapperService` | 中 | 待开始 | P1-02 |
|
||||
| P1-09 | **[V2.9.1]** 实现 REDCap Data Dictionary 解析器 | 中 | 待开始 | P1-08 |
|
||||
| P1-10 | **[V2.9.1]** 实现 LLM 语义映射 Job | 中 | 待开始 | P1-08 |
|
||||
| P1-11 | **[V2.9.1]** 实现管理后台映射确认 UI | 低 | 待开始 | P1-10 |
|
||||
| P1-12 | 单元测试覆盖 | 中 | 待开始 | P1-01~P1-11 |
|
||||
|
||||
### 2.3 验收标准
|
||||
|
||||
- [ ] 工具可通过名称调用
|
||||
- [ ] 字段映射正确生效(LLM 用 "年龄" → 实际调用 "dem_age")
|
||||
- [ ] 硬规则拦截生效
|
||||
- [ ] **[V2.9.1]** AutoMapper 可解析 REDCap Data Dictionary
|
||||
- [ ] **[V2.9.1]** LLM 可生成字段映射建议
|
||||
- [ ] 测试覆盖率 > 80%
|
||||
|
||||
---
|
||||
|
||||
## 2.5 Phase 1.5: 隐私安全与自动化工具(P0 合规必需)
|
||||
|
||||
> **⚠️ 重要**:此阶段必须在 Phase 2 调用 LLM 之前完成!
|
||||
> 临床数据包含患者隐私信息,未脱敏直接发送给 LLM 将违反数据保护法规。
|
||||
|
||||
### 2.5.1 目标
|
||||
|
||||
- 实现 PII 脱敏中间件
|
||||
- 建立脱敏审计日志
|
||||
- 确保合规性
|
||||
|
||||
### 2.5.2 任务清单
|
||||
|
||||
| 任务ID | 任务名称 | 优先级 | 状态 | 前置依赖 |
|
||||
|--------|----------|--------|------|----------|
|
||||
| P1.5-01 | 创建 `iit_pii_audit_log` 表 | **P0** | 待开始 | - |
|
||||
| P1.5-02 | 实现 PII 识别正则库 | **P0** | 待开始 | - |
|
||||
| P1.5-03 | 实现 `AnonymizerService.mask()` | **P0** | 待开始 | P1.5-01, P1.5-02 |
|
||||
| P1.5-04 | 实现 `AnonymizerService.unmask()` | **P0** | 待开始 | P1.5-03 |
|
||||
| P1.5-05 | 实现脱敏映射加密存储 | 高 | 待开始 | P1.5-03 |
|
||||
| P1.5-06 | 集成到 ChatService 调用链 | **P0** | 待开始 | P1.5-04 |
|
||||
| P1.5-07 | 单元测试:各类 PII 识别 | 高 | 待开始 | P1.5-02 |
|
||||
| P1.5-08 | 端到端测试:脱敏还原完整流程 | 高 | 待开始 | P1.5-01~P1.5-06 |
|
||||
|
||||
### 2.5.3 验收标准
|
||||
|
||||
- [ ] 身份证号正确识别并脱敏(18位)
|
||||
- [ ] 手机号正确识别并脱敏(11位)
|
||||
- [ ] 中文姓名正确识别并脱敏(2-4字)
|
||||
- [ ] 病历号正确识别并脱敏
|
||||
- [ ] LLM 收到的 Payload 不包含任何 PII
|
||||
- [ ] LLM 回复正确还原占位符
|
||||
- [ ] 审计日志正确记录(加密存储)
|
||||
|
||||
### 2.5.4 PII 脱敏流程
|
||||
|
||||
```
|
||||
用户输入: "张三(身份证420101199001011234)今天血压偏高"
|
||||
↓ AnonymizerService.mask()
|
||||
LLM 收到: "[PATIENT_1](身份证[ID_CARD_1])今天血压偏高"
|
||||
↓ 同时写入 iit_pii_audit_log(加密存储映射表)
|
||||
↓ LLM 处理
|
||||
LLM 返回: "[PATIENT_1] 的血压需要关注..."
|
||||
↓ AnonymizerService.unmask()
|
||||
用户看到: "张三 的血压需要关注..."
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 3. Phase 2: SOP 引擎 + 热记忆
|
||||
|
||||
### 3.1 目标
|
||||
@@ -260,6 +317,8 @@ gantt
|
||||
| **[V2.9]** 用户多意图混乱 | 任务遗漏 | ReAct Prompt 多意图拆分 | ✅ |
|
||||
| **[V2.9]** 回复不符用户偏好 | 体验差 | 反馈循环 + 用户画像 | ✅ |
|
||||
| **[V2.9]** 主动提醒打扰用户 | 用户投诉 | 最佳通知时间 + 个性化 | ✅ |
|
||||
| **[V2.9.1]** 患者隐私泄露给 LLM | **法律风险** | PII 脱敏中间件 + 审计日志 | ✅ |
|
||||
| **[V2.9.1]** 字段映射配置繁琐 | 效率低 | AutoMapper LLM 语义匹配 | ✅ |
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user