docs(tasks): brief for new chat from /people landing on stale rectification

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8
This commit is contained in:
Jesse_Chen
2026-09-26 05:53:19 +08:00
co-authored by Claude Opus 5.5
parent e3b23c7e8b
commit 448ed10684
2 changed files with 56 additions and 0 deletions
+1
View File
@@ -119,6 +119,7 @@
| 任务书 | 进度 | 主题 | 状态 | 落点 |
| --- | --- | --- | --- | --- |
| `TASK-new-chat-from-people-20260926.md` | — | **从星盘档案页点新建对话落回上一次生时校正**(产品 09-26 真机):标题显示旧校正会话、输入框「正在打开生时校正…」,中间却是新对话开场;另有两套新建入口(`?new=1` 与 `?newChat=1`)违反 BUG-1015 一处解析红线。先复现写失败测试、定位跨页残留状态再修,合并入口。BUG-1037 | 待领取 | — |
| `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`(已部署,health 核对一致) |
| `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 重跑 |
@@ -0,0 +1,55 @@
# TASK · 从星盘档案页点「新建对话」落回上一次的生时校正(2026-09-26)
## 基线
- `origin/staging` 当前 head(线上 `e84d6eb8`)。分支 `codex/new-chat-from-people-20260926`。
- 与即将出的"档案页样式 / 星历可读性"单不交叉(本单不改 CSS 与星历)。
## 事故实证(产品 09-26 真机,iPhone Safari,staging)
1. 进入 `/people`(星盘档案页),点侧栏「新建对话」。
2. 回到首页后:标题栏显示上一次的会话标题「生时校正 · 04:45–05:15」,输入框占位写「正在打开生时校正…」且发送按钮禁用;页面中间却是新对话的开场问候「早上好,岳辰」和两个入口按钮。**期望是一个干净的新对话。**
代码现状(`origin/staging` e84d6eb8):
- 侧栏只读模式的「新建对话」:`frontend/src/components/app-sidebar.tsx` `SidebarMenuLink … href={newChatHref()}` → `/?new=1`(`frontend/src/lib/chat-session-url.ts` `newChatHref` / `parseNewChatIntent`,BUG-1015)。
- 首页启动:`frontend/src/lib/home-bootstrap-run.ts` `resolveLanding` 对 `urlAction === "new-chat"` 新建本地空咨询并 `writeSessionUrl(null, "replace")`、`setActiveSessionId(landingSessionId)`;`reservedConsultation` 恢复后再次改回新建落点。这一段逻辑仍在。
- **第二套新建入口**:`frontend/src/components/people-home-links.tsx` `NewChatDeepLink` 解析 `?newChat=1`(`/people`「和 TA 对话」使用),在 `page.tsx` 中挂载(`<NewChatDeepLink ready={…} startNewChat={startNewChat} />`)。这违反 BUG-1015 红线 3「解析与生成新建意图只在 `chat-session-url.ts` 一处」。
- 标题与占位来自生时校正面的打开状态(`use-rectification-surface` / 外壳注册 `openingSessionId`、`EMPTY_RECTIFICATION_SHELL`),说明回到首页时仍保留或重新激活了上一次的校正会话打开态。
## 根因(待复现确认)
静态阅读能确定的只有"有两套新建入口"。截图同时出现"新对话开场"和"校正会话标题 + 正在打开"两种状态,说明新建落点生效了,但**某个跨页面存活的状态**(候选:外壳注册里残留的 `openingSessionId` / 校正面的模块级缓存 / `current-subject` 绑定时的会话订阅 emit 触发 `activateFallbackSession` / `shouldAutoOpenRectificationSession`)把上一条校正会话重新推成了活动会话或打开态。**执行方必须先复现再定根因,不得凭猜测改。**
## 决策记录
- D1 新建意图只保留一套:`/people`「和 TA 对话」改用 `newChatHref()`(必要时扩展为 `newChatHref({ subjectId })` 带人物,解析仍在 `chat-session-url.ts`),删除 `NewChatDeepLink` 与 `?newChat` 参数。
- D2 从任何次级页(`/chart`、`/ephemeris`、`/reports`、`/people`)点「新建对话」,结果必须等同首页点「新建对话」:活动会话是新的空咨询,标题栏显示新对话,输入框可用,不出现「正在打开生时校正…」,不打开任何历史会话(含校正会话)。
- D3 定位到的残留状态必须在"新建意图"路径上显式清掉(或改为按会话 id 作用域),并写明是哪一个。
## 硬红线
1. 先写一条**会失败**的回归测试复现问题(真实 React 生命周期:先打开一条校正会话 → 客户端导航到 `/people` → 导航回 `/?new=1`),修复后转绿;只有静态源码断言不算。
2. 在真实浏览器里验证(本机有 Chrome;用受控测试账号或本地 dev + 预览数据),截图写进 PROGRESS。没有受控账号时写进 BLOCKED,并交给产品真机复测,不得写成通过。
3. 不改 BUG-989 口径(首问前不落库、不写 `?c=`);首页保持 `○ Static`;`page.tsx` 不新增 hook。
4. 全量测试 Node 22 + Linux 与基线逐条一致、新增 0;改动断言写三栏(写在测试文件里)。
## 任务分解
- T1 复现 + 失败测试。
- T2 定根因并修(D3),合并两套新建入口(D1)。
- T3 覆盖四个次级页 + 移动抽屉的新建路径测试;「和 TA 对话」进入的新对话标题旁是 TA 的名字。
- T4 记录:BUG-1037(复发自 BUG-1015 的"新建意图"链路,写明为何当时的测试没覆盖客户端导航回首页 + 残留校正态);PROGRESS;更新 `docs/testing/secondary-new-chat-20260923.md` 增加"先开一条校正会话再从档案页新建"。
## 开工前置命令
```bash
git fetch origin --prune
node -v # 22.x
git worktree add -b codex/new-chat-from-people-20260926 .worktrees/new-chat-from-people-20260926 origin/staging
cd .worktrees/new-chat-from-people-20260926/frontend && npx tsx --test tests/chat-session-url.test.ts tests/new-chat-recovery.test.ts tests/home-bootstrap-run.test.ts
```
## BUG 编号
写单时最大 BUG-1036;本单 **BUG-1037**,开工时核对。