feat(iit): V3.2 data consistency + project isolation + admin config redesign + Chinese labels

Summary:
- Refactor timeline API to read from qc_field_status (SSOT) instead of qc_logs
- Add field-issues paginated API with severity/dimension/recordId filters
- Add LEFT JOIN field_metadata + qc_event_status for Chinese display names
- Implement per-project ChatOrchestrator cache and SessionMemory isolation
- Redesign admin IIT config tabs (REDCap -> Fields -> KB -> Rules -> Members)
- Add AI-powered QC rule generation (D3 programmatic + D1/D5/D6 LLM-based)
- Add clickable warning/critical detail Modal in ReportsPage
- Auto-dispatch eQuery after batch QC via DailyQcOrchestrator
- Update module status documentation to v3.2

Backend changes:
- iitQcCockpitController: rewrite getTimeline from qc_field_status, add getFieldIssues
- iitQcCockpitRoutes: add field-issues route
- ChatOrchestrator: per-projectId cached instances
- SessionMemory: keyed by userId::projectId
- WechatCallbackController: resolve projectId from iitUserMapping
- iitRuleSuggestionService: dimension-based suggest + generateD3Rules
- iitBatchController: call DailyQcOrchestrator after batch QC

Frontend changes:
- AiStreamPage: adapt to new timeline structure with dimension tags
- ReportsPage: clickable stats cards with issue detail Modal
- IitProjectDetailPage: reorder tabs, add AI rule generation UI
- iitProjectApi: add TimelineIssue, FieldIssueItem types and APIs

Status: TypeScript compilation verified, no new lint errors
Made-with: Cursor
This commit is contained in:
2026-03-02 14:29:59 +08:00
parent 72928d3116
commit 71d32d11ee
38 changed files with 1597 additions and 546 deletions

View File

