docs(tasks): synastry full report third fix brief (issue #82)
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LutgzyJqNhPpZy1nFsJtN3
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
f8b498cea5
commit
32a51071aa
@@ -0,0 +1,46 @@
|
||||
# TASK · 完整合盘报告 · 第三份修复单(issue #82)
|
||||
|
||||
- 日期:2026-10-19
|
||||
- 被验提交:`362d903c31d579c834d36cd8209788864a363ae2`(分支 `codex/synastry-full-report-20261018`)
|
||||
- 前序:`TASK-synastry-full-report-fix-20261019.md`、`TASK-synastry-full-report-fix-20261019-2.md`(S1–S7)
|
||||
- 状态:第 3 次未过,按循环规则等产品负责人拍板(见 issue #82)
|
||||
- 编号:合并时本单两条已由 BUG-1393/1394 顺延为 **BUG-1394/1395**(1393 归 #84);Claude 合并提交 `b3c8eaf7` 在本地,未推送。新缺陷从开工时最大号 +1 起
|
||||
|
||||
## 验收结论(Claude,Linux / Node 22)
|
||||
|
||||
| 项 | 结论 |
|
||||
| --- | --- |
|
||||
| tsc / lint / build | 0 错;0 error;`/` 仍 Static,首屏 gzip 约 +0.3% |
|
||||
| 全量 pytest | 与 staging 基线一致(只差已知并行抖动 `test_vedastro_gateway`) |
|
||||
| 前端全量 | 5071 条,失败 26;比基线多 **1 条**(T1) |
|
||||
| S2 / S3 / S4 / S5 / S7 / 应该修 | 已修 |
|
||||
| S1 / S6 | 部分(T2、T3) |
|
||||
|
||||
## T1 · 报告列表翻页合同被打破(必做)
|
||||
|
||||
`frontend/tests/report-list-paging-20260930.test.tsx`「GET /api/reports pages by (created_at desc, id desc), fetches limit + 1 and returns nextCursor」失败。原因:为了让「缺人物时在扣点前拒绝」那条测试的 mock 能跑,`app/api/reports/route.ts` 的 GET 把一次 `.or()` 查询拆成了四次 `eq` 查询、在内存里合并。这样:
|
||||
|
||||
- 每次翻页要打四次数据库;
|
||||
- 四路各取 `limit + 1` 后再合并,`nextCursor` 的语义是否仍然正确没有任何测试守着,而原来守着它的合同测试现在红了。
|
||||
|
||||
修法:**恢复单次 `.or()` 查询与原有分页写法**,让翻页合同测试恢复绿;「缺人物」那条测试的问题改为给它的 mock 补上 `.or()`(这是测试替身缺方法,不是放宽断言;按 §7.3 写三栏说明)。若确有必要改分页实现,先在本单进度里写清新分页的正确性证明,并补一条「跨四路合并后的游标翻页不丢不重」的行为测试,再同步更新合同测试(三栏)。
|
||||
|
||||
## T2 · S1 剩余三处测试(必做)
|
||||
|
||||
1. 「两轮质检不过 → 退点」:现在只 mock 了一次 `report_guard_rejected`。改为让写作者两轮都被质检拒绝,断言第二轮后预留被释放、报告为失败。
|
||||
2. 英文 worker 行为测试:现在只检查租约常数和源码里有 `.catch`。补一条:领取 → 生成成功 → 写快照、任务 ready、记用量;一条:生成抛错 → 任务 failed、错误码、不卡 running。
|
||||
3. 技术依据第 ⑥ 块:现在拿同一个 `executionBasisLines()` 生成期望,等于自己验自己。改为直接读真实 `execution_receipt` 的行,逐行断言第 ⑥ 块里出现了对应的模块名与状态。
|
||||
|
||||
## T3 · S6 第 ② 块(必做)
|
||||
|
||||
- A7:引擎里在 `modules.jaimini.arudha_padas`,不是 `modules.arudha_padas`;按实际路径取。
|
||||
- `chara_karaka_standard` 在仓库里不存在,删掉这条死查找或换成真实键。
|
||||
- 测试:用真实 Einstein / Jobs 证据包断言 7 宫主、DK、UL、A7、D9 五项**都有值**(不是只断言「不全是未标明」);Python 侧 `relationship_structure()` 加一条单测。
|
||||
|
||||
## T4 · 外壳每次挂载都请求开关(必做,小)
|
||||
|
||||
`app/(app)/layout.tsx` 现在每次挂载外壳都 `fetch('/api/product-access')`。预热测试 `home-warm-return-lifecycle.test.tsx` 用的是自己的 `AppShell` 副本,没覆盖这个请求。修法二选一:复用已经在取的账户 / 产品数据(推荐),或把这个请求纳入预热测试的只读预取清单并更新该测试(三栏)。
|
||||
|
||||
## 交回前必跑
|
||||
|
||||
全量 `npm test`(与基线逐名比对,必须没有新增失败)、`npm run test:db`、`npm run build`、全量 `pytest`、快速门。上一轮又没跑全量,正是 T1 漏掉的原因。
|
||||
Reference in New Issue
Block a user