The follow-up checker now rejects a shifted antardasha or English mahadasha, and the onboarding source contract matches the new sentence. Co-Authored-By: Claude (agent loop) <noreply@anthropic.com> Co-authored-by: Cursor <cursoragent@cursor.com>
7.5 KiB
7.5 KiB
进度:合盘报告追问(2026-10-19)
基线:origin/staging 123295135。分支 codex/synastry-report-chat-20261018。#82 的代码已在这条基线上。功能提交 3956519f3 没有进 staging。
做了什么
- 会话类型增加
synastry_report。绑定personal_reports.id(删除后置空,会话留下,只读)和八节之一。对方人物记在synastry_partner_subject_id,这样报告删了之后两边的侧栏仍能找到这条对话。 - 报告末尾打开「对哪一段想再问清楚?」。点一节只创建会话并预填问题,不调用
/api/consult,不扣点。 POST /api/consult在这类会话上走独立分支,不调用run-jyotish-consultation。每轮先读该节已存材料,再核对盘面。对不上改写一次,仍对不上就回复「这一点在这份合盘里没有算到,我不能确定」。计费键是chat.standard。- 侧栏标题是「甲 × 乙 · 合盘追问」。任一方是当前人物都会列出。人物选择器锁住,显示两个人的名字。报告删除后输入框是「这份合盘已删除」。
- 普通单人对话的提示、证据卡和工具没有改。
scripts/jyotish_api_server.py没有改。Home()的状态数没有增加。
让步
没有。T4 的任一方侧栏、锁定的「甲 × 乙」和删除后只读都在这一轮里。
验证
| 项 | 结果 |
|---|---|
tsc --noEmit |
0 错。webpack 构建里的 TypeScript 也通过 |
npm run lint |
0 error。原有 warning 没有改 |
| 定向测试 | 合盘追问、报告阅读页、会话列、入口、列表过滤、计费列合同、容量列合同、输入框禁用、Home 增长护栏,通过 |
| 数据库 | frontend/tests/database-synastry-report-chat.test.ts 通过。别人的报告和非法节被拒绝;删除报告后会话还在、报告编号为空、不能再扣 chat.standard |
next build --webpack |
通过。/ 仍是 Static |
| 首屏 gzip-9 | 基线 123295135 613,694 B;本轮 615,879 B;+2,185 B,+0.36%(35 个首屏 js/css,±2% 内) |
全量 npm test |
退出码 1。本轮改坏的三条源码合同已改完并单独重跑通过。其余失败是这台机器的环境:路径被拼成 G:\G:\、没有 WSL、浏览器测试落到另一个工作树的 node_modules。回答计时两条单独重跑通过 |
| 模型 / 浏览器 | 没有模型凭据,没有登录态。部署后按 docs/testing/synastry-report-chat-20261018.md 在 staging 看 |
Turbopack 不能用这个工作树里的 node_modules 联接(联接指向工作树外面)。首屏数字来自同机 next build --webpack。
断言改动
| 位置 | 原值 | 新值 | 原因 |
|---|---|---|---|
| 报告阅读页测试 | 页面不含「对哪一段想再问清楚」 | 含这句,八节可点,共同练习不是按钮 | #83 打开入口 |
| 会话列表列 / 详情列 | 列到人物字段后就是时间 | 中间加上报告、节、对方人物 | 侧栏和删除后只读要读到这些列 |
| 另一人物的会话过滤 | eq:chart_profile_id |
or 同时匹配本人列和对方列 |
合盘追问两边都要看见 |
| 创建字段表 | chatSessionCreateSchema.shape |
chatSessionCreateFields.shape |
交叉校验包在字段表外面,字段表仍不收 context_summary |
| 普通发送起点 | const birthPlace = selectedBirthPlace(profile) |
合盘追问跳过出生地 | 不能因为查看者没有出生地而停住 |
| 咨询读取列 | select 到 context_summary |
后面加上报告、节、对方人物 | 同一条读取要认出合盘会话 |
| 会话详情列合同 | 人物字段后是 created_at |
中间加上这三列 | 详情和容量合同跟着列走 |
| 输入框禁用 | subjectDeleted 开头 |
synastryClosed 开头,合盘追问不看查看者资料是否齐全 |
报告删除后只读;追问不要求查看者出生资料 |
| 称呼按钮 | 资料停在称呼步时按钮是「确认称呼」 | 合盘追问仍是「发送」,也不再被出生资料表单挡住 | 预填问题要能发出;查看者自己的资料没填完也能问 |
| 引导表单 | const onboardingFormActive = !profileComplete && onboardingStep !== "name" |
前面加上 !synastryChat && |
合盘追问跳过引导表单;普通对话仍按原条件收起输入框 |
验收(2026-10-20)
结论:未通过。修复单 docs/tasks/TASK-synastry-report-chat-fix-20261020.md。
被验 SHA 基于 origin/staging 123295135,可以快进。本轮只把修复单推上 staging,没有推功能提交。
| 检查 | 结果 | 数字 |
|---|---|---|
| 祖先关系 | 通过 | 123295135 是 3956519f3 的祖先 |
| tsc | 通过 | 0 错 |
| lint | 通过 | 0 error,122 warning |
| 定向测试 | 通过 | 80 通过,0 失败,0 取消 |
| 数据库新测试 | 通过 | database-synastry-report-chat.test.ts 1 通过 |
| Home 护栏 | 通过 | useState 33 / useRef 37 / 1340 行 |
| 计费函数差异 | 通过 | 四份函数相对上一版只改了会话类型条件 |
| 大运核对 | 未通过 | 小运和英文 mahadasha / antardasha 写错年份仍判通过 |
| 首页源码合同 | 未通过 | onboardingFormActive 的原文断言没有跟着改 |
| 全量 npm test | 退出码 1 | 约 15 分钟,42 条 not ok。要修的是首页源码合同那 1 条。其余是双盘符、另一工作树的浏览器依赖、Windows 已知的备份和权限失败,以及两条不在本次 diff 里的回答计时。两条数据库迁移失败时错误输出是空的,并行起了很多 Postgres;合盘追问的数据库测试单独跑是通过的 |
| 全库 test:db | 环境未整包重跑 | 新测试已单独通过;Grok 回报的新测试也是通过,没有多出来的失败名 |
| 模型 / 浏览器 | 环境缺口 | 无模型凭据、无登录态。功能未进 staging,真人清单先不跑 |
普通单人对话的提示、证据卡和工具不在这次 diff 里。scripts/jyotish_api_server.py 和 .gitea/ 没改。
修复(2026-10-20)
核对改去认时间线实际写下的句子:中文「大运」「小运」,英文 mahadasha、antardasha,中间是 to。材料用 buildTimelineSegments 生成的 basis。原样引用通过;年份改一年失败;两稿都对不上仍是「这一点在这份合盘里没有算到,我不能确定」。名人三条仍是通过、失败、失败。时间线生成器的用词没改。
预填文案只留「合盘报告里「节名」这一段,在我们两人的盘里依据是什么?」英文说明留一句。
| 项 | 结果 |
|---|---|
tsc --noEmit |
0 错 |
npm run lint |
0 error,122 warning |
tests/synastry-report-chat.test.ts、tests/birth-time-consultation-consent.test.ts |
21 通过,0 失败 |
复验(2026-10-20)
结论:通过。被验 549e37b9952e76bb9b26f32c1426eaa6adfe7475。
| 检查 | 结果 | 数字 |
|---|---|---|
| 能否快进 | 可以 | staging 470275797 是这枚提交的祖先 |
| 小运 / 英文大运 | 通过 | 原样引用通过;年份改一年失败;两稿不对仍是固定答复 |
| 引导表单合同 | 通过 | 已改成带 !synastryChat && 的句子,并写了三栏 |
| 预填文案 | 通过 | 只留「合盘报告里「节名」这一段…」一句 |
| tsc | 通过 | 0 错 |
| lint | 通过 | 0 error,122 warning |
| 定向测试 | 通过 | 21 通过,0 失败 |
| 全量 npm test | 未整包重跑 | 上次要修的那条合同已在这次定向里通过。其余失败是双盘符、另一工作树和 Windows 已知项 |
| 模型 / 浏览器 | 环境缺口 | 部署后按 docs/testing/synastry-report-chat-20261018.md 看 |