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>
This commit is contained in:
2026-02-17 22:15:27 +08:00
parent 7a299e8562
commit e785969e54
31 changed files with 5925 additions and 15 deletions

View File

@@ -0,0 +1,182 @@
# **RVW V2.0 架构升级方案:基于 Skills 的柔性审稿引擎**
**文档版本:** v2.0 (Strategic Release)
**最后更新:** 2026-02-16
**核心理念:** **认知依赖注入 (Cognitive Dependency Injection)** —— 将审稿能力封装为原子化的 Skills通过配置引擎Profile动态注入给 SOP 引擎(报告)和 ReAct 引擎(对话)。
**架构依据:** 基于《AI Skills 落地应用探讨》与中英文期刊差异化需求。
## **1\. 核心定义:什么是 RVW Skills**
在 V2.0 架构中Skill 不再是一个简单的函数,它是连接\*\*非确定性大模型LLM**与**确定性业务系统Code\*\*的桥梁。
一个标准的 **RVW Skill** 包含三个不可分割的部分Schema First 原则):
1. **语义接口 (Semantic Interface)**:告诉 LLM "什么时候用"(例如:"当需要验证药物剂量时调用")。
2. **数据契约 (Schema)**严格定义的输入输出结构例如drug\_name: string, dosage: number确保代码执行的安全性。
3. **原生函数 (Native Function)**实际执行任务的代码Python/SQL**“推理在模型,执行在代码”**。
## **2\. 总体架构:双脑协同与护栏防御体系**
我们摒弃了 V1.0 的线性流程,采用了 **“双脑协同 \+ 中间件护栏”** 的立体架构。
### **系统架构图**
graph TD
subgraph "输入层"
Doc\[稿件 PDF/Word\]
Profile\[期刊配置 Profile\]
end
subgraph "Layer 1: 护栏中间件 (Middleware Guardrails)"
direction TB
SafeGuard\[🛡️ 政治与合规护栏\]
note1\[Pre-Hook: OCR地图/敏感词拦截\<br\>Post-Hook: 幻觉检测\]
end
subgraph "Layer 2: 审稿编排引擎 (The Core)"
Registry\[🧩 Skills Registry 技能注册表\]
Router\[🚦 Skill Router 动态路由\]
Context\[Shared Context 共享上下文\]
end
subgraph "Layer 3: 原子能力库 (Skills)"
direction BT
S\_Native\[🐍 Python计算 Skill\<br\>(数据造假/统计验证)\]
S\_RAG\[🧠 知识检索 Skill\<br\>(医学常识/pgvector)\]
S\_Search\[🌍 外部搜索 Skill\<br\>(竞品对标/ASL联动)\]
S\_Logic\[⚖️ 逻辑校验 Skill\<br\>(入排标准/pg\_bigm)\]
end
subgraph "输出层 (双脑应用)"
SOP\[🧠 左脑: SOP 流程引擎\<br\>(生成静态审稿报告)\]
ReAct\[🧠 右脑: ReAct 对话引擎\<br\>(交互式学术 Copilot)\]
end
Doc \--\> SafeGuard
SafeGuard \--阻断/通过--\> Router
Profile \--\> Router
Router \--动态加载--\> Registry
Registry \<--\> S\_Native & S\_RAG & S\_Search & S\_Logic
Registry \--\> SOP
Registry \--\> ReAct
SOP \--\> Context
Context \<--\> ReAct
## **3\. 三层防御与赋能体系 (The 3-Layer Capability)**
### **Layer 1: 政治与合规护栏 (Middleware Guardrail)**
*针对痛点:中文期刊的政治红线(地图、涉敏言论)。*
* **性质**:这不是一个可选的 Skill而是系统级的 **Interceptor (拦截器)**
* **机制**
* **Pre-Hook (输入前)**
* 调用 OCR 识别图片 \-\> 匹配“中国地图特征库” \-\> 缺失藏南/南海 \-\> **熔断拒稿**
* 扫描全文 \-\> 匹配“高危敏感词库” \-\> 命中 \-\> **熔断拒稿**
* **Post-Hook (输出后)**
* 扫描 LLM 生成的审稿意见,防止 AI 产生不当言论。
* **配置策略**:中文核心期刊强制开启 (Blocker 级别),英文期刊可降级为 Warning 或关闭。
### **Layer 2: 原生计算能力 (Native Execution Skills)**
*针对痛点:数据造假、统计学错误。*
* **核心原则**LLM **只写参数,不负责计算**
* **典型 SkillDataForensicsSkill (数据侦探)**
* **Step 1 (LLM)**:从 Markdown 表格中提取数据,生成 JSON{"group\_a\_n": 50, "group\_a\_mean": 12.5, "group\_a\_sd": 2.1}。
* **Step 2 (Python)**:调用 scipy 库复核 P 值,使用 Benford's Law (本福特定律) 检查首位数字分布。
* **Step 3 (LLM)**:根据 Python 返回的 {"p\_value\_consistent": false, "benford\_score": 0.04} 生成自然语言警告。
### **Layer 3: 学术智慧能力 (RAG & Agent Skills)**
*针对痛点:医学常识错误、竞品对标。*
* **典型 SkillMedicalLogicSkill (常识校验)**
* **底层支持**:利用 **Postgres (pgvector)** 挂载《临床用药指南》和《诊断学参考值》。
* **流程**:提取“卡托普利 500mg” \-\> 向量检索知识库 \-\> 发现正常范围是 12.5-50mg \-\> 触发警告。
* **典型 SkillBenchmarkSkill (竞品对标)**
* **联动**:调用 ASL (智能文献) 模块 API。
* **流程**:搜索相似文献 \-\> 对比样本量与方法学 \-\> 生成“竞争力分析报告”。
## **4\. 固定的 vs. 可配置的 (Architecture Boundary)**
基于“工厂模式”理念,我们将系统划分为“流水线(固定)”和“模具(可配置)”。
### **✅ 固定的 (Infrastructure \- 平台底座)**
所有期刊共用,不随业务变化:
1. **Middleware Pipeline**:支持 Pre/Post Hook 的拦截器架构。
2. **Skill Registry**:技能注册与发现机制。
3. **Postgres-Only Stack**
* pgvector承载医学知识库、稿件内容记忆。
* pg\_bigm承载精确的术语匹配如药物名
* pg-boss承载长耗时任务如全网文献对标
4. **Python Microservice**:提供 OCR、PDF 解析、统计计算等“硬核”算力。
### **🎛️ 可配置的 (Journal Profile \- 业务逻辑)**
通过 JSON 配置定义,适应不同期刊:
1. **Guardrail Strictness (护栏严格度)**
* "political\_check": "BLOCKER" (中文核心) vs "WARNING" (普通期刊)。
2. **Skill Selection (技能组合)**
* **中文组合**DataForensics \+ MedicalLogic \+ Editorial\_CN。
* **英文组合**Methodology\_CONSORT \+ Benchmark\_PubMed \+ Editorial\_EN。
3. **Chat Persona (对话人格)**
* "persona": "严厉的政治审查员" vs "persona": "建设性的学术导师"。
## **5\. 场景演练:从上传到对话**
### **场景 A中文核心期刊政治与数据为王**
1. **上传**:文件经过 **Layer 1 护栏**。OCR 发现地图缺失,直接抛出 FatalError: MapIntegrityViolation流程终止。用户收到拒稿通知。
2. **修正后上传**:通过护栏。
3. **SOP 引擎**:自动调用 DataForensicsSkill。Python 后端发现“表1数据标准差异常”写入报告。
4. **ReAct 引擎 (Chat)**:用户问:“为什么说我数据有问题?”
* Chat Agent 读取 Shared Context。
* 回答:“根据 Benford 定律检测,您数据的首位数字分布偏离自然规律 30%,建议复核原始记录。”
### **场景 B英文顶刊创新与对标为王**
1. **上传**:跳过政治护栏(配置为通过)。
2. **SOP 引擎**:调用 BenchmarkSkill。ASL 模块检索到 3 篇上个月发表的类似文章,样本量均大于本稿件。
3. **报告生成**:在“创新性评估”一栏标注:“样本量竞争力不足 (Low Competitiveness)”。
4. **ReAct 引擎 (Chat)**:用户问:“我该怎么修改才能达到发表标准?”
* Chat Agent 调用 MethodologySkill。
* 回答:“建议参考 *Smith et al. (2025)* 的多中心设计,将样本量扩充至 200 例,并补充亚组分析。”
## **6\. 开发实施路线图 (Implementation Roadmap)**
### **Phase 1: 基础设施与定义 (Infrastructure)**
* \[ \] **定义 Schema**:在 backend/src/modules/rvw/skills/definitions/ 下定义 SkillInterface 和各类 Skill 的 JSON Schema。
* \[ \] **建立 Registry**:实现简单的内存级 Skill 注册表。
### **Phase 2: 护栏与原生技能 (The Hard Stuff)**
* \[ \] **实现 Middleware**:在 Document Service 中插入 Pre-Hook 逻辑。
* \[ \] **开发 Python Skills**:在 python-extraction 服务中新增 /analyze-table 和 /ocr-check 接口。
* \[ \] **实现 PoliticalGuardrail**:基础的敏感词匹配 \+ 地图 OCR 占位符。
### **Phase 3: 学术技能与双脑打通 (The Smart Stuff)**
* \[ \] **实现 MedicalLogicSkill**:利用现有的 pgvector 基础设施。
* \[ \] **集成 ASL**:开发 BenchmarkSkill 调用 ASL 模块 API。
* \[ \] **升级 Chat**:让 AIA 组件能读取审稿报告的 Context并具备 Function Calling 能力。
## **7\. 总结**
V2.0 架构不仅仅是功能的堆砌,而是**系统哲学的转变**
***"LLM 尽力而为"** 转向 **"Guardrail 绝对防御"**。
***"单一审稿报告"** 转向 **"交互式学术伙伴"**。
***"文本生成"** 转向 **"工具调用 (Tool Use)"**。
这套架构将确保 RVW 既能满足中文期刊的“生死红线”,又能满足英文期刊的“学术高度”。