Files
AIclinicalresearch/docs/03-业务模块/RVW-稿件审查系统/00-系统设计/RVW V2.0 融合实施作战计划:架构与功能的统一.md
HaHafeng e785969e54 feat(rvw): Implement RVW V2.0 Data Forensics Module - Day 6 StatValidator
Summary:
- Implement L2 Statistical Validator (CI-P consistency, T-test reverse)
- Implement L2.5 Consistency Forensics (SE Triangle, SD>Mean check)
- Add error/warning severity classification with tolerance thresholds
- Support 5+ CI formats parsing (parentheses, brackets, 95% CI prefix)
- Complete Python forensics service (types, config, validator, extractor)

V2.0 Development Progress (Week 2 Day 6):
- Day 1-5: Python service setup, Word table extraction, L1 arithmetic validator
- Day 6: L2 StatValidator + L2.5 consistency forensics (promoted from V2.1)

Test Results:
- Unit tests: 4/4 passed (CI-P, SE Triangle, SD>Mean, T-test)
- Real document tests: 5/5 successful, 2 reasonable WARNINGs

Status: Day 6 completed, ready for Day 7 (Skills Framework)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-17 22:15:27 +08:00

97 lines
4.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# **RVW V2.0 融合实施作战计划:架构与功能的统一**
**核心策略:** 以“数据侦探”功能为矛刺穿技术壁垒以“Skills 架构”为盾,构建系统底座。
**执行原则:** 垂直切片 (Vertical Slice) —— 做深不做宽。
## **1\. 优先级决策 (Decision Matrix)**
我们不采用“先搭好所有架子再填肉”的瀑布模式,而是采用\*\*“以战养战”\*\*模式。
|
| **步骤** | **任务名称** | **涉及层面** | **目标** | **优先级** |
| **Step 1** | **Python 核弹头开发** | **Python Service** | 实现 Word 表格提取 \+ 算术/P值验证算法。这是**技术可行性验证**。 | **P0 (立刻开始)** |
| **Step 2** | **Skill 接口定义** | **Node.js Backend** | 定义 interface Skill建立 SkillRegistry。这是**架构地基**。 | **P0 (并行)** |
| **Step 3** | **封装 DataForensicsSkill** | **Node.js Backend** | 将 Step 1 的能力装入 Step 2 的壳子。这是**架构落地**。 | **P0** |
| **Step 4** | **SOP 引擎对接** | **Node.js Backend** | 让 Review Service 调用新 Skill 而非旧逻辑。 | **P1** |
| **Step 5** | **前端可视化** | **Frontend V2** | 在报告页展示结构化的数据错误。 | **P1** |
## **2\. 详细执行路线图 (Execution Roadmap)**
### **Week 1: 攻克核心算力 (Python & Word)**
**目标**:输入一个 .docx 文件Python API 能返回“第几张表第几行算错了”。
* **Day 1: 环境与转换**
* 在 python-extraction 镜像中集成 LibreOffice (用于 doc 转 docx)。
* 引入 python-docx, pandas, scipy。
* **Day 2: 提取器开发 (Extractor)**
* 编写 DocxTableExtractor。
* 重点攻克:**合并单元格的 Forward Fill** (确保 "Group A" 能覆盖下面所有列)。
* 输出:干净的 Pandas DataFrame List。
* **Day 3: 验证器开发 (Validator)**
* 编写 ArithmeticValidator (算术检查Sum, Percentage)。
* 编写 StatValidator (统计检查T-test 逆运算)。
* **Day 4: API 封装**
* 开放 /api/v1/forensics/analyze\_docx 接口。
* 联调测试:用 5 个真实的 Word 稿件进行测试,看提取准确率。
### **Week 2: 架构升级与封装 (Node.js & Skills)**
**目标**:后端不再写死业务逻辑,而是通过加载 Skill 来执行。
* **Day 5: 定义 Skill 标准**
* 创建 backend/src/modules/rvw/skills/core/types.ts。
* 定义 run(context): SkillResult 接口。
* **Day 6: 封装 DataForensicsSkill**
* 在 Node.js 中实现这个 Skill。
* 逻辑Node.js 负责调用 Python 接口 \-\> 拿到 JSON \-\> 这是一个“原子能力”。
* **Day 7: 改造 ReviewService**
* 引入 SkillExecutor。
* 修改 createTask 流程:不再直接调用 editorialService而是从 Profile 中加载 \['DataForensicsSkill', 'EditorialSkill'\] 并依次执行。
* **Day 8: 数据库迁移**
* 执行 prisma migrate支持存储结构化的 Skill 执行结果 (contextData)。
### **Week 3: 前端呈现与交付 (UI & Delivery)**
**目标**:用户看到专业的“数据体检报告”。
* **Day 9: 报告页重构**
* 在 TaskDetail 页面增加 "Data Verification" Tab。
* **Day 10: 错误渲染**
* 开发“表格定位组件”当显示“Table 1 算术错误”时,能把后端返回的 Table 数据渲染出来,并高亮错误的单元格。
* **Day 11: 综合联调**
* 全流程测试:上传 \-\> Python 计算 \-\> Skill 封装 \-\> 前端展示。
## **3\. MVP 定义 (本次交付范围)**
为了确保 3 周内能上线,我们需要划定清晰的红线:
| **功能** | **MVP (本次交付)** | **V2.1 (后续迭代)** |
| **文件格式** | **Word (.docx/.doc)** | PDF, 图片 |
| **表格类型** | **三线表 (Standard)** | 极其复杂的嵌套表、跨页断裂表 |
| **验证深度** | **L1 (算术) \+ L2 (基础 P 值)** | L3 (回归逻辑), L4 (跨表一致性) |
| **Skill 数量** | **1 个 (DataForensics)** | 政治审查、竞品对标、方法学检查 |
| **用户界面** | **静态报告展示** | 交互式 Chat 修改 |
## **4\. 立即执行的下一步 (Next Action)**
**请按照以下指令启动 Python 端的开发(这是最硬的骨头):**
1. **确认 Python 库**:请让您的 Python 开发人员确认 python-docx 和 scipy 是否已在依赖列表中。
2. **提供测试数据**:请准备 3-5 份典型的中文核心期刊 Word 稿件(脱敏后),放到 backend/test/fixtures 目录下,用于 Day 2 的提取测试。
**您觉得这个“先攻核心,顺带架构”的节奏是否合适?**
如果合适,我们可以先不讨论架构代码,而是直接开始写 Python 的 **表格提取器 (Extractor)** 代码。