Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8
2.8 KiB
2.8 KiB
TASK · 西洋盘 ASC / MC 标签与行星重叠 + 点击区过小 + 文档陈旧行(2026-09-25)
基线
origin/staging = fabe0114(已部署)。分支codex/chart-western-fix-20260925。只动frontend/src/components/chart-page/western-wheel-svg.tsx、frontend/src/lib/western-wheel-layout.ts与其测试、文档;与另两份修复单不交叉。- Claude 09-25 验收:星盘 / 星历修复(
19ea0f06)与大运 / 西洋改版(5a2d9da9)逐项通过;两个 golden 已按真实引擎复算(Chara 逐字节一致;西洋 11 颗行星与 12 宫头一致)。以下是未通过项。
事故实证
- P1:ASC、MC 标签在 r=162(两层行星半径 136 与 188 之间)、偏离轴线 9°,不参与避让。排查用真实布局函数模拟 3000 张随机盘:「ASC」与行星标签重叠约 34%,「MC」约 3%,行星标签之间在启用第二半径后仍约 6%。典型情形是第 12 宫有行星、离上升点几度。1990 年测试盘上升附近恰好无行星,所以测试通过。违背本次改版"消除重叠"的目的。
- P3:行星点击区
r=22(520 viewBox),375px 屏幕约 31px,低于 44px;西洋 fixture 是从真实值改写成视图键的子集(值真、形状手造,AGENTS §7.4 偏弱);docs/BUG_HISTORY.mdBUG-1025 的修复 / 验证行与CHANGELOG.md(首页拆分条目)仍写?settings=chart打开星盘资料,实际已跳/people。
决策记录
- D1 ASC / MC 纳入避让集合(与行星同一轮松弛计算,轴点标签视为固定锚点、行星让位),或给轴点独立半径且与两层行星半径都保持 ≥ 字号的间距;二选一,写进 PROGRESS。
- D2 避让测试改为扫描:用真实引擎生成至少 50 张虚构盘(或排查用的随机生成器 + 真实布局函数,固定种子),断言任意两标签(含 ASC / MC)包围盒不相交;允许的残余重叠率写成常量且 ≤ 1%。
- D3 行星点击区在 375px 下 ≥ 44px(透明命中圆,不改视觉)。
- D4 西洋 fixture 改为保存真实引擎原始响应,再由测试内的 mapper 转换;文档两处陈旧行更正。
硬红线
不改引擎与接口;不缩小字号到 < 12;相位线常显不变;骨架模式无文字不变;全量失败名单与基线逐条一致(Node 22 + Linux);既有断言三栏。
开工前置命令
git fetch origin --prune
git worktree add -b codex/chart-western-fix-20260925 .worktrees/chart-western-fix-20260925 origin/staging
cd .worktrees/chart-western-fix-20260925/frontend && npx tsx --test tests/western-wheel-layout.test.ts tests/chart-page-view.test.tsx
BUG 编号
沿用 BUG-1029 之后的号:若需记账用 people-archive-p1-fix 之后的下一个号,开工时核对。