# QA · 原型截图自检（2026-11-13）

渲染工具：`~/workspace/bin/chrome-headless-shell-linux64/chrome-headless-shell`（1500×1150/1250，file:// 本地打开）。逐张肉眼检查完毕。

## 截图清单与结论（9 张，全部通过）

| 截图 | 页面 | 结论 |
|---|---|---|
| shots/p1-dashboard-light.png | P1 Dashboard 白天 | ✅ KPI 六卡、结构分布、矩阵、漏斗、Top5、异常区无溢出/叠字；周/月/季分段切换可用 |
| shots/p1-dashboard-dark.png | P1 Dashboard 夜间 | ✅ 令牌整体翻转，结构与白天一致，黄强调保留 |
| shots/p2-workbench-light.png | P2 工作台 白天 | ✅ 10 条线索全列、Agent 列四 Agent＋任务流完整（经两轮修版：列宽固定布局后无重叠） |
| shots/p2-workbench-dark.png | P2 工作台 夜间 | ✅ 与白天同构，无溢出 |
| shots/p3-lead-detail-light.png | P3 线索详情 | ✅ 六维富化、五道闸、穿透树（黑根卡＋断点虚线卡）、证据链、时间线齐全 |
| shots/p4-brief-light.png | P4 简报 | ✅ 黄头条框、双语切换（中/英两版均已建）、历史日期列表在侧栏 |
| shots/p5-users-light.png | P5 用户管理 | ✅ 负荷红黄灯（成员 02 高分 3/3 红警）、停用交接单示意完整 |
| shots/p6-permissions-light.png | P6 权限管理 | ✅ 三角色矩阵勾选、敏感动作黄标、数据范围与护栏开关区完整 |
| shots/p7-login-light.png | P7 登录 | ✅ 微软四色标黑主按钮、无密码框；模拟登录按 EXEC/OPERATOR/ADMIN 分组、职能占位 |

## 交互自检（本地打开点通）
- 侧栏导航 7 页互链可达；工作台首行点入详情页。
- 主题切换：顶栏 ☾/☀ 一键翻转并记忆（localStorage），`?theme=dark` 可直达夜间版。
- Dashboard 周/月/季分段、工作台有效性页签、简报中英切换均有真实切换行为。

## 与参照站仍存在的差距（如实列）
1. **参照站像素级色值未实测**：本 VM 的 headless 浏览器无法经出口代理打开外网（隧道失败，实测三次），uistacks.dev 的色值采用其所属 shadcn/neutral 令牌系公开标准值落地，未能与其线上渲染逐像素比对；版式构成（顶栏＋分组侧栏＋白卡拼装）已按其公开构成对齐。
2. **字体**：本 VM 无 MiSans 字体文件，截图以系统 CJK 字体回退渲染；字体栈已声明 MiSans 首位，在 Steven 的 Mac 上打开即为 MiSans 效果。正式开发应自托管 MiSans 字体文件。
3. **截图为视口高度**：长页（详情页穿透树下半、简报数据行、工作台第 10 行）超出首屏部分未入镜，但页面本身可滚动完整呈现，非截断缺陷。
4. ticker 为 CSS 动画近似参照站的终端滚动感；参照站的 Motion 动效细节（组件入场等）未复刻，属有意克制。

## 全站中英双语切换（FR-26 · 2026-11-13 补）

**机制**：顶栏主题切换旁新增「中 / EN」语言开关（登录页为右上浮动组），一键整页切换、`localStorage('cm-lang')` 记忆、默认中文，支持 `?lang=en` 直达。实现为词条字典方案：`assets/i18n.js`（源串字典，以中文原文归一化后为键）＋ `app.js` 文本节点遍历替换——首次运行捕获原文，切回中文即还原，未复制整套英文 HTML。覆盖 7 页全部界面文案（导航、页头、卡片、表头、按钮、状态签、筛选与 placeholder、登录与模拟选人、用户/权限页）及 `document.title`；主题切换按钮的 title 提示随语言联动。**字典共 535 条**。数据值口径：资产/机构专名有官方或本项目英文版简报既定英文名的用英文名（Shenzhen Holdings、East Town Building、Sungang Warehouses、Worldwide House、Shenzhen SASAC 等），金额按既定英文渲染（RMB 493M 等），数字/日期格式维持原样。字体仍全站 MiSans，未引入新字体。

