217 lines
24 KiB
Markdown
217 lines
24 KiB
Markdown
# 3d · 审查报告(③段界面交互收口)
|
||||
|
|
|
|||
|
|
> 落点:`执行会话/目标-根据1a需求文档生成MCN短视频整合营销-d85687/ui/3d-审查报告.md`
|
|||
|
|
> 模板:`SKILL.md` §3d + `references/execution-runbook.md` §5.4/§5.5、§七(固定七节)
|
|||
|
|
> 交付物:`ui/mcn-workbench.html`(原型)+ `ui/DESIGN.md`(规范)+ `ui/3b-实测记录.md`(实测)+ `ui/3c-GPT会诊.md`(会诊)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 一、范围
|
|||
|
|
|
|||
|
|
| 项 | 内容 |
|
|||
|
|
|---|---|
|
|||
|
|
| 段与子步 | ③段界面交互 · 3d(D3 收口 + D4 动效 + D5 终检 + Gate-2 / Gate-3) |
|
|||
|
|
| 被审对象 | `ui/mcn-workbench.html`(单文件自包含原型,八页 + 七浮层)+ `ui/DESIGN.md`(设计契约与令牌) |
|
|||
|
|
| 覆盖页 | P1 矩阵总览 / P2 选题雷达 / P3 资产库 / P4 创作台 / P5 发布中心 / P6 账号画像 / P7 复盘台 / P8 记录与对账(**八页全审,无抽样**) |
|
|||
|
|
| 覆盖状态 | 正常 / 加载 / 空 / 出错 / 禁用 / 无权限 —— 逐页 × 逐态 = 48 组合 |
|
|||
|
|
| 不在范围 | ④段(原型说明区与演示引导);②段的板块清单与信息档位(已冻结,本段不动);暗色主题(见 `DESIGN.md` §五 第 2 条) |
|
|||
|
|
| 证据留档 | `_gate_shots/` **23 张视口帧**(全部经 PNG 像素尺寸校验);`ui/_tools/` 三个可复跑脚本 |
|
|||
|
|
|
|||
|
|
**本轮是否跑了脚本**:**跑了**。三条,全部可复跑,命令见 `3b-实测记录.md` §一:
|
|||
|
|
|
|||
|
|
```text
|
|||
|
|
自检(#/selftest 路由,原型自带) → PASS 81 / FAIL 0 @1440×900
|
|||
|
|
变异对照(_tools/mutate_test.py) → 13 / 13 通过
|
|||
|
|
骨架冻结闸门(_tools/check_skeleton.py)→ PASS 八页 37 个板块与②段逐页逐位一致
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**结构核对表的每一个数,都来自上面这三条脚本的输出或 DOM 取值,⛔ 无一处是目测截图。**
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 二、挡位
|
|||
|
|
|
|||
|
|
**标准档**(本段未升未降)。理由:这是新产品的第一版原型,不是发版前的精修;`SKILL.md` §供给·方法主线 给的默认主线就是 `oil-ui-pro`,挡位按 runbook 默认的**标准**执行 —— 三条门(Gate-1 / 2 / 3)全过,但不上「多方向比选」与「严格档」的额外轮次。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 三、阻断项表
|
|||
|
|
|
|||
|
|
口径:`阻断` = 不清零就不能交。**本轮共 15 条,14 条已清零,1 条未清零并留档。**
|
|||
|
|
|
|||
|
|
| # | 阻断项 | 观察(现象) | 根因 | 处置 | 现状 |
|
|||
|
|
|---|---|---|---|---|---|
|
|||
|
|
| B-01 | 整份设计系统在屏幕上失效 | 原型打开后令牌全不生效 | 样式表顶部注释里 `--t-*/--raw-*` 的 `*/` 提前闭掉注释,吞掉整个 `:root` 令牌块 | 改写注释文字 | ✅ 清零 |
|
|||
|
|
| B-02 | 全表行分隔线一直没画出来 | 列表行之间没有任何分隔线 | `.list-row:first-child{border-top:0}` —— 每行都包在 `<li>` 里,于是每行都是自己 `<li>` 的 first-child | 改为 `li:first-child > .list-row` | ✅ 清零(+变异 M10) |
|
|||
|
|
| B-03 | 判据除数为 0 时恒 PASS | 上面那条真缺陷没有任何门禁报它 | `gap>=2*bw` 在 `bw=0` 时恒成立、比值算成 `Infinity` | 除数为 0 一律判红 | ✅ 清零 |
|
|||
|
|
| B-04 | 浮层不浮 | 浮层渲染在文档流末尾,得滚到页尾才看得见 | `#layer-root` 与 `.layer` 都没有定位样式 | 遮罩 `fixed inset:0` + 层本体 `fixed` 居中 | ✅ 清零 |
|
|||
|
|
| B-05 | 行高随文字长短乱跳 | 同一张表量出 66 / 82 / 100px 三种行高 | 状态标放在操作列把 `auto` 列撑宽,只有那一行折行 | 状态标移到名称旁 + 行内每段不许换行 + 新增「行高齐」判据 | ✅ 清零(+变异 M7) |
|
|||
|
|
| B-06 | 自检在窄视口给出假 PASS | 报「一屏装得下 10 行」,实际 5 行 | 驱动几百次点击后浏览器自动滚动,`rect.top` 变负,容量公式虚高 | 加「量尺寸前页面在滚动零点」守卫 | ✅ 清零(+变异 M9) |
|
|||
|
|
| B-07 | 手机导航「既不是一条、也没滚动」 | 导航条占 161px 高,4 个分组竖着堆 | 导航分组挂在 `<nav id="nav">` 里,而 `#nav` **一条样式都没有** ⇒ 仍是块级容器 | 补 `#nav{display:flex;flex-flow:row nowrap}` + 整条链 `flex:0 0 auto` | ✅ 清零(161px → 53px) |
|
|||
|
|
| B-08 | 顶栏标签折行 | 「演示 · 账号」折成两行,顶栏被顶到 70px | `.topbar-label` 没有 `white-space:nowrap` | 补 nowrap | ✅ 清零(→ 69px) |
|
|||
|
|
| B-09 | 两个二次确认浮层其实有两个可见关闭控件,判据却报「出口 = 1」 | 核销层与发布层各有一颗「取消」 | 判据只数 `.layer-close` 这个类名,把可见的「取消」从眼皮底下藏掉了;核销层的「取消」还复用了 `X-close` | 判据改成「中性出口只认 `X-close`」+「决策型关闭单列报数」;核销取消拆出 `CHECKOUT-CANCEL` | ✅ 清零(+变异 M13) |
|
|||
|
|
| B-10 | 截图尺寸全部比标称大 16×95 | 「1440×900」的帧实际是 1456×995,同一份报告里 dump-dom 又按 640 说话 | Chrome 两条通道对 `--window-size` 的解释不同(截图=视口,dump-dom=视口+16/95),而脚本对两者用了同一个偏移量 | 按模式分开算 + 每次截图后从 PNG 的 IHDR 读真实像素比对目标视口 | ✅ 清零(23 张帧全部 ✓) |
|
|||
|
|
| B-11 | 制作黑话写在界面上 | 状态面板上贴着「这里是 X 的 empty 态。」 | 给做原型的人看的说明被写进了界面,而 `STATE_COPY` 已经铺好用户向文案 | 删掉那句话;按钮改「回到正常内容」 | ✅ 清零 |
|
|||
|
|
| B-12 | 主列表可读性 | 「今日该发:待发:3 分钟快手菜」冒号连用,独立评审读成错字 | 示意数据 `today` 字段的值里自带冒号,被拼进「今日该发:…」 | 5 行数据改为空格分隔 | ✅ 清零 |
|
|||
|
|
| B-13 | 窄屏看不出当前在哪一页 | 横滚标签栏里当前项滚在视野之外 | 没有把当前项带进视野的逻辑 | 只调 `.sidebar` 自己的 `scrollLeft`(⛔ 不碰 `window`,否则误触 B-06 的守卫) | ✅ 清零 |
|
|||
|
|
| B-14 | `--full`(整页长图)静默失效 | 带该参数产出的还是视口帧 | 无头 CLI 这条通道只能截视口 | 删掉该参数与 `_full/` 目录,不留撒谎的开关 | ✅ 清零 |
|
|||
|
|
| **B-15** | **≤767px 宽时一屏装不满 6 行** | 641×900 与 640×900 实测 **5 行**;500×844 实测 **4 行 / 5 行** | 页面外壳吃掉首屏:≤767px 顶栏折成两行(641px 实测 109px)、≤640px 导航变标签栏。**行本身没变肥** —— 行高 67px、行高差 ≤2px、块内分隔 1px 在任何视口都 PASS | 未在本段修 | ❌ **未清零,留档待裁定** |
|
|||
|
|
|
|||
|
|
### B-15 为什么没在本段修,以及留给用户的两条路
|
|||
|
|
|
|||
|
|
判据原文(`layouts-tooling.md` §1)是「一屏可见行数 **≥ 6(900px 高时)**」,**不带宽度条件**。实测出来的边界是 **768px 宽**:≥768px 时顶栏单行、导航竖排,容量 6–10 行;≤767px 时页面外壳折行,容量掉到 4–5 行。三条路,**两件事必须挑一件**:
|
|||
|
|
|
|||
|
|
| 选择 | 代价 |
|
|||
|
|
|---|---|
|
|||
|
|
| A. 把支持宽度下限写成 **≥768px**,手机形态只承诺「可用」(布局折行、零横向溢出、全路径可点通),不承诺 6 行密度 | 要在契约里**明文加一条本段自定的宽度条件**;依据是 `1a §七` 已明确第一版不做移动端 App |
|
|||
|
|
| B. 压掉每行的次级信息,把行高从 67px 压到 40px 上下,让窄屏也装得下 6 行 | 那 3 条次级信息是②段《界面布局》定的档位,③段不许改 ⇒ 得回②段改档 |
|
|||
|
|
| C. 动页面外壳(顶栏控件精简、导航折叠) | 顶栏那几个控件都登记在交互清单里(`G-06`/`G-08`/`G-10`),删或搬家等于改交互清单 |
|
|||
|
|
|
|||
|
|
⛔ 本段**没有**选任何一条就宣布通过:判据一个字没改,`needRows=6` 写死,三个窄视口的 FAIL 原样留在自检输出里。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 四、建议项表
|
|||
|
|
|
|||
|
|
口径:每条要么**修掉**,要么**显式写「已知不修 + 原因」**。⛔ 不接受「基本没问题」。
|
|||
|
|
|
|||
|
|
| # | 建议项 | 结论 |
|
|||
|
|
|---|---|---|
|
|||
|
|
| S-01 | 密度只有同类工具的 40–50%(评审:Linear 行高 32px,本原型 67px) | **已知不修**:判据是「≥6 行 @900px 高」,1440/1280 实测 10 行、1024/768 实测 6 行,达标。再压只有砍次级信息一条路 ⇒ 属②段档位,见 B-15 选择 B |
|
|||
|
|
| S-02 | 处处 24px 圆角大卡,列表本该是「表格行 + 发丝线」 | **部分已修**:列表**行**本来就是无框行 + `border-top` 发丝线(B-02 修的就是它真的画出来);剩的是承载列表那层**面板**仍是圆角卡,改为无框会让 37 个板块散在底纸上失去分层。已知不修 |
|
|||
|
|
| S-03 | 「左标题右说明」分栏里,右侧小字像给评审看的注释 | **已修**:逐条过了一遍板块头右侧的小字 —— 读出「这是在解释口径」的那几条已改写或删除(B-11、P4 输入提示、空引用文案)。剩下的多是②段要求的计数与口径(「5 项 · 按截止时间排」),保留 |
|
|||
|
|
| S-04 | P2 KPI 标签下有下划线,像链接却不可点 | **未能复核**:代码里 `.stat` / `.stat-label` 都没有 `border-bottom` / `text-decoration`;4 个 KPI 里 2 个是真按钮(`P2-01`/`P2-02`)。⛔ 不做无依据的改动,如实记为未复核 |
|
|||
|
|
| S-05 | 每个分组标题下都压一条通栏线(重复线框) | **不采纳**:`layouts-tooling.md` §1 原文「边框只上不围 —— 行间用 `border-top`」;`visual-review.md` 自己也写「承担风格和结构的线不算问题」。删掉它板块头与内容就分不开 |
|
|||
|
|
| S-06 | 同一状态两种画法(当前导航项,P4 看着是深色实心) | **不采纳(评审判读)**:侧栏当前项八页同一套样式(`--surface-soft` + 左 3px `--accent`)。自检逐页核过:8 项导航里 `is-active` 只有一个。评审把侧栏当前项与**步骤条里的当前步**看混了 —— 后者按设计就该更重 |
|
|||
|
|
| S-07 | 侧栏 `账号画像(跑图)` 与 `账号画像` 重复 | **不采纳(评审判读)**:那三个字是「跨组」不是「跑图」;字样直接来自②段 `2b §一` 的一级导航表「(跨组)账号画像」,③段不许改②段定的导航名。由此暴露的「括号夹在词中间不好读」记为已知取舍 |
|
|||
|
|
| S-08 | 导航计数只给了一半(创作台 / 账号画像 无数字) | **已采纳·本段不改**:计数=「这页有几件事等你做」,没数字的两页当前确实没有待办。但「一半有半数无」读起来像掉数据,这条提得对 —— 改动落点在交互清单 `G-05` 的反馈列,本轮不动 |
|
|||
|
|
| S-09 | 窄屏正文被省略号硬截断 | **已知不修**:这是上一轮为「行高齐」付的代价 —— 行内每段不许换行 + 省略号,是行高能恒为 67px 的唯一办法(放开换行行高跳到 66/82/100px,变异 M7 盯着)。完整原文挂在行上的 `title` 里 |
|
|||
|
|
| S-10 | 每行右侧指标左边缘没对齐成列 | **已知不修**:右栏是「标签 + 值」两行、整块右对齐到块右内衬;改成逐字对齐会把长短差异大的值拉成锯齿 |
|
|||
|
|
| S-11 | 浮层右上「×」套着淡紫圆圈,像常驻焦点环 | **不采纳**:那是 `:focus-visible` 焦点环(`--accent`),出现是因为浮层打开后焦点按设计落在层内第一个可聚焦件上,而它正好是 ×。⛔ 不能改成 hover 才出现 —— 改掉就把键盘用户的定位点弄丢了。已记为「截图里带焦点环」的已知现象 |
|
|||
|
|
| S-12 | 顶栏演示控件、`假设 2 项`、页面编号 `P1…P8` 可以删 | **不采纳**:都是原型自带件 —— 演示控件(`G-07`/`G-09`)用来把页面掰到六态给评审看,编号用来定位页面。删了评审就看不到六态 |
|
|||
|
|
| S-13 | 「空面板」(P2 评论区洞察、P4 资产引用区、P5 检查结果)稀释首屏 | **已知不修**:三块都是②段冻结的板块,⛔ 不许折叠或删除。看着空是因为示意数据只填了主路径;每块的空态文案都在(`STATE_COPY` 逐页不同) |
|
|||
|
|
| S-14 | 动作甩到最右边、离对象半屏远 | **不采纳**:操作列右对齐成列是刻意的(`layouts-tooling.md` §5.5 要求同类动作在同一轴上对齐);两栏也不是等宽(`minmax(0,400px) minmax(0,1fr)`) |
|
|||
|
|
| S-15 | P1 两栏平权、没有主次 | **不采纳**:并排是密度判据逼出来的,有反事实实测 —— 落回单列时账号矩阵首行顶 530px、一屏只装得下 5 行(<6)。见 B-15 选择 A |
|
|||
|
|
| S-16 | 记不住 —— 建议把 P1「账号矩阵列表」做成真正的矩阵 + 异常分布 | **已知不修·往上提**:块名与位置受②段冻结,「矩阵视图」是**信息呈现**变更,超出③段权限。**本轮最值得往上提的一条**,交主会话转用户 |
|
|||
|
|
| S-17 | 评审看不到的:点击/悬停/焦点行为、动效、检索结果、遮罩键盘可达性、另外四页 | **已补**:这些正是 3b 自检覆盖的 —— 71 个 ID 逐个真驱动(0 死控件)、六态 × 八页 48 组合、7 浮层 × 6 项。P3/P6/P7/P8 截图已补拍,本轮交接已改为八页全给 |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 五、状态覆盖核对表(六项逐页)
|
|||
|
|
|
|||
|
|
判据源:`SKILL.md` 铁律 2 的六态清单。⚠️ 逐项**数值**判据出自供给可选档的 `craft/state-coverage.md`,**本轮未动用可选档 ⇒ 该项无供给来源**(`DESIGN.md` §五 第 1 条),故只核「有没有、长什么样」,不编阈值。
|
|||
|
|
|
|||
|
|
机检结论:**六态 × 八页 = 48 个组合,全部渲染出内容**(自检第 10 行)。
|
|||
|
|
|
|||
|
|
| 页 | loading | empty | error | success | disabled | 无权限 |
|
|||
|
|
|---|---|---|---|---|---|---|
|
|||
|
|
| P1 矩阵总览 | ✅ 骨架行 +「正在取矩阵数据」 | ✅「还没接入账号」+ 去处按钮(→P6) | ✅ 显时间戳 + 重试 | ✅ 默认态 | ✅ 无待办时待办区禁用并说明 | ✅ 非管理员看利润列的遮罩说明 |
|
|||
|
|
| P2 选题雷达 | ✅「正在拉对标更新」 | ✅「监控名单是空的」+ 录对标号 | ✅ 拉取失败(退路=手工录入) | ✅ 默认态 | ✅ 未选账号时「转入创作」禁用 | — 不适用(本页对所有角色开放) |
|
|||
|
|
| P3 资产库 | ✅「条目加载中」 | ✅「这个分区还没有条目」+ 去处(→P2) | ✅ 读取失败(重试) | ✅ 默认态 | ✅ 无出处的条目「入库」禁用(门禁) | — 不适用 |
|
|||
|
|
| P4 创作台 | ✅「正在跑这一步」(带已跑秒数) | ✅「这一步还没有产出」 | ✅ 本步失败(保留已产出 + 重试该步) | ✅ 默认态 | ✅ 文案与封面缺一,进检查态禁用 | — 不适用 |
|
|||
|
|
| P5 发布中心 | ✅「检查中」 | ✅「还没有可发布的版本」+ 回 P4 | ✅ 检查自身失败 ⇒ **按不过处理**(fail-closed) | ✅ 无硬拦、可发 | ✅ 有硬拦项时「确认发布」禁用 | ✅ 未授权账号的版本标「无发布权限」并禁用该版 |
|
|||
|
|
| P6 账号画像 | ✅「画像加载中」 | ✅「还没有画像」+ 建画像 | ✅ 保存失败(保留编辑内容) | ✅ 保存成功提示 | ✅ 只读角色时字段禁用 | ✅ 非本人负责账号:可看不可改 |
|
|||
|
|
| P7 复盘台 | ✅「正在读这条的数据」 | ✅「还没有能复盘的内容」 | ✅ 数据读不到 ⇒ 转手工录入 | ✅ 回写成功提示 | ✅ 未写归因时「回写」禁用 | — 不适用 |
|
|||
|
|
| P8 记录与对账 | ✅「记录加载中」 | ✅「还没有发布记录」 | ✅ 读取失败(重试) | ✅ 核销成功 | ✅ 未选中记录时「核销」禁用 | ✅ 利润列对非管理员隐藏(列级遮罩) |
|
|||
|
|
|
|||
|
|
> 口径:`disabled` 与 `无权限` 是两件事 —— 前者「当前条件不满足」(自己能解开),后者「角色不允许」(自己解不开)。界面文案分开写,⛔ 不拿「不可用」一句话糊过去。
|
|||
|
|
> 留档截图:`p1-empty-1440.png`、`p4-noperm-1440.png`、`p5-error-1440.png`;其余 45 组由自检逐组渲染核过。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 六、结构核对表(契约值 / 实测值 并排,数字抄自脚本输出)
|
|||
|
|
|
|||
|
|
### 6.1 契约里写了数字的项
|
|||
|
|
|
|||
|
|
| 项 | 契约值 | 实测值 | 取法 |
|
|||
|
|
|---|---|---|---|
|
|||
|
|
| 强调色填充面积占比 | ≤5% | **0.52%**(八页最高:创作台,1 个填充块) | DOM:逐个元素比 `backgroundColor` ≡ `--accent`,与视口求交累加 ÷ 视口面积 |
|
|||
|
|
| `--warn` 对 `--surface` 对比度 | ≥4.5:1 | **5.93:1** | 真实像素计算(WCAG 相对亮度) |
|
|||
|
|
| `--accent-text` 对 `--surface` 对比度 | ≥4.5:1 | **4.76:1** | 同上 |
|
|||
|
|
| `--ink-faint` 对 `--surface` 对比度 | ≥3:1(仅非正文) | **3.55:1** | 同上 |
|
|||
|
|
| 一屏可容纳记录行数(P1 账号矩阵) | ≥6 @900px 高 | **10 行** @1440×900(首行顶 214px、行距 67px) | DOM:首屏可用高度 ÷ 行距。⚠️ 是「装得下几行」不是「画了几行」—— 示意数据 5 条,实际永远 ≤5 行(数据用尽,非被截断) |
|
|||
|
|
| 一屏可容纳记录行数(P2 对标列表) | ≥6 @900px 高 | **7 行** @1440×900(首行顶 402px) | 同上 |
|
|||
|
|
| 页内行高齐 | ≤2px 差(本段追加判据) | **67–68px,差 1px** | DOM:逐行 `getBoundingClientRect().height` |
|
|||
|
|
| 视觉层间距 / 块内相邻行分隔 | ≥2 | **32px / 1px = 32**(4 个视觉层) | DOM:按 `.band` 归并视觉层后相减;分隔取各行 `borderTopWidth` 最大值 |
|
|||
|
|
| 实际在用字号档数(P1) | ≥3 | **5 档**:12 / 14 / 16 / 18 / 24px,相邻差 2/2/2/6 | DOM:叶子节点 `fontSize` 去重 |
|
|||
|
|
| 块间距 / 块内间距 | ≥2 | **32 / 8–16 ⇒ 2.0–4.0** | 令牌登记值 + DOM 复核(`gap` 全部落在登记刻度内,9 个刻度) |
|
|||
|
|
| 横向溢出 | 0 | **0**(1440 / 1280 / 1024 / 768 / 641 / 640 / 500,八页逐页亦 0) | DOM:`scrollWidth − clientWidth` |
|
|||
|
|
| 浮层中性关闭出口 | 恰好 1 | **7 / 7 个浮层均为 1**(另有决策型关闭 0–1 个,已单列报数) | DOM:可见的 `[data-act="X-close"]` 计数 |
|
|||
|
|
| 同屏主档按钮 | ≤1 | **逐页 1 个**(P1 无主档:本页只用弱档,按钮高度集合 {32px}) | DOM:逐页统计实底按钮 |
|
|||
|
|
| 顶栏高度 | 未写死(只看有没有折行) | **69px**(单行;补 `nowrap` 前是 70px,标签在中间折行) | DOM:`.topbar` 高度 + 诊断行 |
|
|||
|
|
|
|||
|
|
### 6.2 契约未写数字、本轮补登记的证据(⛔ 不留「无法判定」)
|
|||
|
|
|
|||
|
|
| 项 | 实测值 | 说明 |
|
|||
|
|
|---|---|---|
|
|||
|
|
| P1 各块落位(顶 / 高) | 今日待处理 @149+360 · 账号矩阵列表 @149+417 · 异常值提示 @599+215 · 本月表现最好的一条 @845+122 · 全局检索与随手记 @1000+113 | 前两块并排同顶(视口高 900) |
|
|||
|
|
| P2 各块落位(顶 / 高) | 对标监控概览 @165+139 · 对标内容列表 @336+417 · 评论区洞察 @785+108 · 选题库 @925+330 · 灵感速记 @1287+113 | — |
|
|||
|
|
| 反事实:P1 前两块落回单列 | 账号矩阵列表 @530+413 ⇒ 首行顶 530px、容量 **5 行**(<6) | 证明并排是密度判据逼出来的 |
|
|||
|
|
| 控制台报错 | **0 条** | 自检全程监听 `console.error` |
|
|||
|
|
| 量尺寸时的滚动零点 | `scrollY = 0`(P1 / P2 两处均核) | rect 取到的是相对视口的真值 |
|
|||
|
|
|
|||
|
|
### 6.3 Gate-3 八项肉眼过(真实渲染,非只看代码)
|
|||
|
|
|
|||
|
|
| # | 项 | 结论 |
|
|||
|
|
|---|---|---|
|
|||
|
|
| 1 | 裁切 | ✅ 无一页出现被裁掉的内容(23 张视口帧逐张看过) |
|
|||
|
|
| 2 | 重叠 | ✅ 无元素互相压盖 |
|
|||
|
|
| 3 | 失真 | ✅ 无变形拉伸;字体走系统栈,无回退异常 |
|
|||
|
|
| 4 | 失效控件 | ✅ 0 个死控件(71 个 ID 在 22 个场景里逐个真驱动过) |
|
|||
|
|
| 5 | 缺状态 | ✅ 48 组(六态 × 八页)全部渲染出内容 |
|
|||
|
|
| 6 | 响应式破损 | ✅ 七视口横向溢出全 0;≤640px 导航变横滚标签栏、两栏带落回单列(B-15 的密度缺口另计) |
|
|||
|
|
| 7 | 控制台报错 | ✅ **0 条** |
|
|||
|
|
| 8 | 字体回退异常 | ✅ 字体栈全部命中系统字体;`@font-face` 数量 0(选定套实测同此) |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 七、Gate 结论
|
|||
|
|
|
|||
|
|
### Gate-2(原型门)
|
|||
|
|
|
|||
|
|
**通过。** 依据:`DESIGN.md` 的十二字段契约与令牌表落盘(Gate-1 十项全过,见 `DESIGN.md` §四);八页 37 个板块与②段 `2b` 逐页逐位一致(骨架闸门正向 PASS + 反向变异两条都报红);六态 × 八页 48 组合全渲染;71 个 ID 逐个真驱动、0 死控件;对 §二 的令牌与 §二 表 2.4 交互清单做双向差集,表外可点元素为 **0**。
|
|||
|
|
|
|||
|
|
### Gate-3(交付门)
|
|||
|
|
|
|||
|
|
**桌面 / 平板档通过;手机档不通过,且已逐条留痕 —— 总判:有条件通过。**
|
|||
|
|
|
|||
|
|
- **通过的部分**:契约视口 1440×900 自检 **PASS 81 / FAIL 0**;1280 / 1024 / 768 亦为 **PASS 81 / FAIL 0**;§六 里契约写了数字的 15 项全部实测回填、无一项越界;Gate-3 八项肉眼检查全过;控制台报错 0。
|
|||
|
|
- **不通过的部分**:**B-15** —— ≤767px 宽一屏装不满 6 行(641×900 / 640×900 实测 5 行、500×844 实测 4 行 / 5 行)。**自检在这三个视口上就是红的(PASS 80/1 与 PASS 79/2),⛔ 没有靠改判据把它变绿。**
|
|||
|
|
- **条件**:B-15 的三条路(见 §三)得由用户挑一条;挑之前这一项挂在账上。
|
|||
|
|
- **另需明示**:3c 那次独立评审**不是** SKILL.md §3c 要求的「外部 GPT 会诊」(本会话没有对外模型通道,见 `3c-GPT会诊.md` §〇)。**未取得外部审查 ≠ 已通过。**
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 八、偏离单(本段收尾必附)
|
|||
|
|
|
|||
|
|
| # | 原要求(文件:小节) | 实际做法 | 原因 | 影响 | 处置 |
|
|||
|
|
|---|---|---|---|---|---|
|
|||
|
|
| D1 | 3b 实测走 `browser-harness`(`SKILL.md` §3b) | 原型自带自检 81 项 + 变异对照 13/13 + 无头 Chrome 23 张视口帧 + 逐条 DOM 取值 | 该通道绑定实时浏览器入口,本会话驱动不了 | 证据链全部可复跑;⛔ 但**没有「真人真点」这一层** | 持续偏离,待裁定是否补一次人工走查 |
|
|||
|
|
| D2 | D5 终检要 `1440x900` 与 `390x844` 两帧(`runbook` §5.3、§七) | 实测到 **500×844** 为止 | Chrome 窗口宽下限 516 ⇒ 视口最小 500;要 390 得走 CDP `setDeviceMetricsOverride` | 手机帧比要求宽 110px | 持续偏离;⛔ 报告一律写「500×844」 |
|
|||
|
|
| D3 | 对外只留视口帧,长图仅自检(`runbook` §七) | 未产出长图 | `--full` 在本机通道做不到,只能截视口 | 无 | ✅ 已修(参数与目录一并删掉) |
|
|||
|
|
| D4 | 3c 要「外部 GPT 会诊」(`SKILL.md` §3c) | 隔离上下文的独立评审执行者 | 无对外模型通道 | 与「异厂商外部审查」不是同一条通道 | 持续偏离,已明示 |
|
|||
|
|
| D5 | 逐页截图应八页齐备 | 首次交接只给了评审 4 页 + 2 个状态 + 2 个浮层 | 交接时按「主路径优先」挑了 8 张 | 评审自己指出 P3/P6/P7/P8 未覆盖 | ✅ 已补(`_gate_shots/p3-1440.png` … `p8-1440.png` 已存在) |
|
|||
|
|
|
|||
|
|
## 九、收口清单(对照 `runbook` §七 逐条)
|
|||
|
|
|
|||
|
|
| 检查项 | 结论 |
|
|||
|
|
|---|---|
|
|||
|
|
| 声明制走完(开工 / 每子步 / 每处偏离) | ✅ |
|
|||
|
|
| 供给核对做过(三处在位、选定套与记录一致) | ✅ `DESIGN.md` §〇 |
|
|||
|
|
| `DESIGN.md` 含十二字段 + 三层令牌 + 组件规格 + 字阶定值表 + 高度层级 + 布局脚手架 + 浮层单出口 | ✅ |
|
|||
|
|
| 骨架未漂(与②段逐页逐位对得上) | ✅ 机检 PASS + 双向变异报红 |
|
|||
|
|
| 分档已兑现、档位未被本段改动 | ✅ `DESIGN.md` §1.2 |
|
|||
|
|
| 页型已判;工具型三零 + §5.5 五条逐条过完 | ✅ 自检机核 |
|
|||
|
|
| Gate-1 自检项结果写在 `DESIGN.md` 末尾,无一项不过 | ✅ |
|
|||
|
|
| 原型单文件自包含、双击可开 | ✅ 无外链、无 `unpkg`、无外部 jsx |
|
|||
|
|
| 状态穷举六项逐条有结论 | ✅ §五 |
|
|||
|
|
| 每个按钮每个跳转真点过(含四态) | ✅ 自检 71 个 ID × 22 场景;⚠️ 通道换成自检而非 `browser-harness`(D1) |
|
|||
|
|
| `3c-GPT会诊.md` 含提问原文 / 回答原文 / 四列处置表,未取到已明示 | ✅ ⚠️ 通道为独立评审执行者(D4) |
|
|||
|
|
| D3 收口按三处判据人工过完,阻断项清零 | ⚠️ 15 条中 14 条清零,**B-15 未清零且留痕** |
|
|||
|
|
| D5 终检真渲染,两视口各截一张,无「无法判定」项 | ⚠️ 1440×900 ✅;390×844 实测到 **500×844**(D2) |
|
|||
|
|
| 每个浮层手工数过出口 + Esc / 遮罩 / 焦点锁 / 焦点归还,结论落报告 | ✅ 7 浮层 × 6 项,含触发路径;另修掉「出口计数把取消藏起来」的真缺陷(B-09) |
|
|||
|
|
| 对外截图只用视口帧,长图未作评审输入 | ✅(长图通道本机做不到,已删) |
|
|||
|
|
| 契约里每个数字实测回填,「契约值 / 实测值」并排 | ✅ §六 |
|
|||
|
|
| Gate-2 与 Gate-3 均有书面结论 | ✅ §七 |
|
|||
|
|
| 重大改版:旧版在磁盘上 + 给出新旧差异 | 不适用(本段首次交付,无旧版) |
|
|||
|
|
| 偏离单已附,且无静默偏离 | ✅ §八 共 5 条 |
|