Chart, ephemeris, reports, daily language, consult, and synastry read birth data only through resolveSubjectBirth. The current person is a request parameter outside Home(). /people replaces the settings chart pane, and deleting someone removes that person's chats and reports.
4.0 KiB
4.0 KiB
PROGRESS · 星盘档案 P1(2026-09-25)
基线 origin/staging 4b579af6。分支 codex/people-archive-p1-20260924。没有推 staging。
完成
- T1:
chart_profiles增加类型化列,从 jsonb 回填,不猜缺字段。删除role='self'镜像。他人最多 4 个。reported_birth_time写入后不可改。客户端不能写active_*,也不能把状态写成 accepted/confirmed。delete_chart_subject连带删除该人的对话和报告。 - T2:星盘、星历、报告、今日星语、合盘都经
resolveSubjectBirth。普通对话的解析函数改为调用它,他人资料读类型化列。列表按subject过滤;本人存量会话在subject=self下仍可见(会话列为空或self;报告列是 uuid,本人是chart_profile_id is null)。 - T3:当前人物在
current-subject.ts,不进Home()状态。SubjectSwitcher放在对话和各次级页标题旁。已删除activeChartId/makeDefaultChart。新对话读当前人物。切人时星盘、星历、报告在绘制前清空上一份结果。 - T4:
/people为侧栏页。设置弹窗不再有星盘资料。?settings=chart去/people。「和 TA 对话」打开空对话,「和我合盘」用本人资料起草问题。 - T5:BUG-1030、CONTEXT、DESIGN、VOICE、CHANGELOG、本文件和真人清单。
让步
- 迁移先跑、代码后上的窗口里,旧客户端写本人镜像会失败,账户保存仍成功(旧代码吞掉镜像错误)。旧客户端若只改他人 jsonb,已回填的类型化列不跟着改,避免把正在跑的旧写入打成约束错误。窗口结束后以类型化列为准。
- 生时校正和任意两人合盘按 D12 留 P2。
- 今日星语请求放在
DailyStarlanguageBinder,随当前人物重取,没有把 store 放进Home()的 useState。卡片在 effect 跑起来之前可能仍显示上一张,不会写进错误的缓存键。
验证
tsc --noEmit通过(exit 0)。npm run lint:0 error,127 warning。warning 是既有未使用符号和 effect 依赖,本单没有为消 warning 改业务代码。frontend/src中activeChartId、activeChartStorageKey、makeDefaultChart为 0。Home()useState 33(开工实测 34,上限 36),useRef 37(未增加,上限 37)。page.tsx1348 行(基线 1417,上限 1567)。- 路由:
tests/subject-route-birth.test.ts与tests/ephemeris-route.test.ts。他人 subject 时星盘和星历引擎收到的是该人的年、纬度;不存在的人不回落本人,星盘billed: false,报告 POST 409 且authorizeUsage未调用。会话列表subject=self含chart_profile_id为空和self的存量行,他人列表只有该人。报告列表同样按人分开。 tests/database-chart-subject.test.ts与同批subject-birth、chat-profile-picker:17 pass,0 fail。覆盖回填、第 5 个他人被拒、reported_birth_time不可改、active_*与 accepted/confirmed 被拒、删除连带会话和报告、跨用户拒绝。- 全量
npm run test:db在 Windows 上会先撞上frontend/db/migrations与supabase/migrations同名文件(symlink 在本机是普通副本)的 duplicate migration filename。这不是本单引入的。本单用例走与校正标题测试相同的去重目录,定向结果以上面的 17/0 为准。 - 没有登录浏览器。没有跑
next build,不宣称/与/people已在本机确认为 Static。 - 预览会话
home-bootstrap-run.ts的updatedAt: timestamp()断言在本基线上已失败,本单未改那个对象。 - 开工后
origin/staging又前进了81db05c6、3dd48c0d、c2856466(首页拆分的测试合同,含 BUG-1029)。功能分支在推送前快进到这些提交之上,BUG-1030 仍用原编号。
断言三栏
见各测试文件里的「原值 / 新值 / 原因」注释。主要是:新对话不再固定本人;设置不再有星盘资料;星盘页改为 loadSubjectBirth;今日星语缓存键加入 subjectId。