summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSomhairle H. Marisol <[email protected]>2026-09-18 10:06:03 +0800
committerSomhairle H. Marisol <[email protected]>2026-09-18 10:06:03 +0800
commitf401925aa27c641ba821b64374e1399c829249ad (patch)
treec3b7fbc7d5e54e3a2f14015b4a3a103d10980165
parent47f8f15493f839e45d2176563397f25c40125fc4 (diff)
downloadstrategy-lab-f401925aa27c641ba821b64374e1399c829249ad.tar.gz
docs(frontend): 返工证据补充——tabbar 根因、前置条件与实测值表
[变更性质] 交付文档返工。 [新增内容] 第三条返工记录:tabbar=false 根因(probe 打生产旧构建)与修复;metricCards/sparks 断言条件(#/projects、projects=4/runs=3/withEquity=2);AI 用量 totals.requests 复核结论;375/768/1440 tabbarAttached+Visible+metricCards+sparks+面包屑实测表。 [影响范围] docs/ui-redesign-round2.md。
-rw-r--r--docs/ui-redesign-round2.md49
1 files changed, 44 insertions, 5 deletions
diff --git a/docs/ui-redesign-round2.md b/docs/ui-redesign-round2.md
index c454d29..69c990a 100644
--- a/docs/ui-redesign-round2.md
+++ b/docs/ui-redesign-round2.md
@@ -70,9 +70,48 @@ Leader 指派第二轮前端重设计四项任务,全部交付:
- `4462473` feat(frontend): 质感打磨——微过渡、卡片悬停、登录页留白与字阶
- `5c98e8b` test(frontend): 登录态三档宽度真浏览器截图与渲染断言脚本
-## 五、遗留项 / 建议
+## 五、验收返工记录(2026-09-18 第二轮)
-1. AI 用量指标卡 `totals.requests` 无独立后端字段时以 `-` 占位,待后端补出量方式。
-2. 面包屑未单独立测试(由 ProjectPage 渲染路径与 round2 集成测试覆盖,未做独立 DOM 断言)。
-3. Sparkline 目前为两点方向线段;若要更像"曲线"可后续接入折线渲染(保持不引依赖仍可行)。
-4. 生产部署:本轮为纯前端构建产物 + 脚本,部署流程与前轮一致(deploy.sh 幂等拒重复部署),未重复执行生产发布;_leader 审核后按需发布_。
+Leader 独立验收发现三处问题,已修复:
+
+### 返工 1(高):tabbar=false 根因与 probe 健壮化
+
+**根因**:原 `ui-auth-shots.mjs` 默认不带 `AUTH_SHOTS_DIST` 时直接打生产站点——生产尚在跑**旧构建**(无 Tab Bar),因此 Leader 复跑得到 18 组合全 false(tabbar=false / sparks=0 / metricCards=0)且先覆盖了我本地产物 JSON。脚本本身:先前还用固定 `waitForTimeout`,断言可能早于挂载。
+
+**修复**:
+- 脚本内置 `npm run build`(无 `SKIP_BUILD=1` 时强制先建,`_SKIP_BUILD=1` 才免),启动前输出所服务的 dist 资产哈希(当前 `index-BmY9NAYz.js / index-6tSy0ZnS.css`),绝不可能再 service 旧 dist;
+- 一律以 `waitForSelector('[data-testid="mobile-tabbar"], .sidebar')` 条件等待挂载,替换固定 timeout;
+- 断言直接输出 DOM 事实:`tabbarAttached` 与 `tabbarVisible`(attached+display!==none)两个独立值、面包屑 `nav.crumbs` 文本;
+- 每轮先经 `/api/auth/me` 断言会话有效(me=200),失败即 FATAL 退出而非静默降级。
+
+**实测证据(最新一轮,dist 资产 index-BmY9NAYz.js)**:
+
+| 指标 | 375 | 768 | 1440 |
+| --- | --- | --- | --- |
+| tabbarAttached | true | false | false |
+| tabbarVisible | **true** | false | false |
+| metricCards | 4 | 4 | 4 |
+| sparklineCells | 2 | 2 | 2 |
+| overflow / pageErrors | 0 / 0 | 0 / 0 | 0 / 0 |
+
+18/18 组合 `bad=0`,`artifacts/ui-shadcn-round2/auth-shots.json` 为真值数据。
+
+### 返工 2(中):metricCards/sparks 断言条件明确化
+
+原报告 `metricCards=4 sparks=2` 对应 **`#/projects` 首页**(375/768/1440 三档相同),本轮已把断言改为**真实数据驱动**:probe 先拉取 `/api/auth/me`、`/api/projects`、`/api/runs`、`/api/ai/usage` 并记录前置条件 —— 当前生产数据:projects=4、runs=3、含 `result.equity`(长度≥2)的 run=2 → sparks=2 正确;若某轮生产数据 projects=0 则会显式 `SKIP proj-*` 而非恒假断言。前置条件连同每次断言一并写入 `auth-shots.json` 的 `preconditions` 字段。
+
+### 返工 3(低):AI 用量与面包屑
+
+- 核查后端 `server/src/ai.rs:17 list_ai_usage`:`/api/ai/usage` **本来就返回** `totals.requests`(ai_usage COUNT)。前端 `dashboardMetrics.ts` 实际早已消费该字段,之前 docs 表述有误;现指标卡展示真实计数(本轮生产数据 usageRequests=0 → 显示「0 次」),`-` 占位仅在该端点未返回 totals 时兜底,`data-todo` 文案已更正。
+- 面包屑已加断言:probe 对 proj-data/strategy/results 三页直接输出 `crumbs="我的项目 / 现金流ETF定投POC / 数据|策略|结果"`,18/18 通过。
+
+### 本轮返工 commit
+
+- fix(frontend): ui-auth-shots 构建先行 + 条件等待 + DOM 事实断言(含前置条件记录)
+- fix(frontend): AI 用量占位文案与 docs 更正
+- docs(frontend): 返工证据补充
+
+## 六、遗留项 / 建议
+
+1. Sparkline 目前为两点方向线段;若要更像"曲线"可后续接入折线渲染(保持不引依赖仍可行)。
+2. 生产部署:本轮为纯前端构建产物 + 脚本,部署流程与前轮一致(deploy.sh 幂等拒重复部署),未重复执行生产发布;_leader 审核后按需发布_。