From bd0fc25c97dc8b76e5689b3e568c1672a223c449 Mon Sep 17 00:00:00 2001 From: Jesse_Chen Date: Fri, 25 Sep 2026 21:05:20 +0800 Subject: [PATCH] docs: accept 4d801e53 fixes; follow-up brief for label drift, wrong fallback, catalog outage Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8 --- docs/BUG_HISTORY.md | 8 +-- docs/tasks/README.md | 7 ++- .../TASK-round-0925-followup-20260925.md | 59 +++++++++++++++++++ 3 files changed, 67 insertions(+), 7 deletions(-) create mode 100644 docs/tasks/TASK-round-0925-followup-20260925.md diff --git a/docs/BUG_HISTORY.md b/docs/BUG_HISTORY.md index 3b98406d..f1bafe47 100644 --- a/docs/BUG_HISTORY.md +++ b/docs/BUG_HISTORY.md @@ -13703,7 +13703,7 @@ ## BUG-1026 | 报告正文仍是审计版,投影把内部句截成半句 -- 状态:investigating(读者版切换已部署 `fabe0114`;09-25 修复单本地恢复 Bhava Bala 整表、标题与聊天英文,定向通过;组合 Linux 全量、部署与受控浏览器验收待协调方闭环) +- 状态:investigating(代码已验收:Claude 2026-09-25 于 `4d801e53`;待部署 health 核对后改 resolved) - 09-25 修复单补充:`tableIsInternal` 把通用 Score 当内部键,`adjacentInternalTableIndexes` 越过说明段继续删除标题;此前只锁章节关键词和泄漏零命中,没有检查真实十二宫表完整性。现报告表允许 Score / Weight(明确内部键仍拦截),删内部表不连标题;PL9 新规则只用于报告正文,聊天及安全图盘不受影响。真实引擎重算的虚构 reader-main golden 新增整段 Bhava Bala 原样保留断言,且原 `ordinaryOutputLeaks=[]` 不变。前端相关三文件 40/40;旧 density golden 逐行差异只有新增标题/空行,两个冻结 SHA 的原值/新值/原因见 `PROGRESS-report-reader-main-fix-20260925.md`。本轮未提交、未推送,不提前 resolved。 - 首次发现 / 最近更新:2026-09-24 / 2026-09-25 - 影响面:新个人长报告正文、普通投影、旧报告下载后的可见正文。已生成的 Markdown 不回填。 @@ -13735,7 +13735,7 @@ ## BUG-1028 | 太阳返照漏了出生上升,年主恒为火星 -- 状态:investigating(引擎侧出生上升已补;09-25 修复单本地消除附属键缺失造成的假冲突,读者可见年主/Muntha/未来返照时刻已补真实来源;组合 Linux 全量、部署与受控浏览器验收待闭环) +- 状态:investigating(代码已验收:Claude 2026-09-25 于 `4d801e53`;待部署 health 核对后改 resolved) - 09-25 修复单补充:上轮用户可见结果未修:真实两侧年主相同,但 Tajika 没有 `year_lord_sign`,被当成冲突;读者表又从年主对象读取 Muntha、选取依据,未来年白名单漏 `solar_return`。旧测试只查表头、或使用键集相同的合成字典,没守住可见单元格。现 D1 仅比较年主行星,D2 分别绑定真实字段、补保留未来返照结果;真实冲突仍同时显示两侧。参考提示按缺失/冲突/可读状态生成,不再恒说年主分歧。上游 `23b9609e` 的 `calc_panchadhikari_year_lord` 闭包依赖进程内 PyJHora,并会回退已 blocked 的代理算法,故按 D2 让步不引入、不解除边界。真实完整引擎三年测试与故障注入回归保留两侧真实值,不把本地一致性冒充外部验证。修复文件、测试及三栏见 `PROGRESS-report-reader-main-fix-20260925.md`;本轮未提交、未推送。 - 首次发现 / 最近更新:2026-09-24 / 2026-09-25 - 影响面:Muntha、Year Lord、年度章里的冲突句。 @@ -13783,7 +13783,7 @@ ## BUG-1031 | 他人报告后台取户主资料,删除级联后未交付预留可能漏退 -- 状态:investigating(本地永久回归及独立真实DB退款矩阵通过;最终组合Linux、受控登录与部署待验收) +- 状态:investigating(代码已验收:Claude 2026-09-25 于 `4d801e53`;待部署 health 核对后改 resolved) - 首次发现 / 最近更新:2026-09-25 / 2026-09-25 - 影响面:报告排队worker、服务端人物解析、本人校正metadata、删除人物RPC与报告删除触发器。 - 用户现象:选择他人生成的报告仍使用户主资料并扣点;删除排队/运行中人物时,报告与job已被级联删除,预留点数可能无后续worker可释放。 @@ -13800,7 +13800,7 @@ ## BUG-1032 | 默认本人历史的OR is.null在自托管Postgres上500 -- 状态:investigating(算子与真实路径测试已补;最终组合Linux/DB、受控登录与部署待验收) +- 状态:investigating(代码已验收:Claude 2026-09-25 于 `4d801e53`;待部署 health 核对后改 resolved) - 首次发现 / 最近更新:2026-09-25 / 2026-09-25 - 影响面:LocalPostgres兼容层parsePostgrestOr、GET /api/sessions默认subject=self、侧栏本人历史。 - 用户现象:本人侧栏显示「聊天记录暂时无法读取」,存量历史消失;他人会话筛选不走此OR分支。 diff --git a/docs/tasks/README.md b/docs/tasks/README.md index f0aaf8d1..7e8c1bee 100644 --- a/docs/tasks/README.md +++ b/docs/tasks/README.md @@ -119,7 +119,7 @@ | 任务书 | 进度 | 主题 | 状态 | 落点 | | --- | --- | --- | --- | --- | -| `TASK-people-archive-p1-fix-20260925.md` | `PROGRESS-people-archive-p1-fix-20260925.md` | **P0修复**:worker按持久化人物解析、真实删除预留退款、本人历史OR is、切人/消息时序及P2/P3;BUG-1031/1032,关联1030/990/1024。永久定向54/54、独立前端5探针与退款r4六场景通过;必须最终Node22 Linux全量+DB逐条基线对照 | 本地冻结;最终组合/真人/部署待验收,未推送 | — | +| `TASK-people-archive-p1-fix-20260925.md` | `PROGRESS-people-archive-p1-fix-20260925.md` | **P0修复**:worker按持久化人物解析、真实删除预留退款、本人历史OR is、切人/消息时序及P2/P3;BUG-1031/1032,关联1030/990/1024。永久定向54/54、独立前端5探针与退款r4六场景通过;必须最终Node22 Linux全量+DB逐条基线对照 | 已验收(Claude 09-25:两 P0、两 P1、七 P2 通过;新 P2 删后跳错人、人物接口故障连累聊天 → 收尾单) | `4d801e53`(待部署) | | `TASK-home-page-split-20260925.md` | `PROGRESS-home-page-split-20260925.md` | **首页 page.tsx 拆分(只搬不改)**:启动流程约 285 行抽成 lib 纯函数 `runHomeBootstrap`、恢复轮询约 100 行抽出、错误 / 引导屏抽组件,目标 ≤1300 行并下调增长合同基线;两个按源码切片的测试改为直接调用函数;还原 824647f2 的 import 挤行。排在 chart-ephemeris 之后、people-archive P1 之前 | 已验收(行为逐行一致;1417 行达让步线、合同基线已下调;流程违规:未跑全量致门禁红 3 次) | `da35b3e4`(已部署) | | `TASK-staging-gate-fix-20260924.md` | — | **修复单(阻塞 staging 部署)**:慢网首页 `0e4dd0f4` 起 5 条源码合同测试未跟上(硬跳转计数、重试 reload 正则、两处按已删语句切片)→ 门禁红,`0e4dd0f4..f125fae0` 全部未部署;另 page.tsx +9 行、订阅支付不刷新余额、原始附录三文件残留。只修测试与收尾,不改已验收行为;失败名单须与 `edc9c22c` 逐条一致 | 已验收(Claude 09-25:5 条转绿、失败名单与 edc9c22c 逐条一致 56/56、门禁 run 2877 绿;import 挤行凑数为 P3,由 home-page-split D5 还原;原始附录三文件仍未删) | `651c75e7`/`7a001456`/`824647f2`;deploy run 2879 因 ACR 网络失败,待同 SHA 重跑 | | `TASK-people-archive-p1-20260924.md` | `PROGRESS-people-archive-p1-20260924.md` | **星盘档案(多人物)P1**:每个档案 = 一个人(含本人),最多 5 人、无关系字段;标题旁人名 = 全局切换器(对话 / 星盘 / 星历 / 报告 / 档案页同一组件),星盘、星历、报告、今日星语、新建对话都跟当前人物走(推翻 BUG-1000 新对话固定本人);历史只显示当前人物;档案管理改侧栏 `/people` 页、设置删星盘资料;删人连带删对话与报告;取消「设为默认」/`activeChartId`(BUG-1030 错人)。他人资料改类型化列 + 与户主同级守卫,统一 `resolveSubjectBirth`;户主暂留 `profiles`。生时校正跟人与任意两人合盘留 P2。**同日四单全部合入后开工**,需 Docker 跑 test:db | 验收未通过(Claude 09-25:两个 P0 实况——给他人报告按户主资料生成且扣点、本人会话列表自托管 Postgres 500;切人时序 P1×2;修复单 people-archive-p1-fix) | `ab6c55f8`/`45842361`/`fabe0114`(已部署) | @@ -177,7 +177,7 @@ | 任务书 | 进度 | 主题 | 状态 | 落点 | | --- | --- | --- | --- | --- | -| `TASK-report-reader-main-fix-20260925.md` | `PROGRESS-report-reader-main-fix-20260925.md` | **读者版修复**:真实年主比较、分字段绑定与未来返照;保留 Bhava Bala 和标题,隔离报告/聊天规则 | 本地独立定向通过,组合 Linux 全量待验 | 已整合至 `codex/three-fixes-integration-20260925`(未提交、未推送) | +| `TASK-report-reader-main-fix-20260925.md` | `PROGRESS-report-reader-main-fix-20260925.md` | **读者版修复**:真实年主比较、分字段绑定与未来返照;保留 Bhava Bala 和标题,隔离报告/聊天规则 | 已验收(Claude 09-25:年运表逐年填齐且不同、Bhava Bala 保留、泄漏 0) | `4d801e53`(待部署) | | `TASK-report-reader-main-20260924.md` | `PROGRESS-report-reader-main-20260924.md` | **报告正文换上游读者版 reader_main + KP / Muntha 计算缺陷 + 投影截断(BUG-1026/1027/1028)**:正文一直是上游审计版(读者版 09-09 才出、从未同步),本仓又自加「结论等级规则」/英文段/异常原文;投影黑名单不认 PL9 词汇且截断半句、删表留说明;KP args `vars()` 拷贝为空恒失败;Muntha 漏合 `birth_asc_sign_idx` → Year Lord 恒火星。产品拍板接入读者版、旧报告不回填。 | 部分通过(Claude 09-25:读者版切换、泄漏 0 命中、KP 已修;年运 Year Lord/Muntha 全为「-」P1、投影误删 Bhava Bala P2 → 修复单) | `3c2f7bd5`(已部署) | | `TASK-report-reader-actions-20260924.md` | — | **报告操作收敛**:列表只留「查看报告」;阅读页删「下载原始附录」「打印」,导出改图标按钮;导出对话框 ≥860 居中、窄屏仍贴底(修订 chapter-export D9/D10)。产品变更,不开 BUG 号 | 基本通过(Claude 09-24:入口收敛、图标、≥860 居中均符合;原始附录三文件因执行方权限未删、PROGRESS/清单未写 → 并入修复单) | `f125fae0`(未部署) | | `TASK-report-chapter-export-fix-20260924.md` | `PROGRESS-report-chapter-export-20260924.md` | **CRLF图盘JSON残留(BUG-1020)**:旧剥离器只匹配LF;建议D5对错误围栏残留作有限例外,D13不构成该授权。 | 代码已验收(Claude 09-24),待部署(被同批门禁红阻塞) | `fa8fef55`/`133aca49`(未部署) | @@ -206,7 +206,8 @@ | 任务书 | 进度 | 主题 | 状态 | 落点 | | --- | --- | --- | --- | --- | -| `TASK-chart-western-fix-20260925.md` | `PROGRESS-chart-western-fix-20260925.md` | **西洋盘 ASC/MC 重叠**:固定锚点避让、真实引擎64盘与固定种子512盘扫描、343px盘宽命中≥44px;raw golden;文档陈旧行更正 | 本地独立组件复核通过,组合全量与登录整页待验 | 已整合至 `codex/three-fixes-integration-20260925`(未提交、未推送) | +| `TASK-round-0925-followup-20260925.md` | — | **0925 收尾单**:西洋盘标签为避让被推离行星(48% 盘 >30°、最大 115°,可能读错星座)→ 产品定偏移 ≤30° + 第三圈;删除对话后回退可能打开上一个人的对话;人物接口故障降级为本人不进错误屏、账户只请求一次;P3 删 chart-library-panel、点击区独占 44px、引擎死调用 | 待领取 | — | +| `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`(已部署) | | `TASK-chart-page-skeleton-wait-20260924.md` | `PROGRESS-chart-page-skeleton-wait-20260924.md` | **星盘页骨架盘等待态 + 三个「永远还没拿到」死角**:「这一张盘还没拿到。」只代表 `view === null`,是唯一等待态,失败各有句子;但客户端无超时(A)、401 跳转前(B)、分盘层失败 / 429 后 `ChartVedicTab` 只看 `!selected` 不看 pending(C)三条路都让这句永远挂着。**产品 09-24 拍板推翻 09-18 方案一(BUG-966)**:星盘页盘位用骨架盘 + 呼吸动效(复用 `VedicChartSvg` 空模型,不复制几何;`prefers-reduced-motion` 静止),范围只限星盘页会出盘轮的位置,首页 / 侧栏 / 星历 / 报告的「不放骨架」合同不动;`AGENTS.md` §6 与 `DESIGN.md` §9 / §15 追加例外。三死角出口:客户端 25s 超时 → `timedOut` 句、401 先写失败体、按层失败态 `layerFailures`(429 独立档,BUG-715/723)。BUG-1016 / 1017 | 已验收(Claude 09-24:红线全绿、+46 测试、失败名单同基线、四路由标记与 gzip 同基线;BUG-1016/1017 resolved) | `1420471a`(staging 已部署);真机清单欠 | diff --git a/docs/tasks/TASK-round-0925-followup-20260925.md b/docs/tasks/TASK-round-0925-followup-20260925.md new file mode 100644 index 00000000..cb886740 --- /dev/null +++ b/docs/tasks/TASK-round-0925-followup-20260925.md @@ -0,0 +1,59 @@ +# 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.ts` `deleteSession → activateFallbackSession(nextSessions) → fallbackSessionId` 取第一条非校正行;`page.tsx`(约 330 行)`activeSession ?? sessions.find(非校正)`、`use-consultation-run.ts`(约 623 行)同型。 + +**C · 人物列表接口故障连累聊天(P2)** +- `session-list-context.tsx` `loadSessionList` 现为 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` 只请求一次(共享结果)。 + +## 硬红线 + +1. 西洋盘:3000 张盘(同 `4d801e53` 验收口径,固定种子)重叠率仍 0%,**且**所有标签偏移 ≤ 30°、无标签落在相邻星座以外扇区;测试把 30° 与"不越过相邻星座"写成断言。 +2. 全量失败名单与开工基线逐条一致、新增 0(Node 22 + Linux);推 staging 前跑全量。 +3. 改动断言写三栏(写在测试文件内,不只写 PROGRESS)。 +4. 不改引擎、接口字段、数据库。 + +## 任务分解 + +- 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-1033(标签偏移)、BUG-1034(删后跳错人)、BUG-1035(人物接口故障连累聊天),开工时核对编号;PROGRESS;更新 `docs/testing/people-archive-p1-20260924.md` 与西洋盘真机清单。 + +## 开工前置命令 + +```bash +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 +```