所有数字来自
scripts/verify-v16.mjs(= v15 的 1–9 项 + v16 的 10–12 项)与scripts/verify-visual-v12.mjs, 改前基线用--from HEAD从 git 导出旧代码单独起服务量(代码指纹见下),没有手填。 截图:docs/v16-before-desktop.png/docs/v16-after-desktop.png/v16-after-desktop-me.png(选了赵磊)/v16-after-desktop-nobody.png(本月无成果)/v16-after-mobile.png(393)。
改前代码 view-workbench.js sha1 756ce7847569(HEAD 2010104),改后 cc98776b00f2(同见 docs/v16-after.json 头部)。
附带:scripts/verify-cjk.mjs(中英混排 U+2009)本轮由 ✗(7 处普通空格残留、样本 2/3)→ ✓ 全部达标:工作台新写的动态文案都走了 t(),机会卡「分 · N 人」和「N 天前」也补上了。
| # | 问题 | 改前 | 改后 | 依据 |
|---|---|---|---|---|
| 1 | 三张短卡太空 | 3 张 360×194,内容密度 3.44 / 2.58 / 2.72(字/万 px²),第三张还是内部视角的「我的环节」 | 4 张 270×166,密度 6.25 / 5.35 / 9.82 / 6.02;dr1 基准 8.6。3/4 张 ≥ 基准 70%,D 卡(最高分)仍 低于 基准 —— 见 §4 第 1 条,没完全做到 | verify-v16 [10] |
| 2 | 深色卡颜色太杂 | 4 种色相(red/orange×2、blue×2、teal×1、rose×1 = S1–S5 五色点) | 1 种(琥珀 = 「人卡住」那一个点);阶段进度改灰阶细条;「我的环节」已删;时间线状态点也改成灰阶明度 | verify-v16 [11],dr6 深卡实测色相 1 |
| 3 | A 卡「待评分」一行中间一个大空白 | 左右两栏 + 右栏 margin-top:auto 贴底 |
改成一条通栏列表:卡名吃掉剩余宽度,右侧「N 人 · 均 X」+ 方角胶囊(76 / 去评),中缝 32px 消失 | 量图 dr1「左标题 + 右值」 |
| 4 | 底部按钮笨重 | C 卡一颗 32px 紫底实心按钮「全部 →」;机会卡里 3 个 26px 灰底分段按钮 |
紫按钮删除,改文字链「全部 →」;分段改静默文字行(20px 高、无底无描边、选中项加粗 + 1px 下划线) | verify-v16 [12]:工作台 >32px 的按钮 0 个;dr6/dr1 卡内动作都是文字 |
| 5 | v12 回归:左卡连续空白 56px | 56px(v15 报告;本次用同一脚本复测 68px,实时数据下) | 54px | 没有解决 → 见 §4 第 2 条(两个约束数值互斥) |
| 项 | 改前 | 改后 | 要求 |
|---|---|---|---|
| A / B 列宽 | 8 : 4(744 / 360) | 8 : 4(746.7 / 365.3,12 列 + gap 16) | 8 : 4 ✓ |
| A/B 高度差 | 0px | 0px | ≤2 ✓ |
| B 卡底色 / 最差对比度 | rgb(24,24,27),8.6:1 | rgb(24,24,27),8.6:1 | <0.35 亮度 / ≥7 ✓ |
| 短卡高差 | 0px | 0px(166 / 166 / 166) | ≤2 ✓ |
| 主列块间距 | 32 / 47 | 32 / 47 | 32 ✓ |
| 卡片内边距 | 全部 20 | 20×5 + 16×4(4 张短卡 16) | 20 ✗ → 有意为之,见 §4 第 3 条 |
| 字号档 | 5 档(12/14/16/20/32) | 6 档(12/14/16/20/28/32) | ≤5 ✗ → 有意为之,见 §4 第 4 条 |
| kf-spark | 0 | 0 | ✓ |
| 普通卡片玻璃 / 阴影 | 0 / 1(四页) | 0 / 1(/reports 的 6 个是打开的筛选浮层) | ✓ |
| 空态:未选身份 | A 363px | A 378px,五阶段全员,无虚线框,卡池进度 3 行 | 实测 |
| 空态:本月无成果 | A 561px | A 427px(-134);「最高分」卡换成「本月成果 0 份」;待评分 4 条真实列出 | 实测 |
| 空态:没人卡住 | 仍深底 + 绿点 | 仍深底 + 灰点(灰阶,去掉了第 2 个色相) | 实测 |
| 移动端 393 | 无溢出 | scrollWidth 393 = 393;A/B 堆叠;短卡 2×2;字号 6 档 | 无溢出 ✓ |
| v12 视觉 | 字号 7 档 / P3 失败 | 字号 6 档(v12 上限 5,仍 ✗);圆角违规清零(0/8/12 三种);P3 仍 ✗ | 见 §5 |
| 检查 | v15 改后 | v16 改后 |
|---|---|---|
| 圆角种类 ∈ {8,12,20} | ✗ 4px×4 | ✓ |
| 原生外观控件 / 描边 / 纯黑 | ✓ | ✓ |
| 字号档 ≤5 | ✗ 5 档(12/14/16/20/32) | ✗ 6 档(12/14/16/20/28/32) |
| 同排卡片高度差 | ✓ | ✓(6 行 0 超差) |
| 卡内连续空白 ≤24 | 5 处 | 4 处(都是短卡「数字 → 结论行」两端的 35–37px,dr1 同类间距 31/30;短卡整卡 166px,再压就没形状了) |
| hover / P1 / P2 / 底部空白 | ✓ | ✓ |
| P3 两栏等高 + 左卡 ≤32px | ✗ 56px | ✗ 54px(见 §4-2) |
24 字 / 270×166 = 5.35(基准 8.6,线 6.02)。原因:D 卡的全部内容就是「最高分 / 82 / 高于卡池均分 75 · 最高一张」, 没有更多真实数据可写(每张卡的评分人数、评分分布 core 里没有)。为了让数字变好看去编一条,违反任务书「不许硬加信息」, 所以停在这里,并把结论行写满到「谁的最高 / 和谁比 / 差多少」,不再留空。C、E、F 三张过了线。 另外 4 张卡底边对齐后,数字与结论行之间是 37px 空白(v12 记的 4 处),这是「结论行贴底」换来的 —— dr1 是数字→结论 31px、结论→底 30px,我们数字→结论 37px、结论→底 20px,分布不同但总量接近。
v12 的量法(verify-visual-v12.mjs P3):取左卡里「有自己的文字节点的叶子」按顶边排序,量相邻两个叶子之间的竖直间隙,取最大。
margin-top:auto 贴底:状态名行被推到 Y≈333 附近,状态名 → 第一行列表 之间变成 54px(现在是 0)、
阶段格 → 「卡池进度」标签 之间变成 ~85px —— 只是把洞挪到上面,而且更大;任务书 v15 定的是「卡片内边距 20」,但 v16 的短卡从 360 宽缩到 270 宽(筛了 dr1 的 232–249 + gap 8)。同样 20px 内边距在 270 宽的卡上占掉 14.8% 的宽度, 20 时四张卡密度是 5.96 / 5.11 / 9.37 / 4.47,16 时是 6.25 / 5.35 / 9.82 / 6.02 —— 短卡用 16 是密度要求倒逼的,A/B/G 仍是 20。 凡是「同一页 padding 必须一致」的检查会报 ✗,这是有意的取舍,没有在文档里隐藏。
dr1 大数字 28、dr6 主数字 24(cap 高折算)、页头 KPI 36、卡标题 16;我们原来 20 当数字、32 当大数字,中间缺一档。 本轮把大数字统一成 28/500(dr1 数字比标题细、linear 只 400/510 两档),于是档位变成 12 / 14 / 16 / 20 / 28 / 32:
见 docs/v16-research.md §7:Crextio 的 Remix 源码(要登录)、Donezo 的一手 CSS(dribbble 202 空壳)、SugarCRM 明文文档(301 到 sugarai 后是压缩/登录壳)。
dr7 不在 refs/ 里,所以本轮没有引用 SugarCRM 任何数值。
把 docs/v16-after-desktop.png 和 refs/dr6.png / refs/dr1.png 并排:骨架(浅底 + 一块深卡 + 一排窄数据卡 + 下方内容块)、卡片圆角 12、
16px 卡标题 + 28px 细数字 + 12px 副文的阶梯、卡内无按钮组、深色卡只有一个琥珀点 —— 这些都是按图量出来的同一个体系。
与 dr6/dr1 仍有差距的地方:dr6/dr1 的小卡都有图形(柱状、圆环),我们 4 张短卡是纯文字 + 趋势徽章(没做到:项目里没有可用的时序数据,硬画就是编数据)。
还没做到 / 不在本轮范围:
refs/ 里、官方文档站 301 后无明文,本轮没有可量数据,也没有引用。