feat: fold dasha periods and redraw the western wheel
The dasha tab leads with a now card and a duration bar, and keeps sub-periods inside the current details element. A zero-year Chara row stays grey, shows 0 年, and cannot expand. The tropical wheel uses a 520 view box, element bands, separated planet labels, and aspect lines that stay visible while a selected body is highlighted.
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
# PROGRESS · 星盘大运 Tab 与西洋盘 Tab 改版(2026-09-25)
|
||||
|
||||
## 当前结论
|
||||
|
||||
T1、T2、T3 都已完成。让步 1 用了第二层半径,但触发条件比任务书写的「≥6 颗落在 30° 内」更宽:虚构 1990-01-01 的摩羯是 5 颗,推到 11° 之后 17 号字仍然叠,所以改用 188 / 136 两层半径,没有把字号降到 12 以下。让步 2 用了:`view.western` 没有 MC 字段,盘内 MC 取第 10 宫头。在这份 Placidus 引擎输出里,第 10 宫头就是 MC。没有改接口、引擎、`scripts/jaimini.py`、`HEAVY_COMPUTE_PATHS`、数据库或 workflow。没有开 BUG 号。BUG-1029 开工时仍空着,本单不用。
|
||||
|
||||
浏览器登录验收没做。没有推 `staging`,也没有推 `main`。功能分支可以备份到 origin。
|
||||
|
||||
- 工作树:`G:\Ferti\Jyotisha\.worktrees\chart-dasha-western-redesign-20260924`
|
||||
- 分支:`codex/chart-dasha-western-redesign-20260924`
|
||||
- 基线:`origin/staging` = `9167d75e`(0 年大运实现 `19ea0f06` 已在其中)
|
||||
|
||||
## 逐项
|
||||
|
||||
| 项 | 结果 | 说明 |
|
||||
| --- | --- | --- |
|
||||
| T1 | 完成 | 每轨一张「现在」卡、一条时间条。golden 上时间条段数等于大运数。只有当前段 `<details open>`。0 年段灰色、写「0 年」、不是 `<details>`,时间条上没有它。 |
|
||||
| T2 | 完成 | `layoutWesternLabels` 在 1990-01-01 引擎黄经上把任意两颗显示角拉开到 ≥ 11°,标签框在 520 viewBox 内且互不重叠。宫位号在宫中。点选过滤相位表。骨架只有三圈和 12 条分割线。 |
|
||||
| T3 | 完成 | DESIGN §15、VOICE、CHANGELOG、本记录、真人清单、状态板。 |
|
||||
|
||||
## 缺的 western 字段
|
||||
|
||||
没有向 `/api/chart-view` 或 `/api/western` 要新字段。
|
||||
|
||||
- 没有 `mc`。原始包有 `natal.mc`,mapper 没往 `view.western` 放。盘内 MC 用第 10 宫 `longitude`。
|
||||
- 没有行星符号字段。符号按现有 `id` 映射,天王、海王、冥王不在那套 9 字形字体里,落到系统符号字体。
|
||||
- 没有星群字段。同一 `signLabel` 至少 3 颗才写「星群」。
|
||||
- `modes` 仍在 `view.western` 上,D11 的 chips 没有模式,页面不再画「元素 / 模式」那一段计数。
|
||||
- 相位的 `left` / `right` 已是中文名,点选按中文名对,不是行星 id。
|
||||
- 大运「现在」卡的月份用 mapper 已经在用的 `asOf`,加在 `view.dasha.asOf` 上,不是新的引擎请求。
|
||||
|
||||
## 测试
|
||||
|
||||
改代码前,在 `frontend`:
|
||||
|
||||
- `npx tsx --test tests/chart-page-view.test.tsx`:19 通过,0 失败
|
||||
- `npx tsx --test tests/chart-view-zero-year.test.ts`:3 通过,0 失败
|
||||
|
||||
改完后同一组加上 `tests/western-wheel-layout.test.ts`、`tests/dark-theme-contract.test.ts`、`tests/class-name-definition-contract.test.ts`、`tests/chart-view-route.test.ts`:失败 0。改前那 22 条里没有新增失败。
|
||||
|
||||
- `.\node_modules\.bin\tsc --noEmit`:通过。
|
||||
- `npm run lint`:0 error,121 条既有 warning。本次没有新增 warning,也没有为了清 warning 改业务代码。
|
||||
- 没有改既有断言的期望值,所以没有「原值 / 新值 / 原因」三栏。新增的是大运折叠、西洋过滤和标签几何。
|
||||
- 没有跑 `npm test`,没有跑 `next build`。源码没有把 `/chart` 改成动态路由,但不能声称本机构建复核过 Static。
|
||||
- 没有登录浏览器,375 / 1280、摩羯星群、点行星、暗色都写在 `docs/testing/chart-dasha-western-20260924.md`,结果是待验。
|
||||
|
||||
## 0 年段
|
||||
|
||||
仍不可展开。显示「0 年」和「本段时长为 0,不展开」,不进时间条,子运列表不渲染。
|
||||
@@ -202,7 +202,7 @@
|
||||
|
||||
| 任务书 | 进度 | 主题 | 状态 | 落点 |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| `TASK-chart-dasha-western-redesign-20260924.md` | — | **大运 / 西洋盘改版**(原型 https://claude.ai/artifact/DYovEPMqD1xwNgna5xVTre ,产品 09-24 全部同意,相位线常显):大运「现在」卡 + 时间条 + 默认折叠(原 81/144 行平铺);西洋盘 520 三圈、行星避让 + 引线、宫号居宫中、ASC/MC 盘内、行星位置表、点选过滤相位。排在 chart-ephemeris-fixes T1 之后 | 待领取 | — |
|
||||
| `TASK-chart-dasha-western-redesign-20260924.md` | `PROGRESS-chart-dasha-western-redesign-20260924.md` | **大运 / 西洋盘改版**(原型 https://claude.ai/artifact/DYovEPMqD1xwNgna5xVTre ,产品 09-24 全部同意,相位线常显):大运「现在」卡 + 时间条 + 默认折叠(原 81/144 行平铺);西洋盘 520 三圈、行星避让 + 引线、宫号居宫中、ASC/MC 盘内、行星位置表、点选过滤相位。排在 chart-ephemeris-fixes T1 之后 | 待验收 | — |
|
||||
| `TASK-chart-ephemeris-fixes-20260924.md` | `PROGRESS-chart-ephemeris-fixes-20260924.md` | **Chara 0 年大运崩溃 + 星历切日期旧数据 + 星盘无资料空状态(BUG-1023/1024/1025)**:mapper 0/0 → `RangeError`(约 7.8% 星盘,产品定照实显示 0 年、不改引擎);BUG-966 删掉重置致日期与数据分叉(回归);无资料只有一句话,加「去填写出生资料」+ `?settings=chart` 深链(T3 排在 home-slow-network 之后)。大运 / 西洋版式重做不在本单 | 待验收 | `19ea0f06` |
|
||||
| `TASK-chart-page-skeleton-wait-20260924.md` | `PROGRESS-chart-page-skeleton-wait-20260924.md` | **星盘页骨架盘等待态 + 三个「永远还没拿到」死角**:「这一张盘还没拿到。」只代表 `view === null`,是唯一等待态,失败各有句子;但客户端无超时(A)、401 跳转前(B)、分盘层失败 / 429 后 `ChartVedicTab` 只看 `!selected` 不看 pending(C)三条路都让这句永远挂着。**产品 09-24 拍板推翻 09-18 方案一(BUG-966)**:星盘页盘位用骨架盘 + 呼吸动效(复用 `VedicChartSvg` 空模型,不复制几何;`prefers-reduced-motion` 静止),范围只限星盘页会出盘轮的位置,首页 / 侧栏 / 星历 / 报告的「不放骨架」合同不动;`AGENTS.md` §6 与 `DESIGN.md` §9 / §15 追加例外。三死角出口:客户端 25s 超时 → `timedOut` 句、401 先写失败体、按层失败态 `layerFailures`(429 独立档,BUG-715/723)。BUG-1016 / 1017 | 已验收(Claude 09-24:红线全绿、+46 测试、失败名单同基线、四路由标记与 gzip 同基线;BUG-1016/1017 resolved) | `1420471a`(staging 已部署);真机清单欠 |
|
||||
| `TASK-smalltalk-test-stdout-mock-20260921.md` | `PROGRESS-smalltalk-test-stdout-mock-20260921.md` | **测试基础设施(BUG-995)**:`consultation-smalltalk.test.ts` 为验证「SDK 不得把私密文本写进日志」,用 `t.mock.method(process.stdout/stderr, "write", …)` 全局接管标准输出——而 `node:test` 的 TAP 报告也走 `process.stdout`,于是运行器自己的 `# Subtest:` / `ok` 行被吞进测试的 `logs` 数组。实测四次全量:`default Mastra adapter` 四条用例只上报 4 / 2 / 1 / 1 条(`Subtest` 声明本身就少,不是 grep 锚点问题),`# tests` 因此 ±3 抖;单跑该文件 33 条静态展开只报 30 条,仅循环最后一个 `provider_error` 稳定可见。**更要紧**:注入必失败探针后,`invalid_schema` / `bad_json` 只剩一行 `not ok 1 - <文件绝对路径>`,**没有用例名、没有断言消息**(退出码仍是 1,门禁不会漏掉失败,不夸大)。定位 BUG-987 时靠的就是从门禁日志 grep `not ok` 抓用例名,红在这三条上那条路会断。**决策**:mock 改为记录后**透传给原始 `write`**(保留隐私断言,不换报告通道,不改 `npm test` 脚本);F3 把「比用例名列表 diff、不比 `# tests` 总数」写进 `frontend/AGENTS.md`。全仓只此一个文件用了这个手法(已 grep 确认)| 待验收 | `2503c019` |
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
# 星盘大运与西洋盘改版(2026-09-25)
|
||||
|
||||
状态:本环境没有登录浏览器,下面每条都还没在真人浏览器里走过。自动化锁了渲染、折叠、0 年段和标签几何,不能代替这张表。只用虚构盘:1990-01-01 12:00 北京,以及已入库的 1985-08-03 03:59 北京。不要写入真实出生资料。
|
||||
|
||||
| 项目 | 操作 | 通过标准 | 结果 |
|
||||
| --- | --- | --- | --- |
|
||||
| 窄屏 375 | 打开星盘,点「大运」,再点「西洋盘」 | 大运上下排,不出现整页横滚。西洋盘不超过屏宽,相位表和行星表在自己的盒子里横滚。可点的大运行和表行至少 44px。没有转圈或「正在加载」 | 待验 |
|
||||
| 宽屏 1280 | 同一张盘,窗口放到 1280 | 大运左 Vimshottari、右 Chara。西洋盘居中且不超过 520px,右栏依次是要点、行星位置、主要相位、口径说明 | 待验 |
|
||||
| 摩羯星群 | 用虚构 1990-01-01 12:00 北京打开西洋盘 | 摩羯里的行星名和度数不互相压住,也不压星座名、宫位号。盘外没有单独一个「升」字。ASC、MC 在盘内 | 待验 |
|
||||
| 点行星 | 点盘上的太阳,再点一次;也点行星表里的同一行 | 相位线一直都在。点中后只突出太阳和它的相位,相位表只剩太阳。再点恢复全部 | 待验 |
|
||||
| 0 年大运 | 用虚构 1985-08-03 03:59 北京打开大运 | 射手那段是灰色「0 年」,不能展开,没有子运。时间条上没有这段。别的当前段默认展开 | 待验 |
|
||||
| 暗色 | 系统或页面切到暗色,看西洋盘星座环 | 火土风水四色还能分清,星座名在色块上读得清。相位的绿和红不是亮色模式下的那两个深色 | 待验 |
|
||||
|
||||
部署后还要核对 staging `/api/health` 的 `deployment.gitCommit`。本清单未走完之前,不能写成浏览器已验收。
|
||||
Reference in New Issue
Block a user