@@ -1,10 +1,15 @@
# IIT Manager Agent模块 - 当前状态与开发指南
> **文档版本:** v3.1
> **文档版本:** v3.2
> **创建日期:** 2026-01-01
> **维护者:** IIT Manager开发团队
> **最后更新:** 2026-03-01 **GCP 业务报表 + AI 工作流水增强 + 多项 Bug 修复完成**
> **最后更新:** 2026-03-02 **数据一致性修复 + 项目隔离 + 管理端配置流重设计 + 中文显示名**
> **重大里程碑:**
> - **2026-03-02QC 数据一致性修复!** AI 时间线 + 警告详情 统一从 qc_field_statusSSOT读取与热力图数据一致
> - **2026-03-02字段/事件中文显示名!** LEFT JOIN field_metadata + qc_event_status消除 REDCap 技术标识符
> - **2026-03-02警告详情可查看** 新增 field-issues 分页 API + ReportsPage 严重问题/警告数字可点击弹出详情 Modal
> - **2026-03-02AI 对话项目隔离!** ChatOrchestrator 按 projectId 缓存实例 + SessionMemory 按 userId::projectId 隔离
> - **2026-03-02管理端配置流重设计** 5 个配置 Tab 按依赖关系重排 + AI 自动构建质控规则D1/D3/D5/D6 四维度)
> - **2026-03-01GCP 业务端报表全量完成!** 4 张 GCP 标准报表D1 筛选入选/D2 完整性/D3D4 质疑跟踪/D6 方案偏离)后端 API + 前端组件 + ReportsPage 五 Tab 重构
> - **2026-03-01AI 工作流水时间线增强!** 实际规则数显示33 条而非 1 条)+ 中文事件名 + 可展开问题详情表格 + severity 映射修复
> - **2026-03-01业务端一键全量质控** DashboardPage 新增按钮 + 自动刷新报告缓存 + 事件级通过率修复
@@ -61,7 +66,16 @@ CRA Agent 是一个**替代 CRA 岗位的自主 AI Agent**,而非辅助 CRA
- AI能力DeepSeek/Qwen + 自研 RAGpgvector+ LLM Tool Use
### 当前状态
- **开发阶段****V3.1 质控引擎 + GCP 业务报表 + AI 时间线增强 + Bug 修复 → 待部署验证**
- **开发阶段****V3.2 数据一致性 + 项目隔离 + 管理端重设计 + 中文显示名 → 待部署验证**
- **V3.2 数据一致性 + 项目隔离已完成**2026-03-02
- AI 时间线改为从 qc_field_statusSSOT聚合与风险热力图数据一致
- 新增 field-issues 分页查询 API支持按维度/严重程度/受试者筛选)
- ReportsPage 严重问题/警告数字可点击弹出详情 Modal分页+按维度筛选)
- 字段名/事件名中文显示LEFT JOIN field_metadata + qc_event_status 替代 REDCap 技术标识符)
- AI 对话项目隔离ChatOrchestrator 按 projectId 缓存 + SessionMemory 按 userId::projectId 隔离 + WeChat 回调自动解析 projectId
- 管理端 IIT 配置流重设计5 个 Tab 按依赖关系重排REDCap→变量清单→知识库→质控规则→成员
- AI 自动构建质控规则D3 程序化 + D1/D5/D6 LLM 生成 + 预览批量导入 + 规则追加而非覆盖)
- 批量 QC 后自动调用 DailyQcOrchestrator 派发 eQuery
- **GCP 业务报表 + Bug 修复已完成**2026-03-01
- 4 张 GCP 标准报表后端 APIiitQcCockpitServicegetEligibilityReport/getCompletenessReport/getEqueryReport/getDeviationReport
- 4 个前端报表组件EligibilityTable/CompletenessTable/EqueryLogTable/DeviationLogTable
@@ -107,6 +121,37 @@ CRA Agent 是一个**替代 CRA 岗位的自主 AI Agent**,而非辅助 CRA
-**端到端测试通过**REDCap → Node.js → 企业微信)
-~~AI对话集成完成ChatService + SessionMemory~~ → 已替换为 ChatOrchestrator
#### ✅ 已完成功能V3.2 数据一致性 + 项目隔离 + 管理端重设计 - 2026-03-02
-**QC 数据一致性修复qc_field_status 为 SSOT**
- AI 时间线 getTimeline 改为从 qc_field_status 按受试者分组聚合(替代 qc_logs
- 与风险热力图、质控报告数据来源统一,消除数据不一致问题
- 时间线展示有问题的受试者FAIL/WARNING+ 全部通过的受试者PASS
-**字段/事件中文显示名**
- getTimeline + getFieldIssues SQL 增加 LEFT JOIN field_metadata字段中文标签+ qc_event_status事件中文标签
- 前端优先显示 fieldLabel / eventLabel回退到原始技术标识符
- 消除 `65a64dbbd9_arm_1``check_date` 等不可读标识符
-**警告详情可查看**
- 新增 GET /:projectId/qc-cockpit/field-issues 分页查询 API支持按 severity/dimension/recordId 筛选)
- 返回聚合统计bySeverity + byDimension
- ReportsPage "严重问题"/"警告"卡片可点击,弹出详情 Modal分页+维度下拉筛选)
-**AI 对话项目隔离**
- ChatOrchestrator 从单例改为按 projectId 缓存实例orchestratorCache Map
- SessionMemory 会话键改为 `userId::projectId`,不同项目聊天历史互不干扰
- 后端 /api/v1/iit/chat 路由要求传 projectId
- WechatCallbackController 通过 iitUserMapping 自动解析用户 projectId
-**管理端 IIT 配置流重设计**
- 5 个配置 Tab 按依赖关系重排:① REDCap 配置 → ② 变量清单 → ③ 知识库 → ④ 质控规则 → ⑤ 项目成员
- "同步元数据" 按钮从基础配置移至变量清单 Tab
- 各 Tab 增加前置条件检查和提示(如"请先配置 REDCap 并同步变量"
-**AI 自动构建质控规则**
- D3 准确性:基于 field_metadata 程序化生成范围/枚举/必填检查(无需 LLM
- D1 入选排除 / D5 安全性 / D6 方案偏离LLM 基于变量清单+知识库智能生成
- 预览 Modal 支持多选批量导入 + 规则追加(不覆盖已有规则)
- 规则按 D1-D7 维度分组展示Collapse 折叠面板)
-**批量 QC 后自动派发 eQuery**
- iitBatchController 执行 QcExecutor.executeBatch 后调用 DailyQcOrchestrator.orchestrate
- 返回 equeriesCreated 计数
#### ✅ 已完成功能GCP 业务报表 + AI 时间线 + Bug 修复 - 2026-03-01
-**GCP 标准报表(阶段 A 4 张)**
- D1 筛选入选表getEligibilityReportrecord_summary 全量 + qc_field_status D1 叠加)
@@ -954,8 +999,8 @@ npx ts-node src/modules/iit-manager/test-wechat-push.ts
---
> **提示**本文档反映IIT Manager Agent模块的最新真实状态每个里程碑完成后必须更新
> **最后更新**2026-03-01
> **当前进度**V3.1 QC Engine 完成 | GCP 业务报表 4 张全量完成 | AI Timeline 增强 | 一键全量质控 | 多项 Bug 修复 | Phase 2: LLM 执行摘要待开发
> **最后更新**2026-03-02
> **当前进度**V3.2 数据一致性修复 | 项目隔离 | 管理端配置流重设计 | AI 规则自动生成 | 中文显示名 | 警告详情 Modal | 待部署验证
> **核心文档**
> - [CRA Agent V3.0 开发计划](./04-开发计划/V3.0全新开发计划/V3.0全新开发计划.md) ⭐⭐⭐⭐⭐
> - [统一数字 CRA 质控平台 PRD](./04-开发计划/V3.0全新开发计划/统一数字%20CRA%20质控平台产品需求文档(PRD).md) ⭐⭐⭐⭐⭐