**与简报页双版切换的关系**：简报正文（`[data-lang]` 中/英两版区块）的内容语言保持其**独立切换**，i18n 遍历器显式跳过 `[data-lang]` 子树，全站切换只作用于界面外壳（导航、页头、历史列表、生成规则等）；实测英文态下简报中文版区块仍默认显示、英文版仍隐藏，两套开关互不干扰。

**验收方法与结果**：以 chrome-headless-shell 逐页 `--dump-dom ?lang=en` 提取「简报内容区之外」的残留中文文本节点，并逐张肉眼复核新增截图。7 页残留全部落在下例例外清单内，无界面文案残留；默认中文态复查完好。英文态版式经两轮适配（`html[lang="en"]` 作用域样式：工作台列宽重配、状态签内距、条形标签加宽、任务流改按词断行），终版无重叠/溢出。

**新增截图（2 张，通过）**

| 截图 | 页面 | 结论 |
|---|---|---|
| shots/p1-dashboard-en-light.png | P1 Dashboard 英文 · 白天 | ✅ 全英文外壳；结构分布标签经加宽后完整显示；KPI/矩阵/Top5 无溢出 |
| shots/p2-workbench-en-light.png | P2 工作台 英文 · 白天 | ✅ 表头完整、状态签与信源徽标不重叠、Agent 任务流按词断行无词中切断 |

**残留例外清单（英文态下保留中文，均为数据值/专名，非界面文案）**
1. 登录人姓名「郑益 Steven」及头像字「郑」（全部内页顶栏）——真实人员专名。
2. 语言开关自身的「中」字（语言名称自指，惯例不译）。
3. 线索详情页卖方事实长文一段（资产事实数据值，源自 S1 样例原文）。
4. 无确认官方英文名的法律实体名：「深业泰富物流有限公司」（2 处）、「深业集团有限公司」（1 处）及穿透树中一段持股说明文字——按口径保留中文原文，不臆译。（有官方/既定英文名者已译：深圳控股有限公司 → Shenzhen Holdings Limited、深圳市国资委 → Shenzhen SASAC。）

## 数据口径复核
- 全部数字来自 S1 样例与首批池：评分 82/75/70/69/65/64/62/62/57/18、结论 2/7/1、有效性 6/3/1、入池 12/校验 10、校验 71 分钟、穿透 63.18% 与断点——逐项与 `outputs/s1-sample-leads.md`、`outputs/s1-brief-sample.md` 对照一致，无编造。
- 人员与分配均为「职能占位＋示意」并在页内明示；真实名单自 Kanban 用户目录导入后替换。

---

# 移动端适配验收（2026-11-13，Steven 反馈「移动端完全不适配」后补做）

实现方式：新建 `assets/responsive.css`（全部规则收在 `@media (max-width:768px)` 内，另有 ≤400px 微调），7 页 `<head>` 末尾各追加一行 link 引入——HTML 的唯一改动，未动文案、结构与 app.js；桌面版式零影响（见下方复截核对）。渲染工具同前，窗口 390×844，并以 390×2500 拉高视口逐页全长复查折叠线以下部分。

## 各页适配手法

| 页面 | 手法 |
|---|---|
| 全站外壳 | 左侧栏收起为**底部 tab 栏**（fixed、图标＋文字纵排、横向可滑、含 safe-area 内边距）；顶栏压缩为单行（搜索框与市场条收起、用户 chip 只留头像、主题/语言切换保留）；ticker 保持横滚；`html,body` 以 overflow-x:clip 禁整页横滚，横滚只出现在指定容器内；按钮/页签/输入框点按目标 ≥40px |
| P1 Dashboard | KPI 6 卡改 2 列流式；结构分布三组改单列堆叠；分配矩阵表（min-width 580）置入卡内横滚容器；漏斗/Top 5/异常区单列全宽；底部状态条改为内边距全幅、取消负边距 |
| P2 工作台 | 三列改单列：Agent 列置于线索表**上方**折叠为紧凑条（Agent 名单横滑、任务流限高 192px 内滚），队列状态卡随其后；线索表保留表格、置于原横滚容器内，首列（资产）以 position:sticky 冻结；筛选行自动换行、搜索框全宽 |
| P3 线索详情 | 头卡上下堆叠（238px 评分盒改全宽）、关键数字 2×2 流式；六维/五道闸/证据/时间线单列；穿透树单列呈现、其卡片带横滚兜底（min-width 296） |
| P4 简报 | 文档单列、内边距收紧（30px→18px）、黄头条框同步收边；简报内线索表置入横滚容器；侧栏历史日期项压缩为单行条目挂入底部 tab 栏横滑区，仍可达 |
| P5 用户管理 | KPI 改 2 列；用户表（8 列）置入卡内横滚容器（覆盖原卡片 overflow:hidden）；交接单卡全宽堆叠 |
| P6 权限管理 | 矩阵表与数据范围表均置入横滚容器；下方双列卡改单列；另修复一处真缺陷：开关行长句把网格轨道 min-content 撑至约 640px 致整页超宽——以 minmax(0,1fr) 轨道＋子项 min-width:0 收口（同类 flex 文本行一并处理） |
| P7 登录 | 卡片全宽（左右 14px 边距）、微软登录按钮 48px、模拟登录条目 ≥48px |

