The staging quality gate failed because database-local-business still listed the old pg_tables set after 20260905010000. Co-authored-by: Cursor <cursoragent@cursor.com>
7.0 KiB
PROGRESS · 长报告对齐全量版并挂入产品(2026-09-05)
工作树:/Users/jesse/Downloads/Copse/astrology/.worktrees/report-longform-parity-20260905
分支:codex/report-longform-parity-20260905
基线:任务书写 d2955c62 之后;开工 origin/staging 为 3fd001ca(含本任务书);收尾已快进到 18a5a488。
任务书:仓库根 TASK-report-longform-parity-20260905.md
未改 .gitea/workflows/**,不提升 main,不反向同步上游 yinduzhanxing,未把两份真实对标报告入库。
五章 writer / bundle / schema 未改。附录失败不改 personal_reports.status、不触发退款。
并行队列:BUG-535 chart-cap 已在 staging 4ef4c406 / 73c2a1a5 关闭并真实五章 ready,本轮未重做。
| 任务 | 状态 | 说明 |
|---|---|---|
| 0 全量时长与覆盖基线 | 完成 | 虚构北京盘;同步生成,不改异步 job |
| 1 调用面 / 装配对齐 | 完成 | 三年年度、KP 月度、五系统表、专题三表、Upagraha、KP Lord/Sub、功能吉凶 |
| 2 年度层 Muntha / Mudda / Patyayini | 完成(诚实标签,见下) | 未把 blocked/conflict 涂成可读 |
| 3 校时敏感层 | 完成 | 无窗「未做校时」;有窗走 provisional + candidate_range |
| 4 成品阅读导航 | 完成 | 生成器确定性产出,不依赖 Agent 后处理 |
| 5 产品附录存储 + 下载入口 | 完成 | 首次请求同步生成 + 缓存;maxDuration=300 |
| 6 部署后真实核对 | 未做 | 待 staging 部署后按覆盖表抽查 |
任务 0 · 虚构北京盘 smoke
出生资料按任务书:1990-01-01 12:00,39.9042, 116.4074,tz 8,Raman,--today 2026-09-05 --target-year 2026 --pack full --format markdown。产物只在 /tmp/longform-parity-20260905/,不入库。
| 指标 | 装配前(同盘) | 本轮装配后 |
|---|---|---|
| 墙钟 | 20.67s | 7.64s |
| 体积 | 250,819 B / 2605 行 / 155 标题 | 282,502 B / 2965 行 / 178 标题 |
| 旧 Web 参考版 | 约 188K / 2088 行 | 已超过 |
| skill 全量版 | 约 391K / 3634 行 | 仍薄一截,剩余主要是受限材料与未 vendor 的 professional_parity_closure |
止损:单次远低于 5 分钟,任务 5 保持同步生成 + 表缓存。maxDuration = 300 足够。
覆盖对照(标题结构,虚构盘)
| 差距项 | 装配后 | 状态标签 |
|---|---|---|
| 成品阅读导航五块 | present | 质量门本次 blocked(37/49 passed),不改写正文 |
| 2026/2027/2028 年度重点 | present | 年度层可读壳 |
| 大运与时间主线五系统表 | present | Vimshottari / Narayana / Yogini / Ashtottari / Kala Chakra 均为 executed + parameter_sensitive |
| KP 三年流月 + 重点月份 | present | parameter_sensitive |
| Muntha | present | conflict(solar_return 与 tajika 同 profile 不一致,保持仲裁标签) |
| Mudda Dasha | present | executed / partial_verified |
| Patyayini | present(外部回放段) | 回放 pyjhora_behavior_only / not_multiengine_parity;质量门 patyayini_annual_support=blocked(本地 producer 仍缺) |
| 专题 KP 小表 / 宫位核对 / 月度 MD-AD | present | parameter_sensitive |
| 功能性吉凶与 Yogakaraka | present | used |
| Upagraha 表 | present | parameter_sensitive |
| KP Lord/Sub、Ruling Planets、ABCD | present | parameter_sensitive |
| 出生时间敏感度 / 未做校时 | present | not_rectified |
| 质量门对照表若干受限层 | missing | restricted_or_unclosed:jaimini_special_points / tajika_named_yoga / annual_sahams / kranti / alternate_ashtottari(正文另有本地 Saham/Jaimini 段,质量门走受限材料路径,未涂成 closed) |
实现要点
引擎调用面
_export_args与 API_high_rigor_birth_payload默认today/target_year/age;age不再重复 kwargs。cmd_full_reading补cmd_kp、_build_natal_foundation_modules(panchanga / upagrahas / bhava_chalit / moon_chart / sudarshana / functional_benefic_malefic)、varga_research_high。cmd_kp算完立即把 Swiss Ephemeris 岁差从 KP 恢复到报告口径(默认 Raman),避免后续本命模块被带跑。professional_parity_closure未 vendor(约 3500 行)。dasha_master_pack装配失败时用本地 Vimshottari / Narayana / Yogini / Ashtottari / Kala Chakra 填五系统表,不假装外部 dasha oracle 已闭环。- 无候选窗时
birth_time_sensitivity保留为not_rectified/「未做校时」,不再整段消失。 - 成品阅读导航由
_render_finished_reading_navigation写出。
产品附录
- 迁移
frontend/supabase/migrations/20260905010000_personal_report_longform_appendices.sql:PK=report_id,另有(user_id, request_id)FK;owner SELECT;service_role写;错误码无正文。未双写冻结的frontend/db/migrations。 POST /api/reports/[reportId]/professional-reference:runtime=nodejs,maxDuration=300;鉴权/同源/本人/主报告 ready 不变;缓存命中直接返回;unavailable→ 503「全量数据附录暂不可用」;payload 带packs:["full"]、today/target_year/age、有窗则birth_time_accuracy=provisional。缓存写入失败不阻断下载,也不改personal_reports。- UI:报告中心与阅读页按钮改为「全量数据附录」;打印通道仍独立。
测试与门禁
- 定向 pytest(
test_report_longform_parity+ 参考导出 / quality gate / 生时敏感 / KP monthly / calculation profile / annual pack):全部绿,3 skipped(未 vendor 的 dasha-master gate)。 ./node_modules/.bin/tsc --noEmit:0- 定向前端:
professional-report-reference-route+personal-report-longform-appendix+ entry/view 相关:通过 tests/database-personal-report-longform-appendices.test.ts:1 pass(owner 可读、他人 0 行、authenticated 不能 insert、appendixunavailable后personal_reports.status仍ready)- 未改
.gitea/workflows/**;未跑全量npm test/ 未提升 main。bab07187的 staging 质量门因此在database-local-business表白名单上失败(BUG-548) - 任务 6 部署后真实用户附录未做
门禁修复(BUG-548)
Gitea run 2416 / job 5696 validate:npm test 唯一失败是 local PostgreSQL applies the reviewed business schema...。实际名单多了 personal_report_longform_appendices。附录定向库测 ok 951。未改 workflow。
让步
- 未 vendor
professional_parity_closure.py。五系统表走本地模块状态;辅助大运明细表仍可能缺 master-pack 周期行。 - Patyayini 本地 producer 仍无;只呈现 PyJHora 回放并保持
pyjhora_behavior_only。质量门继续blocked。 - Muntha
conflict未做 producer 仲裁。 - 质量门整体
blocked(37/49)。对照表里受限材料 missing 保持 missing。 - 附录是首次点击同步生成,不是后台异步 job。7.64s 墙钟支持该选择。
- 任务 6 必须等 staging 部署。
BUG_HISTORY
BUG-548:staging 质量门因 public 表白名单未含附录表失败;产品行为未改。BUG-535 保持 resolved。