内容分四块: 1、产品规划产出 —— MCN 短视频整合营销工作台的①段五份(1a 需求/1b 竞品/1c 画像/1d 策略/1e 场景)、②段两份(2a 功能/2b 布局)、③段界面(DESIGN.md 契约与令牌表 + mcn-workbench.html 原型 + 实测/会诊/审查三份 + 23 张闸门截图)。 2、开源竞品调研 —— 5 个内容工作台项目的取证原始件与 1b 系列分析文档。 3、参考资料 —— 竞品视频抽帧 1145 张 + 2 个源视频 + 功能点截图。 4、机制侧 —— 协作脚本与状态台账、工作区记忆日志、抽帧/OCR 脚本。 .gitignore 只排运行时日志、脚本备份副本与一次性探针输出,其余按原样入库。
24 KiB
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 §一:
自检(#/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 条 |