## 截图清单与结论（8 张，390×844，全部通过）

| 截图 | 结论 |
|---|---|
| shots/p1-dashboard-mobile-light.png | ✅ KPI 2 列、页头堆叠、底部 tab 栏齐整，无溢出 |
| shots/p1-dashboard-mobile-dark.png | ✅ 夜间令牌下同构，tab 栏与卡片对比正常 |
| shots/p2-workbench-mobile-light.png | ✅ Agent 紧凑条在表上方、任务流内滚、筛选换行正常 |
| shots/p3-lead-detail-mobile-light.png | ✅ 头卡堆叠、评分盒全宽、标签换行正常 |
| shots/p4-brief-mobile-light.png | ✅ 简报单列、黄头条框收边正确 |
| shots/p5-users-mobile-light.png | ✅ KPI 2 列、用户表卡内横滚 |
| shots/p6-permissions-mobile-light.png | ✅ 矩阵表卡内横滚、下方卡单列（修复超宽后复截） |
| shots/p7-login-mobile-light.png | ✅ 卡片全宽、按钮与模拟条目点按区达标 |

全长复查（390×2500 × 6 页）：矩阵/用户/权限/简报四处宽表均只在卡内横滚，页面本身无横向溢出；详情穿透树、时间线、工作台 10 行、用户交接单、简报数据行均完整呈现，无叠字/截断。

桌面回归：Dashboard 与工作台按原尺寸（1500×1150 / 1500×1250）复截，与原桌面截图版式逐项一致（侧栏、六卡、三列结构、右 Agent 列均未受影响），responsive.css 在 >768px 不生效。

## 仍存差距（移动端，如实列）
1. 底部 tab 栏 6 个条目在 390px 下需横滑才见最后一项（权限管理露出约一半作可滑暗示）；未做图标-only 压缩，为保文字可读。
2. 宽表横滚为容器内滚动，工作台首列已冻结，其余页表格首列未冻结（表头语义在横滑后靠行内容自明）；如需全冻结须改表格结构，超出本次 CSS-only 范围。
3. 结构分布的条目标签沿用桌面 CSS 的省略号截断（「B 级 · 中介/…」），属原设计行为，未在本次改动。
4. 截图字体仍为 VM 的 CJK 回退（无 MiSans 文件），与桌面截图同一限制；Steven 手机/Mac 打开即 MiSans。

# v2 增量回迁＋Logo 定版（2026-11-13，选型定版后执行）

选型结论：以 v1 为对版标准，v2 冻结为备选稿。本节记录从 prototype-v2 回迁进 v1 的内容增量与 Logo 定版，及明确未搬的部分。

## Logo 定版（全 8 页）
- 页头文字 span「CM」假标全部删除，改用官方 Savills 直角 logo（assets/savills-logo.svg，Steven 上传的 SAVILLS_Y_Logo.svg 原样），<img> 引用：内页顶栏 36px、index 页头 36px、登录页 46px。
- 呈现铁律执行：border-radius 0、无底框/描边、深色主题不反色（标自带黄底，夜间截图已验）。
- 锁组行距优化：新增 .logo-text 纵列——第一行 Capital Markets（700 / 行高 1.15）、第二行 大宗交易线索平台（11px / 行高 1.3 / 上距 2px），两行总高约 33.6px 与 36px 标基本齐平，垂直居中；旧 .logo-mark 样式已删除（全站无残留引用）。移动端顶栏同一锁组 30px、不换行不溢出（390×844 已验）。

