fix(account): a new birth declaration drops a confirmed minute too (M2, BUG-264 product revision)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N4f2nya58RoRu4yEmJgRGE
This commit is contained in:
Jesse_Chen
2026-09-29 08:41:27 +08:00
co-authored by Claude Opus 5.5
parent c61095b1eb
commit 5e97db4077
5 changed files with 220 additions and 16 deletions
+1
View File
@@ -3932,6 +3932,7 @@
- 相关记录:BUG-018(首次保存未写入档案状态,同一类真值不一致)、BUG-017(`mode_changed` 的另一入口)
- 复发自:无
- 修复版本:本地未提交候选
- 2026-09-29 产品修订(`TASK-mobile-chart-and-confirmed-edit-20260929` M2,不是本 Bug 复发):原约定「已确认与 legacy 分钟不被普通资料修改覆盖」改为——**只有声明字段(出生日期、时间与来源、时段 / 范围、地点代码与坐标、时区)真的变了**,已确认或 legacy 分钟才被丢掉,之后按新声明派生,与未确认状态完全一致(零误差家人时间 → `accepted` + 新分钟,否则 `reported`,`rectification_case_id` 清空);同时清掉图表会回落读取的遗留 `birth_time`,以及跨午夜采用三列 `active_birth_date` / `active_birth_timezone_offset` / `active_birth_provenance`(数据库触发器 `zz_guard_adopted_birth_date` 也会清)。只改称呼、岁差、性别、头像不动已确认分钟。影响:用户改出生资料会让已采用的生时校正结果作废,这是产品要的(「用户改生日肯定是得到信息了」)。同时把声明比较改成按值比较(库里的 `HH:MM:SS` 与表单提交的 `HH:MM`、数字与数字字符串、空串与 null 视为相同),否则 `/people` 每次整表重提都会被误判为新声明。`account-api.test.ts` 与 `chart-profile-update-consistency.test.ts` 里锁旧约定的断言按三栏改写,新增一条「confirmed 分钟只跟随新声明」测试。数据库侧:`guard_birth_time_journey`(最新版 20260804020000)只在状态为空且有分钟时补 `confirmed`,本修订总是写明确状态,不会被改回;`zz_guard_adopted_birth_date`、`agentic_rectification_profiles_rebaseline_guard`、`invalidate_agentic_rectification_results_on_profile_change` 在声明变化时照旧触发。本机无 Docker,未跑 `npm run test:db`,staging 实测见真机清单。
## BUG-265 | 首页“今日星语”号称个人化,实际是 4 张写死卡片轮换