fix: integrate people archive, report reader and western chart corrections
Independent Staging Quality Gate / validate (push) Successful in 16m28s
Independent Staging Quality Gate / publish (push) Successful in 3m33s

Validate on Linux Node 22 and PostgreSQL 17: 3894 frontend tests and 64 database tests pass, with no removed test names or new failures. Preserve static Home, bounded gzip, assertion-change records and manual acceptance gaps.

Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
jesse-ux
2026-09-25 20:41:16 +08:00
co-authored by Claude Code
parent 48fe4daf51
commit 4d801e53c3
78 changed files with 34844 additions and 441 deletions
@@ -0,0 +1,83 @@
# 三份修复单整合验收 · 2026-09-25
这是整合版本的验收入口,不替代各单清单。所有项目初始均为未验证;自动化通过不等于受控账号真机通过。
## final-r4b 已核实自动化结果
- [x] Linux Node22.23.2 全量3894/3894,真实PostgreSQL17标准DB64/64;两套fail/skip/cancel/todo均0,各exit0。
- [x] 顶层与含嵌套名称多重集合对账:相对基线无删除、新增失败0。
- [x] tsc/lint/build各exit0;lint0error/127既有warning,首页`○ Static`。
- [x] 三种gzip口径在±2%内:完整首屏+0.1612%、入口增量−0.4536%、首页专属JS−0.7984%。
- [x] final-r4b Python六文件49通过;与基线同参数CI quick 948通过/1跳过;隐私测试70通过、public/commercial扫描各3311文件0finding;五个exit均0。
- [x] 独立审计全部既有断言三栏;Home状态/ref不增长,API主文件不改,旧面板保留,依赖/workflow不改。最新文档隐私扫描另见交付补记。
quick参数为`--profile quick --skip-yoga-logic --skip-frontend-runtime`;前端另跑上述Linux全量,不把该命令写成未跳过任何阶段。
完整数字、原始日志、快照SHA256与r2/r4失败历史见整合PROGRESS的final-r4b节。以下真人与部署项目仍未验证,不能勾选为通过。
## 自动化证据矩阵
最终数字、日志路径、基线/最终 SHA 记入 `docs/tasks/PROGRESS-three-fixes-integration-20260925.md`。
| 项目 | 必须证明的事实 | 证据类型 |
| --- | --- | --- |
| 全量回归 | Node 22 + Linux,失败逐项及原因与开工基线对比,新增失败 0;测试名称无无故消失、总数不下降 | 基线与最终完整日志及比较产物 |
| 类型与 lint | tsc 0 错,lint 0 error,不顺带清 warning | 同环境命令日志 |
| 构建 | 完整 next build,首页 `/` 为 Static,gzip 相比同环境基线 ±2% | 构建日志、资产测量明细 |
| 报告错人 | worker 真正传入引擎的是目标人物;不夹带户主校正范围;删除目标后失败且退点 | worker 成功/失败真实路径注入 fake engine |
| 本人历史 | 自托管真实 Postgres 下 `subject=self` 包含 null/self,不混入其他人物;is.null/true/false 正确编译 | 标准 test:db 实跑 |
| 迁移纠偏 | 不可信旧 accepted/confirmed 降级,active 字段清空;本人不变、幂等、旧部署兼容 | 真实迁移回放测试 |
| 人物状态 | 本地同步预读但未绑定前不发错人请求;账户切换与列表失败不串人;相同人物重绑不清消息 | 生命周期回归及受控真机 |
| 今日星语 | 当前人物的完整度、时区和资料指纹决定可用性与缓存 | 定向回归 |
| 删除/合盘/星历 | 用量未知不得删除;合盘对话绑定本人;暖进不重算、失败可重试 | 定向回归与真机 |
| 年运 | 真实引擎两侧一致不误判冲突;至少两年 Varshesha/Muntha 有值且变化 | 真实引擎重算 golden 与 Python/前端测试 |
| 投影 | 保留 Bhava Bala 标题及十二宫表,报告泄漏清单仍空;不改聊天导出规则 | golden 投影及导出回归 |
| 西洋盘 | 固定种子扫描 ≥50 盘、含 ASC/MC 标签碰撞率 ≤1%;实际宽度下命中区 ≥44px | 布局扫描及真实浏览器几何核验 |
| 断言对账 | 所有改动的既有断言均列原值/新值/原因,补前轮遗漏;不借修复削弱不相关测试 | 各单 PROGRESS 三栏 + 最终 diff 逐项审查 |
| Python | 相关定向与 quick 真跑,API 主文件不增长、算法口径不变 | 命令日志与 diff |
## 受控账号真人验收
只使用产品负责人明确提供的受控测试账号,录入明确虚构资料。不得借用现有浏览器登录态或读取他人凭据;截图/日志分享前去除账号信息与资料细节。
### 人物档案(优先)
- [ ] 本人和另一个人物使用明显不同的虚构生日、地点;给另一个人物生成报告,打开后核对属于目标人物,而不是本人。失败不重复扣点。
- [ ] 报告已扣点且仍排队时删除目标人物,核查实际删除接口后的余额与账本:不生成本人报告、未交付任务的费用退还且不重复退款;不能仅模拟 worker 查询人物为空。
- [ ] 本人的既有校正候选范围仍传入报告生成;给他人生成时不夹带本人的范围。
- [ ] 报告请求只传 `subjectId`、只传 `chartProfileId`、两者相同都能按正确人物受理;两者冲突返回 400,不放宽其它未知字段的严格校验。
- [ ] 默认本人侧栏的存量对话可见;切换到另一人物只显示该人物的对话。
- [ ] 从人物列表点击「和 TA 对话」,新对话标题旁直接是 TA;在慢网下不先发本人的请求。次级页标准「新建」旧 `?new=1` 入口也绑定当前人物,而不只检查 `?newChat=1`。
- [ ] A 人物正在加载下一页历史时切到 B,随后 A 请求晚返回,B 的历史与分页游标不被覆盖。
- [ ] 次级页切人物、目录/历史仍在请求时返回 Home,不误跳登录;账户正常但人物目录接口 503 时显示可恢复失败,不冒充未登录、不自动改用本人。
- [ ] 在他人的对话中刷新,消息仍在、人物仍正确;深链打开分页之外的旧会话,人物列表晚返回不会清空消息。
- [ ] 星盘、星历、报告页整页进入时不会先显示本人的内容再换人。
- [ ] 添加、改名、删除人物后,顶栏列表及时更新,已删除人物不再可选。
- [ ] 删除前显示服务端实际数量;模拟用量接口失败时不得显示假 0,且不可确认删除。
- [ ] 本人无精确分钟而另一人物资料完整时,后者今日星语可用;修改后者资料后不沿用旧指纹卡片。
- [ ] 「和我合盘」的新对话绑定本人、问题明确写对方,不把“我”解释成对方。
- [ ] 星历暖返回无多余重复计算;首次请求失败后有可执行的重试。
- [ ] 编辑表单标题是编辑而非添加;达到人数上限后无法增加第六个人。
### 报告读者版
- [ ] 新生成的虚构资料报告中,年运章至少两年的 Varshesha 与 Muntha 有值且不同;真正冲突明确呈现,缺资料不编造。
- [ ] 「Bhava Bala 十二宫力量」标题和完整表格保留,后续表格归属正确。
- [ ] 五要素不显示内部原始键;姓名缺失时不显示「姓名:-」。
- [ ] 聊天导出的正常英文内容保留;报告中仍无内部账本/泄漏词。
### 西洋盘
- [ ] 375px 与桌面宽度下,ASC/MC 与行星标签不遮挡,字号可读;临近上升的密集盘也检查。
- [ ] 每颗行星均能独立点中;逐一点击符号、数字、度数符号、逆行标记,透明点击圈不得吞掉相邻行星任何可见字符的点击。核查真实浏览器 `getExtentOfChar()` 字符中心,不以点击圈中心测试代替。
- [ ] 标签扫描包含宫号之间以及宫号与其它标签的碰撞,不能排除宫号后报告零重叠;径向避让不改变引擎宫头与宫位。
- [ ] Tab 顺序、Enter/Space 选择与焦点可见性正确;文字覆盖层不增加重复焦点或重复无障碍标签。
- [ ] 相位线常显未退化,选择行星后的主要相位表正确;骨架仍无文字。
## 若获得 staging 推送授权后的部署核验
- [ ] 推送前最终版本已完成 Linux 全量对照,新增失败为 0,所有变更断言有三栏。
- [ ] 核对 Gitea 远端 staging SHA,不用 GitHub 镜像或本地提交替代。
- [ ] Gitea 该 SHA 的门禁、迁移与部署有成功证据。
- [ ] 公共 health 的 `deployment.gitCommit` 对上最新含门禁路径变更的提交;`/login` 正常、匿名 `/api/account` 为 401;内部 health 与 swisseph 按部署口径核验。
- [ ] 不提升 main、不发布生产。权限不足或缺登录态的检查写为环境缺口,不写通过。