fix(chart): keep account and chart-view birth truth consistent
This commit is contained in:
@@ -13200,6 +13200,22 @@
|
||||
- 复发自:无
|
||||
- 修复版本:`2503c019`
|
||||
|
||||
## BUG-996 | 更新出生资料后星盘仍可能显示旧盘或无法区分失败原因
|
||||
|
||||
- 状态:resolved
|
||||
- 首次发现:2026-09-22
|
||||
- 最近更新:2026-09-22
|
||||
- 影响面:`PATCH /api/account`、`GET /api/account`、`GET /api/chart-view`、`frontend/src/lib/secondary-page-data.ts` 的星盘快照缓存
|
||||
- 用户现象:已经更新出生时间,打开星盘仍像没有可显示内容,或点开后看不到刚保存的日期和时间。现场这一户的数据库行没有取到,不能把某一种残缺资料写成已经证实的唯一原因。
|
||||
- 触发条件:账户资料 PATCH 成功后星盘模块缓存仍留着上一张快照;或 `profiles` 读取失败、已采用日期缺 offset、时区解析失败、引擎 429 / 超时 / 坏结果被收成同一种「资料不完整」或同一句失败。
|
||||
- 根因:三处代码断点同时存在,不是一条已经证实的现场数据。第一,chart-view 忽略 profile 查询错误,空行会落到 `birth_profile_incomplete`;已采用日期缺 offset 或时区解析抛错时没有稳定分类。第二,`chartCache` 不按账户和资料指纹换键,PATCH 成功后也不丢弃旧快照。第三,账户响应和星盘排盘各自读日期、时间、offset,确认后的普通编辑虽不覆盖 active time,但调用方看不到同一份服务端真值。`guard_adopted_birth_date` 会把 adopted date、offset、provenance 一起清空,不会留下「有日期、没 offset」的半截元组,因此本轮不加迁移。
|
||||
- 修复:账户 PATCH / GET 与 chart-view 共用 `resolveServerOwnedChartBirth`。chart-view 把查询失败、资料不完整、adopted 计算不完整、时区失败、引擎忙、超时、坏结果和响应格式失败分开,查询失败不再写成资料不完整。PATCH 成功后按账户和资料指纹钉住星盘缓存,进行中的旧请求不能把旧盘写回去。确认状态的普通编辑仍不覆盖 active time。不把 `chart_profiles` 当作 `/chart` 真值,不放宽 accepted / confirmed。
|
||||
- 验证:`frontend/tests/chart-profile-update-consistency.test.ts` 覆盖 reported、accepted、confirmed、跨午夜、缺 active offset、查询失败、时区失败、引擎分档、schema 失败、旧快照失效和 D1。旧行为下查询错误没有独立 reason、缓存也没有账户指纹键,这些断言不会过。现场单户数据库状态仍未取证。
|
||||
- 防复发:数据库查询错误不得映射成 `birth_profile_incomplete`。已采用日期存在而 offset 缺失时不得回退到声明 offset 或清空 `active_birth_time`。星盘快照键必须包含账户和资料指纹;引擎缓存键仍包含日期、时间、offset、ayanamsa、node mode。失败文案不得写「过一会儿再打开」或没有上下文的「没有可显示内容」。
|
||||
- 相关记录:BUG-073、BUG-076、BUG-715、BUG-716、BUG-717、TASK-chart-profile-update-consistency-20260922
|
||||
- 复发自:无。BUG-073 仍要求服务端不信任客户端咨询模式;BUG-076 仍要求 `profiles` 而不是星盘库 JSON 为真值;BUG-715 至 717 的星盘打开、分档日志和开页只打 `/api/chart` 都还在,本条补的是资料真值和快照失效。
|
||||
- 修复版本:本分支,尚未推送、尚未部署
|
||||
|
||||
## BUG-997 | 切换人物后普通聊天仍用登录用户本人的出生资料
|
||||
|
||||
- 状态:resolved
|
||||
|
||||
Reference in New Issue
Block a user