Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8
6.8 KiB
6.8 KiB
TASK · 星盘页大运 Tab 与西洋盘 Tab 改版(2026-09-24)
原型(产品 09-24 已同意全部设计,相位线一直显示):https://claude.ai/artifact/DYovEPMqD1xwNgna5xVTre
基线
origin/staging当前 head(含已部署1420471a)。分支codex/chart-dasha-western-redesign-20260924。- 串行:排在
TASK-chart-ephemeris-fixes-20260924.mdT1(Chara 0 年)合入之后——两单都改chart-dasha-tab.tsx/chart-view-mapper.ts的大运显示;本单沿用那一单定下的「0 年照实显示、灰色、不展开」口径。与TASK-chart-page-skeleton-wait已合入的西洋骨架(WesternWheelSvg skeleton+EMPTY_WESTERN_WHEEL)必须兼容。
事故实证(按 origin/staging)
大运:frontend/src/components/chart-page/chart-dasha-tab.tsx ChartDashaTab → 两个 Track(Vimshottari / Chara),每段大运 li.chart-page-dasha-period 下平铺全部子运 <ul>:Vimshottari 9×9 = 81 行、Chara 12×12 = 144 行,无折叠、无"现在"摘要、无时间总览。CSS globals.css .chart-page-dasha*。
西洋盘:frontend/src/components/chart-page/western-wheel-svg.tsx:viewBox 0 0 400 400,OUTER=188 / ZODIAC=168 / HOUSE=128 / INNER=78,CSS .chart-page-western-svg text { font-size:16px } 统一 16 号;
- 星座名在 r=178 的 20 单位窄带内,近水平轴时压过两条环线;
- 宫位号放在宫头角度(不是宫中),被宫头线穿过;
- 行星两字中文名在 r=113,与宫位号同一带,无避让——虚构 1990-01-01 12:00 北京实测 23 处标签重叠(摩羯座五星群互相重叠并压宫位号);
- 「升」字
x = polar(192,180).x - 8 = 0、textAnchor="end"→ 画在 viewBox 外; - 无度数、无逆行标记;SVG 无
max-width,窄屏一栏时盘撑满面板(可达 ~1050px)。 chart-western-tab.tsx相位表复用.chart-page-planet-table(min-width: 34rem、nowrap),侧栏约 480px 时横向溢出;整个 Tab 没有行星位置表。
根因
大运:信息全量平铺、缺层级。西洋盘:固定字号 + 行星与宫位号同圈 + 无碰撞处理 + 标签坐标错误 + 继承了印度盘表格宽度。
决策记录(产品 2026-09-24,照原型)
大运 Tab
- D1 每条轨道顶部「现在」卡:当前大运 / 当前小运 / 小运剩余(月)。
- D2 横向时间条:整个周期按时长分段上色,当前段描边,竖线标今天,轴两端写起止
YYYY.MM。 - D3 大运列表默认折叠,只展开当前段;子运逐行
名称 · YYYY.MM – YYYY.MM,当前子运高亮;日期等宽数字右对齐。 - D4 0 年段:灰色、
0 年、不可展开(沿用 chart-ephemeris-fixes D1)。 - D5 布局:≥1024px 左 Vimshottari、右 Chara 并排;窄屏上下排。底部保留双轨说明句(现
dualTrackNote)。 - D6 折叠用原生
<details>/<summary>,不引第三方;当前段open。
西洋盘 Tab
- D7 盘
viewBox 0 0 520 520,容器max-width: 520px居中。三圈:外圈星座(按元素用四个语义色:火 / 土 / 风 / 水,token 化、深浅色各一套)、中圈行星(符号 + 星座内度数,逆行加 ℞)、内圈宫位号(放宫中角度,不压线)。 - D8 行星避让:按黄经排序,相邻显示角 < 11° 时沿圆周推开(迭代),在真实位置画外圈刻度并用细线连到显示位置。
- D9 ASC / MC 在盘内标注,四轴线加粗;不再画盘外「升」。
- D10 相位线一直显示,和谐(三分 / 六分 / 合)绿、紧张(刑 / 冲)红,使用语义 token;点行星或行星表行 → 只高亮该星及其相位,其它变淡,再点取消;相位表同步只列该星相位。
- D11 右侧:要点 chips(上升 / 太阳 / 月亮 / 元素最多 / 星群)→ 新增行星位置表(星体、星座、度数、宫位、逆行)→ 主要相位表(星体对、相位、容许度)→ 口径说明句。表格用新的
.chart-page-western-table,不继承min-width: 34rem;外包overflow-x:auto。 - D12 数据全部来自现有
view.western(planets、houses、aspects、ascendantLongitude、MC 若无字段则从第 10 宫头取);不新增请求、不改接口字段。若缺字段,写进进度记录,不在前端编造。 - D13 骨架兼容:
skeleton模式仍只画三圈与分割线,不画星座名 / 行星 / 宫位号 / 相位。
硬红线
- 不改
/api/chart-view与引擎;不改HEAVY_COMPUTE_PATHS/ 并发。 - 不复制印度盘几何;西洋盘只改
western-wheel-svg.tsx自身。 - 新颜色必须是
:roottoken 且有暗色值;不得在组件里写死色值。 - 无 spinner;骨架规则不变。44px 触控;断点沿用 1024(星盘既有)。
/chart保持○ Static;既有断言三栏;测试总数不低于基线。
任务分解
- T1 大运(
chart-dasha-tab.tsx、chart-view-mapper.ts若需补"当前子运"字段、globals.css)。验收:chart-page-view.test.tsx渲染 golden(真实引擎 fixture)→ 每轨一个「现在」卡、时间条段数 = 大运数、仅当前段open、0 年段不可展开;无 81/144 行平铺(未展开段不渲染子运li,或渲染在关闭的<details>内均可,但默认不可见)。 - T2 西洋盘(
western-wheel-svg.tsx、chart-western-tab.tsx、globals.css)。验收:纯函数layoutWesternLabels(planets)测试——虚构 1990-01-01 golden 下任意两颗行星显示角间距 ≥ 11°、每个标签包围盒在 viewBox 内、宫位号角度 = 宫中;无「升」出界;行星表行数 = 行星数;点选过滤相位表;骨架模式无文字节点。 - T3 记录:DESIGN §15 大运 / 西洋小节(结构、颜色 token、避让规则);VOICE(「现在」卡文案、「小运剩余 N 个月」);CHANGELOG;PROGRESS;
docs/testing/chart-dasha-western-20260924.md(375 / 1280 宽度;摩羯星群不重叠;点行星过滤;暗色模式元素色可读)。产品改版,不开 BUG 号(西洋溢出若需记账可并入一条 BUG-1029,开工时定)。
让步顺序
- 避让迭代在极端星群(≥6 颗落 30° 内)仍重叠时,允许第二层半径(两行错开),不得缩小字号到 < 12。
- 若
view.western无 MC,允许只标 ASC,并写进进度记录。 - 不得让步:D8(避让)、D10(相位线常显)、红线 1、红线 3。
开工前置命令
git fetch origin --prune
git log --oneline origin/staging | grep -i "chara\|0 年\|1023" # 确认 chart-ephemeris-fixes T1 已合入
git worktree add -b codex/chart-dasha-western-redesign-20260924 .worktrees/chart-dasha-western-redesign-20260924 origin/staging
cd .worktrees/chart-dasha-western-redesign-20260924/frontend
./node_modules/.bin/tsc --noEmit && npm run lint && npm test 2>&1 | tail -5