## 搬了什么（v2 → v1，数字一律同源未改）
1. 顶栏平台健康 chip：绿点＋「信源 15/19 正常 · 待处置 5」，进全部 6 个内页顶栏（market-strip 之后）；样式用 v1 胶囊语言（ok-bg 底）；移动端隐藏（与 market-strip 同处理）。
2. 底部 statusbar：全部 6 个内页统一一条——数据截至 2026-11-13 08:30 / 信源 15 正常 · 3 受限 · 1 未接入 / 校验队列 待复检 3 / SdbC 匹配维度 接口未接 · 暂记 0 分 / 口径：S1 样例验证 · 分数待 P0 校准（右对齐）。dashboard 替换原有条，其余 5 页新增；workbench 的 flex 主区为此加 flex-wrap＋statusbar 独占整行（已截图验布局无损）。
3. Dashboard 待处置事件（全宽卡，KPI 区下方）：v2 的 5 条事件式呈现全量搬入——P1 NEO 待复检超 7 天回收 / P1 深振业公告冲突 / P2 环球大厦价格三源不一 / P2 贵阳竞价今日开窗 / P3 FB 帖证伪候选；每条带严重度签（P1 红/P2 黄/P3 灰）、主跟进人（职能占位：成员 02·香港组 / 公共池 / 成员 01·华南组 / 平台管理员·平台组）、已持续时长（NEO「已超 7 天」据矩阵注脚，其余 2026-11-13 首批入池新增记「今日新增」，贵阳时限事件记「今日到期」——v2 原文无时长字段，此为对齐任务口径的据实标注，非新编数据）。v1 原右列「异常与时限」卡已被事件区吸收删除（FB/贵阳两条不重复呈现；太原明日开拍仍由 ticker 与头条 Top 5 承载）。
4. Dashboard 时效预算（卡）：大数 8 / 10 条＋分段预算条（品牌黄 80% 正文收录 / 警示 10% 出窗转观察 / 浅灰 10% 无效）＋图例＋三行 kv（首跟 SLA 及时 8/9、已触发 7 天回收 1 条 · NEO、待复检占用 3 条），与 v2 同数、与 v1 既有 KPI 不重复。
5. Dashboard 在手负荷（卡）：5 行紧凑条与用户页同源同数——成员 01 3/10·高分 1/3（绿）/ 成员 02 3/10·高分 3/3 已满·1 条超期（红）/ 成员 03 1/10·高分 0/3（绿）/ 公共池 2 条待分派（黄）/ CM 负责人 0/10 只读总览（绿），复用 v1 .load-bar 组件。
6. Dashboard 信源与管线状态（全宽卡）：分段条 79%/16%/5%＋「19 个信源中 15 个正常 · 3 个受限 · 1 个未接入」＋六层 19 信源双列名单（名称/等级 A/B/C/状态点/11-13 成功或受限·未接入签，与 v2、QA-V2.md 口径一致）＋底部五道闸队列条（待复检 3 / 待核·证伪候选 1 / 本批校验 10/10 / 受限原因）。
7. i18n：新增文案 79 条收割自 v2 字典口径并补齐（字典 535 → 614 条）；头像字「池」「管」沿 v2 先例不译。

## 没搬什么（明确）
- v2 的网格定序外壳（12 列 grid 骨架）未搬——v1 布局与 .shell/.main 结构原样。
- v2 的抽屉式导航（260px 侧栏＋命令菜单组）未搬——v1 侧栏与移动端底部 tab 栏原样。
- v2 的顶栏健康 chip 呈现形式（纯文字行）未搬——改为 v1 胶囊语言；v2 信源格的 mono 小字与自有令牌未搬——改用 v1 .tag/.qchip 语言。
- v2 其余页面（workbench/lead-detail/brief/users/permissions/login 的 v2 版式）一律未搬。

## 截图与自检（覆盖/新增 7 张）
- 覆盖：p1-dashboard-light / p1-dashboard-dark / p1-dashboard-en-light / p1-dashboard-mobile-light / p2-workbench-light / p7-login-light；新增：p0-index-light（index 此前无截图）。
- 逐张结论：锁组行距紧凑、logo 直角无框、夜间不反色；健康 chip 六页齐全；事件区 5 条不挤压原 KPI 与结构区；英文态新区块全译（顶栏英文拥挤时 logo 副行末段截断，与既有 strip 截断同类，如实记）；移动端 chip 隐藏、锁组单行、tab 栏完好；workbench 首截曾因 statusbar 成 flex 子项塌版，已修（flex-wrap＋独占行）并重截通过。
- 底部三区块（时效预算/在手负荷/信源格）与 statusbar 另以 1500×2700 加高图逐项核验（不入交付截图）：渲染、数字、红黄绿状态均正确。
