4.4 KiB
4.4 KiB
里程碑 2.5(MIXED 完整段落解析)评审与交付报告
- 日期:2026-08-09
- 状态:通过(最终里程碑评审 Ready for delivery: YES)
- 关联文档:
docs/superpowers/specs/2026-08-09-mixed-paragraph-parsing-design.md、docs/superpowers/plans/2026-08-09-mixed-paragraph-parsing.md、docs/milestone2-excel-parser-review.md(遗留记录#1 的闭环) - 范围:里程碑 2 验收遗留项「MIXED 折叠进纯表路径」的完整落地(design §3.5.2「段落分割→各段落最优解析」)
一、交付内容
新实现 5 个任务、6 个新测试用例(当前全量 58 passed),7 个提交(base 81c6b6c):
| 任务 | 提交 | 说明 |
|---|---|---|
| Task 9 段落分割器 | 34ef28b |
paragraph_splitter.py:split_paragraphs(matrix) -> list[(start,end)](含端点、0-based,全空行为界,空矩阵→[]) |
| Task 10 data_models 扩展 | 539945b |
追加 MixedParagraph(kind=table/free_text、matrix、table、text、source_range)、MixedSheet;ExcelParseResult.mixed(默认[]);仅追加不改既有类字段 |
| Task 11 MIXED 装配 | 1e3f702(+docs bc79945) |
excel_parser.py MIXED 分支:forward_fill→split→每段 classify→TABLE:段内 header_row=find_header_row(seg) + seg_fmt_map(物理→段内坐标);其余→FREE_TEXT(extract_text_blocks+build_free_text_table,防二次递归);表/自由文本段双写 result.tables + result.mixed |
| Task 12 混合型样本+端到端 | 7592516 |
samples/要件定義_混合型.xlsx(表段+连续碎片段);test_real_samples.py 新增 test_mixed_sample_segments_detected(段落==2、kinds、F101、rows==3、碎片含 改修ポイント/対象期間) |
| Task 13 遗留清理 | d93cc77 |
① extraction_method 枚举同源(ExtractionMethod .value);② header_row 越界防御;③ forward_fill 非法/越界范围跳过完整实现;④ Provenance.row 语义注释;⑤ 补测试 6 个 |
二、验收结论
| 验收项 | 结论 |
|---|---|
| 段落分割(空行边界) | ✅ 纯函数 5 用例 + 样本实测 [(0,3),(5,6)] |
| 段落容器与 API 兼容 | ✅ 追加式扩展,既有类/字段/消费方零破坏(58 passed) |
| MIXED 各段最优解析 | ✅ 表段 → extract_table(表头/格式化);碎片段 → 文本块+占位表(llm_from_free_text) |
| formatting_map 段内坐标 | ✅ seg_fmt_map[(pr-s, pc)] 物理→段内平移,与 extract_table 索引语义闭环(test_parse_mixed_sheet_formatting_in_mid_segment 锁旧错误) |
| 防二次递归 | ✅ 段内二次 MIXED 落入 FREE_TEXT 分支 |
| 混合型端到端 | ✅ 样本真实驱动,断言 4 项全绿、无 skip |
| 回归安全 | ✅ TABLE/FREE_TEXT 路径行为不变;58 passed(14 基线 + 27 里程碑2 + 17 新 M2.5) |
| 每任务 pytest 全绿 | ✅ 各任务评审均 Approved(T9-T13) |
| 覆盖率 >80% | ⚠️ 未安装 pytest-cov(同里程碑2,可选增强,非阻塞) |
三、评审发现与闭环
最终里程碑评审(base 81c6b6c..d93cc77)独立复验:58/58 passed、样本直接内省 [(0,3),(5,6)]、坐标转移零偏移(F101 段内 (1,0));无 Critical / Important,仅以下 Minor(已记录,不影响交付):
| 事项 | 处置 |
|---|---|
progress.md Task11 重复/编码行 |
本次去重 |
MixedParagraph.matrix docstring 写「原始矩阵」但存 forward-filled 段 |
标签进 backlog(措辞调整) |
excel_parser 两处重复的 fmt_map 遍历 |
backlog(后续抽取公共辅助) |
test_excel_parser.py 中部 import(风格) |
backlog |
_AI_USAGE_LOG.md Task13 范式步骤「整体迭代」用词 |
本次改为「反馈迭代」并补时间 |
| 尾随空行(Windows 风格) | 既有 backlog(非功能) |
四、下一步建议(不在本里程碑范围)
- 将碎片段中「・」/「■」结构化到 LLM 提取(依赖 InferenceEngine,后续里程碑)
- 覆盖率工具(pytest-cov)与默读增强
- 既有 MIXED 的
source_range供 Impact/Writer 的追溯消费
五、提交与日志
- 提交:
34ef28b0f137b9539945b1e3f702bc799457592516d93cc77 _AI_USAGE_LOG.md每任务各追加 1 行(范式步骤:Agent 实现/测试验证/反馈迭代),模型deepseek-v4-flash-free- (本次报告本身随附日志行 + 提交)