4.7 KiB
PROGRESS · Chara 0 年大运 + 星历切日期 + 星盘无资料入口(2026-09-25)
当前结论
T1、T2、T3、T4 都已完成,没有让步,也没有写进 BLOCKED。引擎 kn_rao 口径、HEAVY_COMPUTE_PATHS、数据库和 workflow 都没动。浏览器登录验收没做。没有推 staging,也没有推 main。实现提交在变基到 82c8aeb0 之后是 19ea0f06。状态板写这个 SHA。
- 工作树:
G:\Ferti\Jyotisha\.worktrees\chart-ephemeris-fixes-20260924 - 分支:
codex/chart-ephemeris-fixes-20260924 - 基线:
origin/staging=514951d7(代码提交824647f2) - BUG:1023 / 1024 / 1025 开工时仍空着,沿用任务书预留号。最大已占用号是 1022。没有占用 1026 及以后。
逐项
| 项 | 结果 | 说明 |
|---|---|---|
| T1 | 完成 | 0 年大运显示「0 年」,不展开子运,前后日期首尾相接。assembleChartView({layers:["chara"]}) 对真实引擎响应返回 ok。 |
| T2 | 完成 | 未缓存日期保留日期条,三段换成静态句。429 后点右箭头重试成功。挂载时的今天刷新和迟到的旧日期都不会盖住新日期。本命 /api/chart 按账户和出生资料短缓存,并把 request.signal 传进引擎调用。 |
| T3 | 完成 | 四种资料类失败都有「去填写出生资料」,链到 /?settings=chart,首页打开星盘资料。?settings=billing 的解析结果没改。 |
| T4 | 完成 | BUG 历史、DESIGN §15 / §16、VOICE 三句、CHANGELOG、本记录、真人清单和状态板同一提交。 |
真实 golden
本机没有仓库 .venv,Anaconda Python 3.11 能 import swisseph。fixture frontend/tests/fixtures/chara-zero-year-1985-08-03-beijing.golden.json 由下面的调用生成,没有手造引擎形状:
C:\Users\74082\anaconda3\python.exeJyotishAPIHandler.__new__()._compute_chart,再_compute_chara_dasha- 虚构 1985-08-03 03:59,纬度 39.9042,经度 116.4074,时区 8,
ayanamsa=raman,node_mode=mean,skip_vedastro_main_entry_overview,antardasha=true
生成结果 12 段,Sagittarius duration_years 为 0(debilitated)。scripts/jaimini.py 未改。
历史检索
开工读过 BUG-966、BUG-715、BUG-716、BUG-717、BUG-996、BUG-1016、BUG-1017,以及 chart-view / ephemeris / birth_profile_incomplete 的相关段。
- BUG-966 的「星历不得再上骨架 / 正在加载」还在。本单没有加骨架。它删掉未命中时清空状态的副作用,就是 BUG-1024。
- BUG-715 的失败分档还在。0 年以前会在 mapper 里抛
RangeError,被收成engine_bad_payload。现在 0 年是合法段,不再走这条失败。 - BUG-1016 的骨架例外仍只在星盘盘位。星历没有用。
- BUG-1017 的按需层失败出口没改。
- BUG-996:查询失败仍不是
birth_profile_incomplete。四种资料失败各自留原文,只是多了同一颗按钮。
行为说明
失败当天,左右箭头重试这一天,不先改日期。日历里另选一天仍会换日期。成功之后箭头恢复成前一天 / 后一天。
本命缓存键用的是账户 id 加上出生日期、时间、经纬、时区、岁差和交点,与 cachedPostEngine 同一组字段、同一 5 分钟 TTL。键的 path 是 /api/ephemeris/natal-chart,避免和星盘页略有不同的 /api/chart 请求体串结果。行运盘仍按所选日期现算。
测试
改代码前,在 frontend 跑下面这组,93 条,失败 0:
tests/ephemeris-page.test.tsx、tests/ephemeris-route.test.ts、tests/chart-page-view.test.tsx、tests/chart-page-hook.test.ts、tests/settings-url.test.ts、tests/home-shell-growth-contract.test.ts、tests/secondary-page-entry.test.ts、tests/billing-panel.test.ts
改完后同一组再加上 tests/ephemeris-page-lifecycle.test.tsx 和 tests/chart-view-zero-year.test.ts:104 条,失败 0。改前那 93 条里没有新增失败。
.\node_modules\.bin\tsc --noEmit:通过。npm run lint:0 error,121 条既有 warning。本次新文件没有新增 warning,也没有为了清 warning 改业务代码。- 没有改既有断言的期望值,所以没有「原值 / 新值 / 原因」三栏。
- 没有跑 Windows 全量
npm test,也不把别人机器上的 3809 / 56 写成这次的结果。 - 没有跑
next build,没有声称/、/chart、/ephemeris的 Static 标记在本机构建里复核过。源码没有把这三条改成动态路由。
没做的验证
- 没有浏览器登录。真人步骤在
docs/testing/chart-ephemeris-fixes-20260924.md,结果都是待验。 - 没有部署,没有对过 staging health。
- 没有推
origin/staging。功能分支可以另推origin,以回报里的远端核对为准。