docs(todo): Wave 5 总验收 — 完成报告(Wave 0-4 落地 + 2组migration/拆分移交)

42 后端测试 35过+7预存失败(零新增回归);tsc/build 0;14路由 boot 0报错。
两件移交:2组 migration 低峰 apply + pipeline 巨页拆分待确认。附 apply 操作指引。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
seaislee1209
2026-06-19 13:15:27 +08:00
co-authored by Claude Opus 4.8
parent 1c5606abcb
commit fb04bf05ae
@@ -0,0 +1,91 @@
# 还原 + 性能落地 · 完成报告
> 落地两份审计(`UI还原对比报告-AirShelf-2026-06-19.md` + `性能审计报告-AirShelf-2026-06-19.md`)的全量 P0+P1+P2,外加注册+邀请制新功能。全程本地 dev 分支、未 push、未 apply 远程库迁移。
> 计划:`~/.claude/plans/gleaming-sleeping-ullman.md`。日期 2026-06-19。
## 一句话
Wave 0→4 全部落地(11 页逐页还原 + 邀请制新功能 + 性能根因 + 系统 CSS + 后端索引/N+1 + pipeline 视觉)。**每步 tsc+build+无头浏览器走查+截图、0 console error、真实数据缺一律降级不造假**。**两件留给你**:① 2 组 migration 低峰 apply 远程 MySQL ② pipeline 巨页拆分(高风险,需你确认再做)。
---
## 逐波验收
### Wave 0 · 性能根因 — ✅ (commit 8a0ae6a)
| 项 | 状态 | 证据 |
|---|---|---|
| MySQL 连接复用 CONN_MAX_AGE=300 | ✅ | 上移 base.py;实测 `ENGINE=mysql/CONN_MAX_AGE=300/HEALTH=True/connect_timeout=5` |
| 视频轮询脏检查(消除每 5s 整页重渲染) | ✅ | App.tsx pollVideosQuiet JSON 脏检查;纯前端不碰生成 |
| 图懒加载 + 隐藏 tab 停纯读轮询 | ✅ | ai-tools img lazy;审核/在途资产轮询加 document.hidden |
| ⏸️ 视频轮询 hidden-guard / products·projects 服务端分页 | 偏离 | 前者碰生成(rule3)、后者需配分页器→挪 S7;已记进度文档 |
### Wave 1 · 系统性 CSS/组件 S1-S9 — ✅ (74e3c81 + 42c3c04)
- S3 Toast 归正(右下单橙滑入)· S4 弹窗进场动画+ESC(共享 useOverlayTransition)· S9 账户表去横线
- S1 双主题清污染(dashboard 暖橙泄漏修掉,实测 `.shortcut .ic`=rgb(250,93,25)=--heat)· S2 mono 工具类 · S7 富分页器 · S8 hero 字重 700(核 V1 实测确为 700)
- 证据:pixelmatch account 1.23%/team 2.13%;computed-style 实测橙=heat、字重=700;14 路由 boot 0 报错
### Wave 2 · 后端查询治理 — ✅ (99a442e;part2 移交 8e6c6f0)
- part1 ✅:5 模型 7 条复合索引(**只 makemigrations 看 SQL,未 apply 远程库**)+ 消息中心 N+1(type_counts 6 count→1 聚合、项目花费 N+1→1 预聚合);apps.ops 测试 3/3
- part2 ⏸️ 移交监督:poll-reviews 挪 Celery / 写 action 瘦身 —— 均落 rule3「严禁碰生成/轮询业务逻辑」+ 对已验证功能动刀无法 loop 内 e2e,附落地方案
### Wave 3 · 逐页还原 P0/P1 — ✅ 11 页(0083918/38f56cb/da8c6a7/378b0a3/9643f9b)
| 页 | 关键还原 | 走查 |
|---|---|---|
| 团队 | 5 定制弹窗(创建账户 role双卡+三额度+随机生成/分享凭据/编辑/重置/月限额) | role-choice=2/三额度/预设/ESC ✅ |
| 账户 | 充值扫码弹窗+3筛选条+列重排(role-pill/progress) | 充值弹窗/QR/ESC/3筛选条 ✅ |
| 资产库 | bulk-bar多选+资产详情弹窗+上传Modal+缺三视图徽标 | 7卡/详情/上传/ESC ✅ |
| AI工具 | 接入ActorLibrary+gen-card三件套+平台多选+pl-modal | 模特库/pl-modal ✅ |
| 商品 | 网格列表切换+分类多选+素材三态(真实review_status)+采用联动 | 视图切换/list/chip ✅ |
| 项目 | 进度条+失败pill修err+批量栏+真实镜数 | 4进度条/批量勾选 ✅ |
| 工作台 | KPI接真实(假delta删)+余额真实占比+日期mono+真实镜数 | 4KPI/0报错 ✅ |
| 外壳 | 侧栏.user账户菜单(5项+用户名非邮箱) | 菜单5项/ESC ✅ |
| 设置 | dirty-state引擎(无改动disabled+计数+beforeunload+nav dirty-dot) | 无改动disabled ✅ |
| 商品创建抽屉 | 多图≤5+pf-grid+拖拽+必填校验+收编草稿 | multiple/pf-grid ✅ |
| 消息 | 详情多动作actions[](按type推断)+静音同类+查看日志壳 | tsc/build ✅ |
> 真实数据缺口**一律降级不造假**(Project无owner→去列、TeamMember无完成数→去列、非person无review_status初值、dashboard无月度预算、资产「移动到」需api加category、消息log需后端字段)——逐条记进度文档,移交监督。
### Wave 3.5 · 注册 + 邀请制(新功能) — ✅ (ba855cc/c0a8582/b82c4d3)
- 后端:Invitation 模型 + 端点(生成/列/撤销,权限复用 can_manage_team)+ RegisterSerializer 加 invite_code(有效码→幂等加成员+标used+**跳过额度发放**;无码→开新团队)。**apps.accounts 测试 5/5**(含「凭码加入同团队/角色额度对/不重复发额度/未知码400/普通成员生成403」)
- 前端:auth-screen 登录+注册双态(注册=团队名/用户名/密码/确认/邀请码,**无邮箱**)+ 第三方+切换行;团队页「邀请成员」生成码弹窗。走查:登录秒进702ms/0邮箱字段/切换URL→register/邀请弹窗 ✅
- 认证定调贯彻:全栈无邮箱,username 主标识
### Wave 4 · P2 + pipeline 视觉 — ✅ (09e67a5/1c5606a);拆分 ⏸️ 待确认
- pipeline 视觉签名(纯视觉/rule3 合规):脚本头 model mono 签名、视频卡 meta 三段(时长·分辨率·~¥0.45)、Seedance 预估「约15秒」、时间轴 zoom 50-200
- P2:账户 25 处 mono 字号对照 V1 收回 9-11.5px 分级 · 商品卡缺三视图徽标(真实字段判定)
- ⏸️ **pipeline 巨页拆分(3500 行→5 子组件)**:计划自身写明「回归风险过高可单列后续、改前与用户确认」。无人值守乱拆会危及你看重的管线行为 → **defer,待你确认再做**(建议配监督逐一回归脚本/故事板/生成/导出/拖拽)
---
## 测试基线(Wave 5)
- `npx tsc --noEmit`**0**(每波)· `npm run build`**0**(每波)
- 后端 `DB_ENGINE=sqlite manage.py test`**42 测试,35 过 + 7 失败**;7 失败 = **预存的** image provider 路由问题(stash 改动跑 baseline 复现同样 7 条),**零新增回归**;新增 3 条邀请测试全过
- 14 路由无头 boot 全过、0 console error、登录秒进无邮箱
- 截图存档:`_qa_shots/wave{0,1,1b,3-batch1..4,35,4}/`
---
## ⚠️ 移交你拍板/动手的事项(我按规矩绝不自作主张)
### 1. 两组 migration 低峰 apply 到远程 MySQL
索引 + Invitation 表只生成了迁移、看了 SQL,**没 apply 你的远程库**(rule 3)。apply 后「邀请制生成码 + 凭码注册」才能真·端到端(逻辑已被后端 5/5 测试在 sqlite 证)。低峰执行:
```bash
cd core/backend
# 先干跑看将执行的 SQL(不落库):
DB_ENGINE=mysql ./.venv/Scripts/python.exe manage.py sqlmigrate accounts 0003
# 确认后 apply(远程 ALTER 加二级索引,MySQL8 多为 online,仍建议低峰):
DB_ENGINE=mysql ./.venv/Scripts/python.exe manage.py migrate accounts # Invitation 表
DB_ENGINE=mysql ./.venv/Scripts/python.exe manage.py migrate assets billing projects ai products # 7 条复合索引
# apply 后重启后端(当前是 --noreload),邀请制即可真跑
```
### 2. pipeline 巨页拆分(高风险)
要做就单开一轮、我配监督逐一回归。你说一声。
### 3. Wave 2 part2 暂缓项 + 真实数据缺口
poll-reviews 挪 Celery / 写 action 瘦身 / 各页真实数据缺字段(owner/完成数/review_status初值/log)——附了落地方案在进度文档,要补哪个说一声。
---
## 没做的(明确范围,非遗漏)
- **git push**:全程没 push(rule 1),都在本地 dev,commit 链 8a0ae6a→1c5606a
- 平台级后台管理页(计划定:本期不做、单独立项)· 商品详情任务记录Tab(V1 hidden 死代码,不还原)· 手机号注册(本期不做)