Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LutgzyJqNhPpZy1nFsJtN3
3.1 KiB
3.1 KiB
TASK · 合盘与报告子进程修复单(issue #64,第 1 次打回)
- 日期:2026-10-15
- 原任务书:
docs/tasks/TASK-api-chart-subprocess-gate-20261013.md - 被验 SHA:
336286e428c7cb43cac71eae5286e112c0b500b7(codex/api-chart-subprocess-gate-20261013) - 执行方:Grok,同一分支续做(先 merge 最新
origin/staging,不改写已推历史) - BUG 编号:沿用本单编号
1. 验收结论:内容通过,Python 全量多出 1 条失败
| 检查 | 结果 | 证据 |
|---|---|---|
| 合盘带 skip、两两并发 | 通过 | Claude 在 Linux 复跑 scripts/research/api_chart_subprocess_ab.py:串行 1.19 s / 4 个子进程 → 并发带 skip 0.015 s / 0 个,摘要逐字节一致 |
| 报告正文 | 通过 | 同脚本 report_bytes_match: true(本机装了 PyJHora,短路不触发,子进程数不变;生产不装,以 Grok 回报为准) |
| 进程内缓存 | 通过 | 只缓存「PyJHora 是否可导入」「外部解释器路径」「静态 oracle 文件校验(键含路径 + mtime + 大小)」,不含出生资料(BUG-721) |
| 主文件 | 通过 | 类方法数不变,行数减少 |
| 前端全量 / tsc / lint | 通过 | 失败清单与 staging 基线相同 |
| Python 全量(与 staging 逐条比对) | 未通过:新增 1 条 | tests/test_supabase_user_data_contract.py::test_synastry_route_orchestrates_python_chart_and_ashtakoot:assert 'postPython("/api/chart", selfPayload)' in route |
根因:这条 Python 合同按源码文本检查 frontend/src/app/api/synastry/route.ts 里的 postPython("/api/chart", selfPayload)。本单把它改成了 Promise.all 里的 postPython("/api/chart", { ...selfPayload, skip_vedastro_main_entry_overview: true }),合同没跟着改(AGENTS.md §7.8;Python 测试也会读前端源码,所以前端改动要 grep tests/ 和 frontend/tests/ 两处)。
另:本机复跑时 api_chart_subprocess_ab.py 会覆盖仓库里的 docs/testing/api-chart-subprocess-gate-ab-20261013.json。研究脚本默认不应写已入库的记录文件:改为默认写到临时目录或 artifacts/,只有显式 --out <路径> 时才写指定文件。
2. 修法要求
- 改
tests/test_supabase_user_data_contract.py那条断言,按 §7.3 写「原值 / 新值 / 原因」三栏,意图不放宽:仍要锁住「合盘路由向 Python/api/chart请求本人和对方两张盘」,新断言要同时锁住带skip_vedastro_main_entry_overview: true;该测试里其它 token(如 ashtakoot 调用)不动。 grep -rn "synastry/route\|postPython(\"/api/chart\"\|postPython(\"/api/varga_full\"" tests frontend/tests,其它按源码文本断言的同样处理。api_chart_subprocess_ab.py默认不覆盖入库文件(见上)。- 业务代码不改。PROGRESS 末尾记一行。
3. 验收标准
Claude 全量 pytest 与 staging 基线逐条比对无新增;前端全量无新增;git diff 336286e4..<新 SHA> -- frontend/src scripts/*.py 只有第 3 条的脚本改动。
4. 让步顺序
无。第 1 次打回。