Files
AIclinicalresearch/docs/03-业务模块/RVW-稿件审查系统/06-开发记录/2026-02-18 统计验证扩展与用户体验优化.md
HaHafeng f9ed0c2528 feat(rvw): Complete V2.0 Week 3 - Statistical validation extension and UX improvements
Week 3 Development Summary:

- Implement negative sign normalization (6 Unicode variants)

- Enhance T-test validation with smart sample size extraction

- Enhance SE triangle and CI-P consistency validation with subrow support

- Add precise sub-cell highlighting for P-values in multi-line cells

- Add frontend issue type Chinese translations (6 new types)

- Add file format tips for PDF/DOC uploads

Technical improvements:

- Add _clean_statistical_text() in extractor.py

- Add _safe_float() wrapper in validator.py

- Add ForensicsReport.tsx component

- Update ISSUE_TYPE_LABELS translations

Documentation:

- Add 2026-02-18 development record

- Update RVW module status (v5.1)

- Update system status (v5.2)

Status: Week 3 complete, ready for Week 4 testing
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-18 18:26:16 +08:00

5.2 KiB
Raw Blame History

RVW V2.0 开发记录 - 2026-02-18

日期: 2026-02-18
阶段: Week 3 - 统计验证扩展与用户体验优化
开发者: AI Assistant
状态: 完成


📋 今日完成内容

1. 负号归一化功能

问题背景:

  • Word 文档中的负号可能是多种 Unicode 字符(数学减号 \u2212、En Dash \u2013、Em Dash \u2014 等)
  • Python 的 float() 无法解析这些特殊字符,导致验证失败

实现内容:

文件 修改
extraction_service/forensics/extractor.py 新增 _clean_statistical_text() 方法,在提取单元格时自动清洗
extraction_service/forensics/validator.py 新增 _clean_number_string()_safe_float() 辅助函数

覆盖的特殊字符:

Unicode 字符 名称 清洗为
\u2212 数学减号 -
\u2013 En Dash -
\u2014 Em Dash -
\u2264 小于等于 <=
\u2265 大于等于 >=
\u00d7 × 乘号 x
\u200b Zero-Width Space (删除)

2. 统计验证方法扩展

2.1 T 检验验证增强

改进点:

  • 智能样本量提取:支持 (n=50)n=50(50例) 等多种格式
  • 新增 _extract_sample_sizes_from_header()_extract_sample_sizes_from_row() 方法
  • 支持括号格式的 SD45.2 (12.3)
  • 支持多行单元格 subrow 精确高亮

2.2 SE 三角验证增强

改进点:

  • 支持多行单元格的 subrow 精确定位
  • 遍历 P 值列每一行,分别验证
  • 显示友好的行描述(如变量名)

2.3 CI vs P 值一致性验证增强

改进点:

  • 支持多行单元格 subrow 精确定位
  • 支持多个 CI/P 值对的验证
  • 使用 _parse_pvalue_flexible 灵活解析

3. 前端翻译映射更新

文件: frontend-v2/src/modules/rvw/components/ForensicsReport.tsx

新增/完善的问题类型中文翻译:

代码 中文描述
ARITHMETIC_TOTAL 总计行错误
STAT_CI_PVALUE_CONFLICT CI 与 P 值矛盾
STAT_SD_GREATER_MEAN SD 大于均值
STAT_REGRESSION_CI_P 回归 CI-P 不一致
EXTRACTION_WARNING 提取警告
TABLE_SKIPPED 表格跳过

4. 文件格式提示功能

用户反馈: 上传 PDF 文件后没有数据验证 Tab需要提示用户

实现内容:

文件 修改
Header.tsx 上传按钮下方添加蓝色提示框,推荐 .docx 格式
ReportDetail.tsx 非 docx 文件时显示黄色警告,解释为什么没有数据验证
TaskDetail.tsx 同上

提示内容:

  • 上传时: "推荐上传 .docx 格式文件可获得完整的数据验证功能。PDF 和 .doc 格式仅支持稿约和方法学评审。"
  • 查看报告时: "当前文件为 PDF/.doc 格式,无法进行数据验证。如需数据验证功能,请上传 .docx 格式文件。"

📊 当前统计验证能力总览

验证类型 方法 状态
L1 算术 百分比 n(%)
L1 算术 Sum/Total 校验
L2 统计 卡方检验 P 值逆向验证 + subrow
L2 统计 T 检验 P 值逆向验证 + subrow
L2 统计 CI vs P 值逻辑一致性 + subrow
L2.5 取证 SE 三角验证 + subrow
L2.5 取证 SD > Mean 检查

📁 修改的文件清单

Python 后端

  • extraction_service/forensics/extractor.py - 负号归一化
  • extraction_service/forensics/validator.py - 统计验证扩展

Node.js 后端

  • (无修改)

前端

  • frontend-v2/src/modules/rvw/components/ForensicsReport.tsx - 翻译映射
  • frontend-v2/src/modules/rvw/components/Header.tsx - 上传提示
  • frontend-v2/src/modules/rvw/components/ReportDetail.tsx - 格式提示
  • frontend-v2/src/modules/rvw/components/TaskDetail.tsx - 格式提示

📋 待完成工作

V2.0 MVP 剩余任务

任务 优先级 状态
Week 4 功能测试 P0 📋 待开始
Week 4 性能测试 P1 📋 待开始
Week 4 Bug 修复 P0 📋 待开始
Week 4 文档更新 P1 📋 待开始

V2.1 待开发功能

功能 说明
ANOVA 验证 多组比较 P 值验证
配对 T 检验 配对样本验证
非参数检验 Mann-Whitney, Wilcoxon
.doc 格式支持 评估 Pandoc 替代方案
Profile 管理 UI 期刊配置界面

💡 技术要点

负号归一化的重要性

# 未清洗时 float() 会崩溃
float('1.5')  # ValueError: could not convert string to float

# 清洗后正常工作
float('-1.5')  # -1.5

Subrow 高亮原理

Word 表格中一个单元格可能包含多行数据(用换行符分隔),例如:

| 变量 | P值 |
|------|-----|
| 年龄 | 0.82
  性别   0.01  <- 问题在这里
  BMI    0.95 |

通过 data-subcoord="R2C2S2" 属性可以精确定位到第 2 行第 2 列的第 2 个子行。


文档版本: v1.0
创建日期: 2026-02-18
下次更新: Week 4 测试完成后