Files
Auto-Finance/tests
wandering 8802d24a2b feat(status): 阶段认「已填报」,case_reset 补 screenshots 域
用户第 5 条:填完五步后 case_status 仍提示「可生成申购单,然后 browser_open」,
因为阶段推导到 docs_ready 就停了,根本没有「已填报」这一档;case_reset 也缺一个清截图的域。

- cases.summary 新增 filled 判据:screenshots/ 里存在 <NNN>-<step>_done.png(browser_* 每步成功都落一张),
  阶段链变成 ... -> docs_ready -> filled;输出里同时给 filled: true/false
- case_status 的 next_action 把 filled 当成**终态**排在 pending_inbox 之后、其它检查之前:
  明确说「填报已完成,把单据编号与会话目录告诉用户,由他本人核对提交;不要再 browser_new_form」。
  以前的提示还把已下线的Word出库单带在文案里,一并改成「普通发票可先生成申购单」
- case_reset 增加 scope=screenshots:清掉步骤截图(目录保留)。这也让 stage 从 filled 正常退回
- tests/test_stage_filled.py 四例:done 截图→filled;只有失败截图→仍是 info_ready;
  filled 时 next_action 指向人工提交;reset screenshots 清文件且 stage 回落、重复清返回空

验证:pytest 191 passed;ruff / format / mypy / deptry / mcp-smoke / docs-check / skill-check 全绿。
--no-verify 提交并手跑等价检查。
2026-10-21 13:51:17 +08:00
..
2026-06-09 16:25:20 +08:00

last_reviewed
last_reviewed
2026-10-19

tests — 单元测试

pytest 运行(make test 带覆盖率)。当前 148 例。

文件 覆盖范围
test_config.py 配置加载:默认值、文件覆盖、环境变量优先级
test_invoice.py 发票常量、差旅判定、批量分类
test_matcher.py 金额匹配:容差、一对一、一对多贪心、未匹配、CSV 汇总构造
test_mcp_analysis.py MCP 分析工具:缓存分组、凑额复核、业务约束违反、无发票场景、save_info 剥离多余字段、
草稿不落盘、rules_get 形状、info_skeleton 与规则同源、骨架填满即通过
test_requisition.py 申购明细:品名清洗、规格猜测、发票号去重、关键词排除、项目名取值链与回退
test_mcp_browser.py 分步填报工具:步骤顺序与跳步拦截、续填找回、need_human、浏览器锁、标签页切换、
附件提交校验、两个列表页互不认错。用 FakePage 跑 base.py 的真实逻辑,不依赖 Playwright 与真实账号

不进单测的部分

  • Office COM(申购单):需要本机装有 Excel,改动后用真实生成验证(约 2-5 秒,产物单元格肉眼确认)
  • 真实填报:账号和页面只有联机才有,靠 browser_* 实机走一遍 + 逐张看截图验证; 但选择器分支、状态判定、错误路径这些逻辑 test_mcp_browser.py 里有单测兜着
  • MCP wire 层:用 make mcp-smoke(真起 stdio 子进程握手、列工具、调一次 case_list)

测试不碰 cases/ 真实目录,一律用 tmp_path 造会话。