Files
Jyotisha/docs/tasks/TASK-api-chart-subprocess-gate-fix-20261015.md
T

3.1 KiB
Raw Blame History

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. 修法要求

  1. 改 tests/test_supabase_user_data_contract.py 那条断言,按 §7.3 写「原值 / 新值 / 原因」三栏,意图不放宽:仍要锁住「合盘路由向 Python /api/chart 请求本人和对方两张盘」,新断言要同时锁住带 skip_vedastro_main_entry_overview: true;该测试里其它 token(如 ashtakoot 调用)不动。
  2. grep -rn "synastry/route\|postPython(\"/api/chart\"\|postPython(\"/api/varga_full\"" tests frontend/tests,其它按源码文本断言的同样处理。
  3. api_chart_subprocess_ab.py 默认不覆盖入库文件(见上)。
  4. 业务代码不改。PROGRESS 末尾记一行。

3. 验收标准

Claude 全量 pytest 与 staging 基线逐条比对无新增;前端全量无新增;git diff 336286e4..<新 SHA> -- frontend/src scripts/*.py 只有第 3 条的脚本改动。

4. 让步顺序

无。第 1 次打回。