From 9ca933968c0f685ed51d9fb5c7e91e7884592667 Mon Sep 17 00:00:00 2001 From: jesse-ux Date: Tue, 27 Oct 2026 07:43:40 +0800 Subject: [PATCH] Resume an unfinished rectification from the chart link. The chart page now continues a case already open instead of showing a conflict. Someone else's chart no longer offers that link. tsc exit 0. lint 0 errors, 122 warnings. Precheck and chart-page tests 56 pass. Opening tests 70 pass. Co-Authored-By: Grok (agent loop) --- docs/BUG_HISTORY.md | 32 +++ .../tasks/PROGRESS-lagna-precheck-20261027.md | 20 ++ docs/testing/lagna-precheck-20261027.md | 4 +- frontend/DESIGN.md | 2 +- frontend/docs/VOICE.md | 1 + .../components/chart-page/chart-page-view.tsx | 8 +- .../src/hooks/use-rectification-surface.ts | 10 +- frontend/src/lib/lagna-precheck.ts | 25 +-- frontend/tests/chart-page-view.test.tsx | 32 +++ .../lagna-precheck-rectify-entry.test.tsx | 184 ++++++++++++++++++ frontend/tests/lagna-precheck.test.ts | 9 + 11 files changed, 307 insertions(+), 20 deletions(-) create mode 100644 frontend/tests/lagna-precheck-rectify-entry.test.tsx diff --git a/docs/BUG_HISTORY.md b/docs/BUG_HISTORY.md index 3d3adee0..89f368ac 100644 --- a/docs/BUG_HISTORY.md +++ b/docs/BUG_HISTORY.md @@ -19658,3 +19658,35 @@ - 复发自:无 - 修复版本:分支 `codex/lagna-precheck-20261027`。 +## BUG-1446 | 星盘页的校正链接在已有校正时直接报错 + +- 状态:resolved +- 首次发现:2026-10-27 +- 最近更新:2026-10-27 +- 影响面:本人星盘页上「出生时间校正」链接。上升会换的人最容易已经开过一次校正。 +- 用户现象:点这个链接,已经有一次没做完的校正时,页面报「仍有未完成的校正」,回不到那一次。 +- 触发条件:校正还在进行,从星盘页打开 `/?rectify=1`。 +- 根因:这个链接走的是「新开一次」的意图。数据库在已有可续校正时拒绝新开,并抛出冲突。首页入口用的是另一种意图:有就续上,没有就新建。 +- 修复:星盘页链接改走首页入口的同一条路,不新建意图,不改数据库。重新开始校正的按钮仍是新开。 +- 验证:`frontend/tests/lagna-precheck-rectify-entry.test.tsx`。已有校正时请求意图是 homepage,不出现冲突句;没有时同样是 homepage,由服务端新建。 +- 防复发:星盘页入口不得再调用「新开一次」。冲突句只留给真的新开。 +- 相关记录:BUG-1444。issue #112 第 1 次打回。 +- 复发自:无 +- 修复版本:分支 `codex/lagna-precheck-20261027`。 + +## BUG-1447 | 别人的星盘页也放了校正链接 + +- 状态:resolved +- 首次发现:2026-10-27 +- 最近更新:2026-10-27 +- 影响面:人物档案里其他人的星盘页页头。 +- 用户现象:别人的星盘上也有「出生时间校正」。点进去只会说校正暂时只支持本人,是个没用的入口。 +- 触发条件:打开人物档案里另一个人的星盘,上升会换,或不知道出生时间。 +- 根因:这一句对所有星盘都加了链接。校正只做本人,链接在别人的页面上没有去处。 +- 修复:不是本人时,句子停在换座时刻或「上升星座定不下来。」,不写校正,也不放链接。本人不变。 +- 验证:`frontend/tests/chart-page-view.test.tsx` 里非本人两种情况没有链接、没有「出生时间校正」;本人仍有。`frontend/tests/lagna-precheck.test.ts` 锁住这两句。 +- 防复发:非本人的页头句子不得再出现校正链接。 +- 相关记录:BUG-1444、BUG-1446。issue #112 第 1 次打回。 +- 复发自:无 +- 修复版本:分支 `codex/lagna-precheck-20261027`。 + diff --git a/docs/tasks/PROGRESS-lagna-precheck-20261027.md b/docs/tasks/PROGRESS-lagna-precheck-20261027.md index 07ed5163..baa24840 100644 --- a/docs/tasks/PROGRESS-lagna-precheck-20261027.md +++ b/docs/tasks/PROGRESS-lagna-precheck-20261027.md @@ -42,3 +42,23 @@ - 已采用(accepted)和已确认(confirmed)都不显示这一句。候选时间仍显示。 - 顶栏在这一句出现时会高于原来的 46px,没有这一句时仍是 46px。见 `frontend/DESIGN.md`。 - Skill 文件没有改,版本不升。模型说明改在页面用的系统提示里;模型漏写限度时仍换回固定句。 + +## 第 1 次打回(修复单 TASK-lagna-precheck-fix-20261027) + +开工前 `git merge origin/staging`(当时 staging `efede95bf`)。同一分支继续。 + +- 星盘页的「出生时间校正」改走首页那条路:已经有没做完的校正就回到那一次,没有才新建。不再走「新开一次」,所以不会再报「仍有未完成的校正」。重新开始的按钮没动。 +- 人物档案里别人的星盘:上升会换或不知道时间时,句子停在换座时刻或「上升星座定不下来。」,没有链接,也不写去做校正。本人不变。 + +| 检查 | 命令 | 结果 | +| --- | --- | --- | +| 类型 | `frontend\node_modules\.bin\tsc --noEmit -p frontend` | 退出码 0 | +| 规范 | `frontend` 下 `npm run lint` | 0 error,122 warning(原有,没有新增 error) | +| 时间窗、页头、链接 | `tests/lagna-precheck.test.ts`、`tests/lagna-precheck-chart.test.ts`、`tests/lagna-precheck-rectify-entry.test.tsx`、`tests/chart-page-view.test.tsx`、`tests/chat-session-url.test.ts` | 56 pass,0 fail | +| 校正开场三份和入口合同 | `rectification-opening-plain-20260926.test.ts`、同名 `.tsx`、`rectification-nearest-boundary-opening-20261012.test.ts`,加上表面合同四份 | 70 pass,0 fail | +| 全量 `npm test`、`next build` | 未跑 | 留给验收 | +| Python 快速门、`test:db` | 未跑 | 没改 Python,没改表 | + +既有断言的通过值没有改。新增的是别人星盘没有链接,以及 `?rectify=1` 走 homepage。 + +BUG-1446、BUG-1447。真人清单第 5、6 条已按这次改法重写。 diff --git a/docs/testing/lagna-precheck-20261027.md b/docs/testing/lagna-precheck-20261027.md index 870c4808..792f854d 100644 --- a/docs/testing/lagna-precheck-20261027.md +++ b/docs/testing/lagna-precheck-20261027.md @@ -8,5 +8,5 @@ 2. 大概时间(前后 15 分钟或你选过的范围):同样看这一句是否和你填的精度一致。 3. 只知道一个时段:句子改成「按你给的时间段(开始–结束)」,不再写「前后约 N 分钟」。 4. 已经采用过校正时间的盘:这一句不出现。 -5. 人物档案里另一个人的星盘页:这一句可以出现。点「出生时间校正」会回到首页,并提示生时校正暂时只支持本人。不会给他另开一套校正。 -6. 本人点「出生时间校正」:进入现有的生时校正。开场要能听到三层意思:在哪段时间里找、你说几件大事和大概年月、不保证精确到某一分钟,说不准就照实记,中途可以停。 +5. 人物档案里另一个人的星盘页:这一句可以出现。上升会换或不知道时间时,句子里没有「出生时间校正」,也没有可点的链接。不会给他另开一套校正。 +6. 本人点「出生时间校正」:如果已经有一次没做完的校正,回到那一次,不要出现「仍有未完成的校正」。如果还没有,新开一次。开场要能听到三层意思:在哪段时间里找、你说几件大事和大概年月、不保证精确到某一分钟,说不准就照实记,中途可以停。 diff --git a/frontend/DESIGN.md b/frontend/DESIGN.md index 2dc5d21a..18bf9032 100644 --- a/frontend/DESIGN.md +++ b/frontend/DESIGN.md @@ -1043,7 +1043,7 @@ Three product rules for assistant markdown in `.message-markdown` (BUG-962 / 963 ### 结构 -页名「星盘」与出生资料一行在 `SecondaryHeader` 的 46px 顶栏里(§ Secondary page shell)。出生资料下面可以多一句上升是否会换(`.chart-lagna-precheck`,caption、三级色,没有卡片和图标)。这一句在的时候,顶栏改成随内容增高,不再卡在 46px;没有这一句时顶栏仍是 46px。句中的「出生时间校正」是下划线链接,上升已经确定时没有链接。顶栏之下第一件东西是 Tab 行。不写眉标,不写「打开即有」、不写「主盘直接算 · 分盘按需 · 不消耗点数」,也不承诺打开速度。等待外壳和失败页只有原因/等待句。这一句和星盘一起出现,不算出来就不占位置,不另做等待。 +页名「星盘」与出生资料一行在 `SecondaryHeader` 的 46px 顶栏里(§ Secondary page shell)。出生资料下面可以多一句上升是否会换(`.chart-lagna-precheck`,caption、三级色,没有卡片和图标)。这一句在的时候,顶栏改成随内容增高,不再卡在 46px;没有这一句时顶栏仍是 46px。句中的「出生时间校正」是下划线链接,只出现在本人的星盘上,而且上升已经确定时没有链接。人物档案里别人的星盘只说上升会不会换,不放这个链接,也不写去做校正。顶栏之下第一件东西是 Tab 行。不写眉标,不写「打开即有」、不写「主盘直接算 · 分盘按需 · 不消耗点数」,也不承诺打开速度。等待外壳和失败页只有原因/等待句。这一句和星盘一起出现,不算出来就不占位置,不另做等待。 四个 Tab 按体系分:**星盘 / 基础信息 / 大运 / 西洋盘**,画成**一条下划线式 Tab 行**:无边框、无卡面,当前项 2px 下划线 + 主文字色,整行一条 1px 底线。行内 `flex-wrap: nowrap` 且自身横向滚动,所以 375px 下它仍是一行,不折行、不换成第二排——底线画在滚动容器自己的 border 上,不会跟着内容滚走。一排等重的药丸按钮会读成几个可按的东西,Tab 行读成「一个控件 + 一个当前位置」。2026-10-25 起这四个页签是组件库 `Tabs`,`variant="line"`。盘还没到时四个都不可选。 diff --git a/frontend/docs/VOICE.md b/frontend/docs/VOICE.md index 2785200e..e248b6d6 100644 --- a/frontend/docs/VOICE.md +++ b/frontend/docs/VOICE.md @@ -271,6 +271,7 @@ Jyotisha 的可见文案是产品的一部分。正确性红线(真实性、 - 星盘、星历、报告顶栏的人名是一颗圆角按钮,带下拉箭头。点开后,名单没到 20 人时,底部一行是「+ 添加一个人」,去星盘档案。满 20 人不出现这一行。 - 星盘页人名旁边只写「日期 时间 · 地点」,末尾一支小笔。整行可点,就在这一页改,不跳走。本人每项都能改。别人已经填过的出生时间不能改,这句话只出现在时间旁边:「填报的出生时间保存后不能再改」。表单说明里不重复。星盘档案里编辑这样的人,也只在时间旁边写这一句。改了日期、时间或地点时写:「改了出生时间、日期或地点,之前生时校正采用的时间会作废,星盘改按你新填的时间排。」手机上这一行换到第二行。点编辑框内侧的空白边不会关掉框。 +- 出生资料下面可以有一句上升会不会换。本人上升会换、或不知道出生时间时,「出生时间校正」是链接:已经有没做完的校正就回到那一次,没有才新开。别人的星盘只说到「(大约 HH:MM 换座)。」或「上升星座定不下来。」,不写「出生时间校正」,也不给这个链接。 - 报告里的星宿,中文名后面的英文名用浅色小字,和中文同一行。速度写到小数点后 4 位。行星位置这类数值表太宽时,在表自己的框里横滑,页面不被撑开。作用说明、建议这类整句表在格子里换行。打印时每张表都落在纸宽里,格子里的字可以换行。 ## 报告分块导出与删除 diff --git a/frontend/src/components/chart-page/chart-page-view.tsx b/frontend/src/components/chart-page/chart-page-view.tsx index 9cdef83b..4c160c8f 100644 --- a/frontend/src/components/chart-page/chart-page-view.tsx +++ b/frontend/src/components/chart-page/chart-page-view.tsx @@ -66,8 +66,8 @@ function WaitingNote({ copy }: { copy: string }) { return

{copy}

; } -function ChartLagnaPrecheckNote({ value }: { value: ChartViewLagnaPrecheck }) { - const line = lagnaPrecheckLine(value); +function ChartLagnaPrecheckNote({ value, self }: { value: ChartViewLagnaPrecheck; self: boolean }) { + const line = lagnaPrecheckLine(value, { self }); return (

{line.before} @@ -169,7 +169,9 @@ export function ChartPageView({ {`${view.profile.date} ${view.profile.time} · ${view.profile.placeLabel}`}