fix: keep western labels near their planets and chats on the current person
Cap planet captions at 30 degrees with a third ring, fall back only within the current person's sessions, and load self when the people catalog fails.
This commit is contained in:
@@ -13827,3 +13827,60 @@
|
||||
- 相关记录:BUG-906、BUG-1016、BUG-1017;BUG-1025旧入口文档本轮按历史与现状分开更正。
|
||||
- 复发自:西洋盘改版的布局覆盖不足。旧单盘golden缺少轴点附近拥挤情形,估算字框未覆盖真实字体。
|
||||
- 修复版本:`codex/chart-western-fix-20260925`工作树,未提交、未推送、未部署。
|
||||
|
||||
## BUG-1034 | 西洋盘标签为避让离开行星所在星座
|
||||
|
||||
- 状态:待验收(代码已落地,未部署)
|
||||
- 首次发现 / 最近更新:2026-09-25 / 2026-09-25
|
||||
- 影响面:`western-wheel-layout.ts`、`western-wheel-svg.tsx`。不改黄经、宫头或接口。
|
||||
- 用户现象:标签只写星座内度数。避让把标签推到另一个星座扇区后,读者会按标签位置读错星座。验收抽样里 48% 的盘有标签偏离行星超过 30°,最大 115°。
|
||||
- 触发条件:`4d801e53` 起,两圈放不下时在 ±180° 内搜索位置,并用长引线连回行星。
|
||||
- 根因:字形碰撞框、同环最小间距和命中圆中心距叠在一起,搜索又没有偏移上限。
|
||||
- 修复:显示角与真实黄经相差不超过 30°,且必须落在本星座或相邻星座。两圈放不下时使用更内侧的第三圈。文字盒和命中圆中心仍要避开已占位置。相交的点击圆按最近圆心归属。
|
||||
- 验证:Node 22 定向测试里,1990-01-01 夹具、64 张真实引擎虚构盘重叠为 0,且每张标签偏移 ≤30°、不越过相邻星座。固定种子分散盘重叠率 ≤1%。45° 内塞进 11 颗星的几何压力盘不再要求零重叠。
|
||||
- 防复发:渲染结果上的 `data-longitude` / `data-display-longitude` 被测试断言 30° 与相邻星座。真实引擎 64 盘仍要求重叠为 0。
|
||||
- 相关记录:BUG-1033。
|
||||
- 复发自:BUG-1033 的避让搜索没有偏移上限。
|
||||
- 修复版本:`codex/round-0925-followup-20260925`,未部署。
|
||||
|
||||
## BUG-1035 | 删除当前人物的对话后打开另一个人的对话
|
||||
|
||||
- 状态:待验收(代码已落地,未部署)
|
||||
- 首次发现 / 最近更新:2026-09-25 / 2026-09-25
|
||||
- 影响面:会话删除回退、首页当前会话推导、咨询保存失败回退、人物列表合并。
|
||||
- 用户现象:当前看的是 B 时,删掉 B 的最后一条对话,会打开 A 的对话。
|
||||
- 触发条件:内存里的会话列表按人保留、侧栏按人过滤,但回退选择取的是整份列表里第一条非校正会话。
|
||||
- 根因:三处回退没有用 `sessionMatchesSubject`。列表合并只增改,服务端已删除的行会留在内存里。
|
||||
- 修复:回退先按当前人物过滤。这个人没有其他会话时新建一段空对话。某个人的列表被完整刷新时,服务器不再返回的行从内存移除;未保存的空草稿和其他人的行保留。
|
||||
- 验证:定向测试锁住回退过滤、首页第二条查找,以及完整刷新会丢掉该人物已不在返回里的有内容会话。
|
||||
- 防复发:源码合同要求回退调用带 `sessionMatchesSubject` 的过滤。
|
||||
- 相关记录:BUG-1030。
|
||||
- 修复版本:`codex/round-0925-followup-20260925`,未部署。
|
||||
|
||||
## BUG-1036 | 人物列表接口失败时整页聊天不可用
|
||||
|
||||
- 状态:待验收(代码已落地,未部署)
|
||||
- 首次发现 / 最近更新:2026-09-25 / 2026-09-25
|
||||
- 影响面:首页会话加载、人物目录、顶栏切换器。
|
||||
- 用户现象:`/api/chart-profiles` 失败后,首页进入可恢复错误屏,历史和聊天都打不开。同一次打开里 `/api/account` 被请求两次。
|
||||
- 触发条件:会话列表先读账户,再串行读人物目录;人物目录失败被当成整个列表失败。
|
||||
- 根因:`loadSubjectCatalog` 失败会抛出,会话列表把它写成 `session_list_unavailable`。账户读取没有共享。
|
||||
- 修复:人物目录失败时按本人加载历史和对话,不进错误屏。切换器写「暂时读不到其他人」,只列出本人。目录恢复后自动刷新。同一次加载里的账户请求共享同一个进行中的结果。
|
||||
- 验证:会话列表生命周期测试里,人物目录 503 不再产生 `session_list_unavailable`,账户仍在,且不是登出。
|
||||
- 防复发:该用例改为断言降级后的 boot,不再把目录故障当成整页失败。
|
||||
- 相关记录:BUG-1032。
|
||||
- 修复版本:`codex/round-0925-followup-20260925`,未部署。
|
||||
|
||||
## BUG-1037 | 年运命令里的年主辅助函数调用了不存在的名字
|
||||
|
||||
- 状态:待验收(死代码已删除,计算路径未改,未部署)
|
||||
- 首次发现 / 最近更新:2026-09-25 / 2026-09-25
|
||||
- 影响面:`scripts/jyotish_engine.py` 的 `cmd_tajika`。年运命令的实际返回仍走 `calc_year_lord`。
|
||||
- 用户现象:没有用户可见变化。未定义的 `calc_panchadhikari_year_lord` 包在从未被调用的 `_resolve_tajika_year_lord` 里,外面的 `except Exception` 会在一旦被接上时吞掉异常。
|
||||
- 触发条件:该辅助函数没有调用点。基线即如此。
|
||||
- 根因:上游辅助函数被嵌进来,但依赖的函数不在本仓,调用又被宽泛异常吞掉。
|
||||
- 修复:删除这段没有调用点的辅助函数。`year_lord` 结果仍由 `calc_year_lord` 产生。
|
||||
- 验证:源码中不再出现 `calc_panchadhikari_year_lord` 与 `_resolve_tajika_year_lord`。未改年运命令的返回字段。
|
||||
- 防复发:BUG 记录写明这是死代码删除,不是年运算法变更。
|
||||
- 相关记录:BUG-1028。
|
||||
- 修复版本:`codex/round-0925-followup-20260925`,未部署。
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
# PROGRESS · 0925 收尾单(2026-09-25)
|
||||
|
||||
## 状态
|
||||
|
||||
代码在 `codex/round-0925-followup-20260925`,基线 `origin/staging` @ `b8712dad`。BUG-1034 / 1035 / 1036 / 1037。未部署。登录页、整页移动端、全量 `npm test` 与 `next build` 还没在这轮跑完时,不把定向通过写成全量通过。
|
||||
|
||||
## 做了什么
|
||||
|
||||
- T1:行星标签相对真实黄经不超过 30°,并且留在本星座或相邻星座。两圈不够时用半径 100 的第三圈。64 张真实引擎虚构盘重叠为 0。固定种子里行星铺开的那部分重叠率不超过 1%。45° 内放进 11 颗星的几何压力盘不再要求零重叠,原因写在测试文件的三栏说明里。
|
||||
- T2:删除、地址回退和保存失败的回退都先按当前人物过滤。当前人物没有其他会话时新建空对话。这个人的列表如果已经是完整一页,服务器不再返回的有内容会话会从内存去掉;没保存的空草稿和其他人的行还留着。
|
||||
- T3:`/api/chart-profiles` 失败时按本人加载历史,不进错误屏。切换器显示「暂时读不到其他人」,只列出本人,恢复后自动再读。同一次加载里的 `/api/account` 共用同一次进行中的请求。
|
||||
- T4:删除了没有引用的 `chart-library-panel.tsx`。点击圆重叠时按最近的行星圆心选择。`cmd_tajika` 里从未被调用、又引用了不存在函数的 `_resolve_tajika_year_lord` 已删除;年运命令仍用 `calc_year_lord`,返回字段没有改。
|
||||
|
||||
## 断言三栏
|
||||
|
||||
写在对应测试文件里,不在这里重复改口:西洋盘 11° 全局间距改为 30° 上限;512 张压力盘的零重叠改为分散盘 ≤1%;人物目录 503 不再期望整页 `session_list_unavailable`;首页和回退的会话查找加上当前人物过滤。
|
||||
|
||||
## 还没做
|
||||
|
||||
- 没有重新生成验收时那 3000 张引擎盘。自动化锁的是仓库里已有的 64 张真实引擎虚构盘,加上固定种子的分散盘。
|
||||
- 全量 `npm test` 这一轮是 3751 通过、88 失败。其中两条是本轮把账户读取挪走后,源码合同还在找旧的 `fetch("/api/account")` 和 `accountResponse.status`,已改到 `readBootAccount` 并复跑通过。其余失败名集中在数据库迁移、管理后台、技能包和部署脚本。
|
||||
- `tsc --noEmit` 通过。`npm run lint` 在改掉一处 `prefer-const` 后,当前文件无新增 error;全量 lint 的既有 warning 仍在。
|
||||
- `next build` 在这个工作树里先被 Turbopack 拒绝(`node_modules` 联接指向主检出)。改用 webpack 后编译和 TypeScript 都过了,收集页面数据时创建技能包符号链接被 Windows 拒绝(EPERM)。这不是这三处修复的编译错误。登录浏览器还没做。真人步骤补在 `docs/testing/people-archive-p1-20260924.md` 和 `docs/testing/chart-dasha-western-20260924.md`。
|
||||
@@ -206,7 +206,7 @@
|
||||
|
||||
| 任务书 | 进度 | 主题 | 状态 | 落点 |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| `TASK-round-0925-followup-20260925.md` | — | **0925 收尾单**:西洋盘标签为避让被推离行星(48% 盘 >30°、最大 115°,可能读错星座)→ 产品定偏移 ≤30° + 第三圈;删除对话后回退可能打开上一个人的对话;人物接口故障降级为本人不进错误屏、账户只请求一次;P3 删 chart-library-panel、点击区独占 44px、引擎死调用 | 待领取 | — |
|
||||
| `TASK-round-0925-followup-20260925.md` | `PROGRESS-round-0925-followup-20260925.md` | **0925 收尾单**:西洋盘标签偏移 ≤30° + 第三圈;删除后只在当前人物里回退;人物接口故障降级为本人;P3 删旧面板、点击按最近行星、删除年运死调用 | 待验收 | `codex/round-0925-followup-20260925`(BUG-1034/1035/1036/1037,未部署) |
|
||||
| `TASK-chart-western-fix-20260925.md` | `PROGRESS-chart-western-fix-20260925.md` | **西洋盘 ASC/MC 重叠**:固定锚点避让、真实引擎64盘与固定种子512盘扫描、343px盘宽命中≥44px;raw golden;文档陈旧行更正 | 已验收(重叠 0%);新 P1 标签偏移最大 115° → 收尾单 D1(产品定 ≤30° + 第三圈) | `4d801e53`(待部署) |
|
||||
| `TASK-chart-dasha-western-redesign-20260924.md` | `PROGRESS-chart-dasha-western-redesign-20260924.md` | **大运 / 西洋盘改版**(原型 https://claude.ai/artifact/DYovEPMqD1xwNgna5xVTre ,产品 09-24 全部同意,相位线常显):大运「现在」卡 + 时间条 + 默认折叠(原 81/144 行平铺);西洋盘 520 三圈、行星避让 + 引线、宫号居宫中、ASC/MC 盘内、行星位置表、点选过滤相位。排在 chart-ephemeris-fixes T1 之后 | 已验收,1 P1(ASC/MC 标签不参与避让,约 34% 盘重叠)→ chart-western-fix | `5a2d9da9`(已部署) |
|
||||
| `TASK-chart-ephemeris-fixes-20260924.md` | `PROGRESS-chart-ephemeris-fixes-20260924.md` | **Chara 0 年大运崩溃 + 星历切日期旧数据 + 星盘无资料空状态(BUG-1023/1024/1025)**:mapper 0/0 → `RangeError`(约 7.8% 星盘,产品定照实显示 0 年、不改引擎);BUG-966 删掉重置致日期与数据分叉(回归);无资料只有一句话,加「去填写出生资料」+ `?settings=chart` 深链(T3 排在 home-slow-network 之后)。大运 / 西洋版式重做不在本单 | 已验收(Claude 09-25;星历暖进重复拉取与首屏失败无重试来自 people-archive 提交,并入其修复单) | `19ea0f06`(已部署) |
|
||||
|
||||
@@ -11,6 +11,10 @@
|
||||
| 0 年大运 | 用虚构 1985-08-03 03:59 北京打开大运 | 射手那段是灰色「0 年」,不能展开,没有子运。时间条上没有这段。别的当前段默认展开 | 待验 |
|
||||
| 暗色 | 系统或页面切到暗色,看西洋盘星座环 | 火土风水四色还能分清,星座名在色块上读得清。相位的绿和红不是亮色模式下的那两个深色 | 待验 |
|
||||
|
||||
## 2026-09-25 标签偏移补验
|
||||
|
||||
行星标签应离自己的刻度不超过大约一个星座(30°),不能被引到两个星座以外的扇区。拥挤时可以出现更靠内的第三圈。字号不能小于 12。点在两颗星的点击圆重叠处,应选中更近的那颗。
|
||||
|
||||
## 2026-09-25 西洋修复补验
|
||||
|
||||
独立 Chrome 组件证据:129 盘(65 份真实引擎盘含原 golden、64 张几何压力盘),实际盘宽 343px、本地 Noto Symbols 字体。最终全部标签碰撞 0(包含宫号互碰;初次5对/2盘经径向避让修复);按脚本逐圆及逐字符检查,命中错误 0。字号约 12.53px、命中圆直径约 44.85px。可复跑生成器:`artifacts/western-browser-check.tsx`。这是静态组件字框和命中检查,不是登录页面交互通过。
|
||||
|
||||
@@ -22,7 +22,8 @@
|
||||
| 他人对话刷新 | 打开有消息的他人对话,整页刷新 | 仍是TA,历史消息不清空;第一页外/深链会话仍在 | 待验 |
|
||||
| 普通新建 | 选他人后打开标准新建链接,再发送虚构测试句 | 等人物绑定后新建,普通会话用当前人物,不默认本人 | 待验 |
|
||||
| 切人/分页竞态 | A历史翻页未回来时切B,再让A旧请求返回 | B列表/游标不被A覆盖;当前消息保留;目录同人刷新不闪空 | 待验 |
|
||||
| 目录失败恢复 | 受控模拟人物目录503,随后恢复 | 可恢复错误,不假登出;未就绪前不先请求本人的盘/报告 | 待验 |
|
||||
| 目录失败恢复 | 受控模拟人物目录503,随后恢复 | 不进整页错误屏,历史和对话按本人加载;顶栏写「暂时读不到其他人」且只列出本人。恢复后其他人重新出现。不假登出 | 待验 |
|
||||
| 删最后一条 | 当前人物是 B,删掉 B 的最后一条对话 | 打开 B 的新空对话,不打开 A 的对话 | 待验 |
|
||||
| 跨账户缓存 | 受控退出后换另一个测试账号 | 星盘/星历/报告无前账号内容,缓存按账户和人物隔离 | 待验 |
|
||||
| 删除用量失败 | 受控模拟用量查询失败后点删除 | 提示暂时查不到数量、确认禁用,不显示0个对话/0份报告 | 待验 |
|
||||
| 真删除退款 | 删除仍有排队/运行中未交付报告的虚构人物 | 档案及关联数据删除,预留点数在同一事务释放;不因job已删漏退 | 待验 |
|
||||
|
||||
Reference in New Issue
Block a user