# PROGRESS · 星盘 + 星历 R5 任务书:`docs/tasks/TASK-cend-surfaces-claude-alignment-20260916.md` 的 R5 执行方式:**直接执行模式**(subagent) 分支:`codex/cend-chart-eph-20260916` 基线:`origin/staging` = `50ce02c8`(R4 次级页外壳合入后) BUG 段:不占用(产品改造,未发现真实缺陷) --- ## 开工基线实测 在 `50ce02c8` 干净检出、`npm ci` 之后实测: | 项 | 基线值 | |---|---| | `tsc --noEmit` | 0 错 | | `npm run lint` | 0 error / **118 warning** | | `npm test` | tests **3350** · pass 3304 · fail **31** · skipped 15 | | `next build` 路由标记 | `/` `○` · `/chart` `○` · `/ephemeris` `○` · `/reports` `ƒ` | | 主 CSS chunk | 242,608 字节(gzip **36,745**) | 31 条失败全部是无 Docker 的既有缺口,清单落在 `/tmp` 基线文件,改后逐条对比。 --- ## T5.1 · 星盘页 ### 做了什么 | 任务书要求 | 做法 | |---|---| | 五个体系 tab 改顶栏下方下划线式 tab 行 | `.chart-page-tabs` 从「五枚描边药丸 + 可换行」改成一条 `flex-wrap: nowrap` + 自身横滚的下划线行,整行 1px 底线,当前项 2px 下划线。JSX 里眉标从 tab 行**之上**移到**之下**,让 tab 行直接接住 46px 顶栏 | | 分盘 chips 保留、视觉降一级 | `.chart-page-chip` 从与 tab 共用的药丸规则里拆出来:去描边、去卡面、caption 字号、三级文字色,当前项只留一块浅底。触摸目标仍 44px | | 参数收进统一键值表 | 新增 `chart-param-table.tsx`(由 `chart-param-lines.tsx` 改名而来),八行 `dl` 键值表。删除 `.chart-page-center-card` / `-compact` / `-extra` / `.chart-page-params-below` / `.chart-page-boundary-desktop` 五个类及其 767/768 开关块 | | 边界句放表下方、文案一字不改 | `{view.vedic.boundary}` 直接跟在表后。改前 DOM 里它出现**两次**(一次给手机一次给桌面,靠 CSS 藏一个),现在只渲染一次。**句子本身是服务端字符串,没有被碰过** | | 行星表加横向滚动容器 | `.chart-page-planet-table-wrap` 加 `min-width: 0`(缺它 grid item 按内容定宽,表格撑宽页面而不是滚动),表加 `min-width: 26rem`。**三张**表全部包上:印度盘宿度、西洋相位、七政十一曜(原来只有第一张有 wrap) | 眉标 `CHART_VIEW_COPY.eyebrow`(「主盘直接算 · 分盘按需 · 不消耗点数」,BUG-717)保留,只换了位置。 按需 layer 拉取(`onNeedLayer("chara"/"western"/"qizheng"/"varga")`)、`CHART_VIEW_COPY.waitingLayer` 等待文案、`waitingChart` / `waitingVarga` 全部未动,没有引入 spinner 或骨架。 ### 顺带修掉的一处错位 `.chart-page-eyebrow` 原本同时吃 `.chart-page-body` 的 `padding-inline` 和 767 块里给它自己的一份,手机上比 tab 行多缩进一个 `--space-4`。眉标移到 tab 行下方后这个错位会直接看得见,所以把 `.chart-page-eyebrow` 从那条共享选择器列表里摘掉了——**只摘这一个选择器**,同列表里 R6 的 `.report-center-body` / `.report-center-message` 一个没动。 --- ## T5.2 · 星历页 | 任务书要求 | 做法 | |---|---| | 日期导航改居中 `‹ 日期 ›` | 两枚 `size="icon"`(44px)箭头按钮夹住日期;箭头字形 `aria-hidden`,可访问名用 `EPHEMERIS_COPY.previousDay` / `nextDay`,读屏拿到的仍是「前一天」「后一天」 | | 「今天」非今日时以文字按钮出现在日期下方 | `isToday ? null :