Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8
5.3 KiB
5.3 KiB
TASK · 0925 收尾单:西洋盘标签偏移上限 + 删除后跳错人 + 人物接口故障降级(2026-09-25)
基线
origin/staging含4d801e53(三份修复单合并提交)。分支codex/round-0925-followup-20260925。- Claude 09-25 验收
4d801e53:星盘档案修复(两个 P0、两个 P1、七个 P2)、报告读者版修复(年运表逐年填齐、Bhava Bala 保留、泄漏 0)、西洋盘修复(3000 张真实盘标签重叠 0%)均通过;全量失败名单与fabe0114逐条一致、新增 0;四路由○、首屏 gzip 130,933 B 不变。以下为验收新发现。
事故实证
A · 西洋盘标签离行星太远(P1,4d801e53 自身引入)
frontend/src/lib/western-wheel-layout.ts:挤不下时标签可在 ±180° 内搜索位置,用长引线连回行星刻度。同样 3000 张真实引擎盘(1930–2025、纬度 ±60°、Placidus):
| 指标 | 48fe4daf |
4d801e53 |
|---|---|---|
| 有标签偏离行星 > 30° 的盘 | 2.4% | 48% |
| > 45° | 1 张 | 20% |
| > 60° | 0 | 7% |
| 最大偏移 | 54.9° | 115° |
| 单标签中位 / p99 | 0° / 24° | 5° / 60° |
- 26.5% 的盘至少一个标签落在离行星所在星座两个及以上的扇区(例:木星 344.8° 在双鱼,标签画在 79.9° 双子扇区)。标签只写星座内度数,读者会按标签位置读星座 → 读错。没有测试限制偏移量。可能成因:字形碰撞框 2.2 倍字高、11° 最小间距、35 单位中心间距三者叠加。
B · 删除对话后打开上一个人的对话(P2)
4d801e53起 Home 的sessions合并保留所有人物的行(只增不删),侧栏按人过滤,但回退选择没过滤:use-session-management.tsdeleteSession → activateFallbackSession(nextSessions) → fallbackSessionId取第一条非校正行;page.tsx(约 330 行)activeSession ?? sessions.find(非校正)、use-consultation-run.ts(约 623 行)同型。
C · 人物列表接口故障连累聊天(P2)
session-list-context.tsxloadSessionList现为 account →/api/chart-profiles→ sessions 串行;人物接口失败 → 首页可恢复错误屏,历史与聊天不可用;/api/account在loadSessionList与loadSubjectCatalog各请求一次。
D · 其它(P3):chart-library-panel.tsx 仍在(执行方删除权限被拒);服务端删除的会话仍留在内存列表(合并只增改);行星点击圆几乎总有重叠(中心间距只需 > 35、半径 34),独占区在邻居旁不足 44px;scripts/jyotish_engine.py 约 14432 行调用未定义的 calc_panchadhikari_year_lord 被 except Exception 吞掉(基线即如此)。
决策记录(产品 2026-09-25)
- D1 标签偏移上限 30°:任何行星标签的显示角与真实黄经相差 ≤ 30°;两层半径放不下时启用第三圈(更内侧,仍 ≥ 字号间距、不压宫位号),仍不得重叠。字号不得 < 12。
- D2 删除 / 回退只在当前人物的会话里选:三处回退统一用
sessionMatchesSubject过滤;当前人物无其他会话时新建空对话。服务端已删的行在下次列表刷新时从内存移除。 - D3 人物接口故障降级为本人:
/api/chart-profiles失败时按本人加载历史与对话,不进错误屏;切换器显示「暂时读不到其他人」且只列本人;恢复后自动刷新。/api/account只请求一次(共享结果)。
硬红线
- 西洋盘:3000 张盘(同
4d801e53验收口径,固定种子)重叠率仍 0%,且所有标签偏移 ≤ 30°、无标签落在相邻星座以外扇区;测试把 30° 与"不越过相邻星座"写成断言。 - 全量失败名单与开工基线逐条一致、新增 0(Node 22 + Linux);推 staging 前跑全量。
- 改动断言写三栏(写在测试文件内,不只写 PROGRESS)。
- 不改引擎、接口字段、数据库。
任务分解
- T1 标签布局上限 + 第三圈(
western-wheel-layout.ts、western-wheel-svg.tsx、测试扫描)。 - T2 回退按人过滤 + 删除行同步(
use-session-management.ts、page.tsx、use-consultation-run.ts、subject-session-merge.ts)。验收:B 当前时删 B 的最后一条 → 新建 B 的空对话,不打开 A 的。 - T3 人物接口故障降级 + 账户只请求一次(
session-list-context.tsx、current-subject.ts、current-subject-switcher.tsx)。 - T4 P3:删
chart-library-panel.tsx(需要有删除权限的执行者;若再被拒,写 BLOCKED 并交产品手动删除);点击圆独占区 ≥ 44px 或改为按最近行星判定;calc_panchadhikari_year_lord调用改为显式判断存在(不吞异常)或删除死调用,并在 BUG 记录说明。 - T5 记录:BUG-1034(标签偏移)、BUG-1035(删后跳错人)、BUG-1036(人物接口故障连累聊天)(写单时最大号已是 BUG-1033),开工时核对编号;PROGRESS;更新
docs/testing/people-archive-p1-20260924.md与西洋盘真机清单。
开工前置命令
git fetch origin --prune
node -v # 22.x
git worktree add -b codex/round-0925-followup-20260925 .worktrees/round-0925-followup-20260925 origin/staging
cd .worktrees/round-0925-followup-20260925/frontend && npx tsx --test tests/western-wheel-layout.test.ts tests/session-list-lifecycle.test.tsx