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>
97 lines
4.7 KiB
Markdown
97 lines
4.7 KiB
Markdown
# **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)** 代码。 |