# PROGRESS · 岁差 6 种(T6)与「我的报告」按钮配色(T7,BUG-1078)(2026-09-28) 任务书:`docs/tasks/TASK-chart-types-and-report-buttons-20260928.md`(T6、T7 及其 T8 文档部分)。T1–T5(星盘页)由另一执行方并行,本单未碰 `chart-page/*`、`chart-view-*`、`use-chart-page.ts`、`secondary-page-data.ts` 与任何 Python。产品 2026-09-28 授权直接执行(Claude fork 子代理)。 - 基线:`origin/staging` = `5dc977ef` - 分支 / 工作树:`codex/ayanamsa-report-buttons-20260928` / `.worktrees/ayanamsa-report-buttons-20260928`(本地提交,未推送) - 环境:Node v22.14.0(`/exec-daemon/node`),Linux;无 Docker;有 `/usr/bin/google-chrome`(无头)。 ## T6 岁差扩到 6 项 — 完成 - `frontend/src/lib/ayanamsa.ts`:`AYANAMSA_VALUES` = `raman, lahiri, kp, true_citra, true_pushya, fagan_bradley`;设置项新增 True Citra「以角宿一的实际位置定起点,和 Lahiri 只差约 1 角分。」、Fagan-Bradley「西方恒星占星常用,比 Lahiri 多约 0.9°。」。`resolveAyanamsa` 接受 `true_chitra` → `true_citra`(与 `scripts/ayanamsa_utils.py` 一致)。默认仍 Raman,`AYANAMSA_SWITCH_HINT` 原句保留。 - 数字核对(pyswisseph,1950 / 2000 / 2026 年 1 月 1 日):Fagan-Bradley − Lahiri = 0.8832°(恒定);True Citra − Lahiri = −0.0164° / −0.0171° / −0.0174°(约 1 角分)。 - **偏离任务书:标签写 True Citra,不是 True Chitra。** 星盘页参数表显示的是引擎的 `ayanamsa_display`(`AYANAMSA_DISPLAY_NAMES['true_citra'] = 'True Citra'`),报告的 `SAFE_AYANAMSA` 也是 True Citra;设置里写 Chitra 会让同一个值在两处拼法不同。本单不动 chart-view 与 Python,所以统一用引擎拼法。`true_chitra` 仍作为别名接受。 - **任务书遗漏:数据库 CHECK。** `profiles.ayanamsa` 有 `profiles_ayanamsa_check`(`20260903010000_profile_ayanamsa.sql`)只许旧 4 个值;只改前端会让保存新岁差 500。新增迁移 `frontend/supabase/migrations/20260928010000_profile_ayanamsa_six.sql`:只 drop / add 该 CHECK(放宽,AGENTS §7.6 允许同轮),不动列、默认值、授权、数据。`chart_profiles.ayanamsa` 无 CHECK;人物接口直写类型化列,`chart_profiles_fill_typed_from_json` 的 JSON 兜底(只认旧 4 值)不在写路径上,未改。**部署顺序:迁移先于代码**(staging 迁移本来就在部署前自动应用)。回滚代码后已存的新值会被旧代码 `resolveAyanamsa` 读成 Raman。 - 显示名:`ephemeris-view.ts` `AYANAMSA_SHORT_NAME` 补两项(星历页岁差说明句);`personal-report-generation.ts` 已有,未改;星盘页用引擎显示名,**无需改 chart-view 文件**。人物档案详情取 `AYANAMSA_OPTIONS` 的 label,自动跟随。 - 全链路:12 处 `resolveAyanamsa` / `AYANAMSA_VALUES`(咨询 route service、报告 worker、星盘 load、人物写入、账户 PATCH zod、mastra workflow zod、校正 payload 等)都从同一枚举取值,无第二份白名单;Python 侧 `normalize_ayanamsa_name` 与 CLI `choices=AYANAMSA_MODES` 已含两值。 - 测试: - `frontend/tests/ayanamsa.test.ts` 改既有断言(三栏): | 位置 | 原值 | 新值 | 原因 | | --- | --- | --- | --- | | 测试名 | `…accepts the four product values` | `…accepts the six product values` | 值从 4 个变 6 个 | | `AYANAMSA_VALUES` 断言 | `["raman","lahiri","kp","true_pushya"]` | `["raman","lahiri","kp","true_citra","true_pushya","fagan_bradley"]` | 产品 D4 | | 新增一行 | — | `djwhal_khul` → `raman` | 证明不放出的值仍走回退 | 另加 2 条:6 值逐一原样返回(含大写 / 连字符写法与 `true_chitra` 别名);设置列表顺序与标签、每个值都在 `ayanamsa_utils.py` 里。 - 新增 `frontend/tests/ayanamsa-six-paths-20260928.test.ts`(7 条):账户 PATCH 接受 6 个、拒绝 `djwhal_khul / sassanian / fagan / yukteshwar`;迁移源文本(只改 CHECK、恰好 6 值);账户行、人物写入与读回、星盘发给引擎的 `ayanamsa` 均为 `true_citra` / `fagan_bradley`;星历说明句;报告显示名。 - 新增 `frontend/tests/database-profile-ayanamsa-six.test.ts`(1 条,需 Docker,本机跳过):真实库上 6 值可写、3 个非法值被 `profiles_ayanamsa_check` 拒绝。 ## T7 我的报告按钮配色(BUG-1078)— 完成(真机欠) - **根因更正**:任务书与 Claude 首轮判断是「深色主题下近黑字」。实测(本地 `next build` CSS + 无头 Chrome `getComputedStyle`)不是:`globals.css` 顶部未分层的 `button { color: inherit; }` 压过 Tailwind 分层的 `text-primary-foreground`,实心 `