文件
hyb-oa/.trellis/tasks/07-16-system-multidimensional-audit/research/browser-review.md
T

6.9 KiB
原始文件 Blame 文件历史

本地浏览器复核

结论摘要

  • 复核基线:本地 HEAD 8f8606c328c4754901e045c34b071ecd36215bd3。
  • RESP-TABLE-001:P1 / CONFIRMED。768×1024 与 1024×768 均没有页面级横向滚动,但共享表格容器固定为 overflow-x: hidden,表格右侧被裁切且用户不能横向滚动恢复;1024×768 下五个受检页面的右侧操作均不可达。
  • MOB-ARCHIVE-001:P2 / CONFIRMED。375×812 下空态、列表卡片、角色范围和底栏安全间距通过;详情展开后,长标识会把“历史详情”内部内容撑宽并被 overflow-x: hidden 裁切,页面本身又不提供横向滚动。
  • 两组桌面标题动作均保持一行、完整位于视口内,标题区无横向溢出。本轮没有确认标题动作换行故障。
  • 本轮没有访问公网、真实账号或真实业务数据;所有 API 响应均为本地合成 mock,浏览器上下文阻断 Service Worker,未发现未知 API、控制台错误或页面异常。

验证边界

  • 服务:仅监听 127.0.0.1 的本地 Vite。
  • 浏览器:本地 Playwright Chromium,serviceWorkers: "block",prefers-reduced-motion: reduce。
  • 网络:只允许本地 Vite 同源请求;本轮外部来源请求数为 0。
  • 数据:全部为 SYN-* 合成对象;未使用真实姓名、票据、合同正文、账号、凭据、银行信息或原始 payload。
  • 角色 fixture:移动空态使用 employee,移动有记录/详情使用 hr,桌面页面使用 admin。
  • 页面加载、截图和量测均由 /tmp 临时脚本执行,未修改业务代码或测试代码。

375×812 移动企微审批归档

空态与列表

场景 角色 最终 URL H1 页面横溢 桌面表格 底栏遮挡 结论
空态 employee /mobile/wecom-approval-archive 企微审批历史 375 / 375,0px 0 滚动到底后末段距底栏 18.5px PASS
有记录 hr /mobile/wecom-approval-archive 企微审批历史 375 / 375,0px 0,显示 1 张移动卡片 滚动到底后末段距底栏 18.5px PASS

角色范围符合 fixture:employee 只显示“与我相关 / 直属团队”,hr 额外显示“HR/管理员全量”。长申请人名称和长单号在列表卡片中可换行,没有形成页面级横向溢出。

详情展开

  • 最终 URL 和标题保持不变。
  • 内部移动滚动容器宽度为 375 / 375,滚动到底后详情末段与固定底栏仍有 18.5px 净距,底栏没有遮挡末尾内容。
  • “历史详情”面板 clientWidth=351px、scrollWidth=457px,内部内容向右超出约 105px。
  • 面板计算样式为 overflow-x: hidden;文档和移动滚动容器都没有横向滚动,因此超出内容被裁切且用户无法恢复查看。
  • 该问题只在长详情合成数据下确认;空态和列表态没有同类右侧溢出。

据此,移动路由不能整体判定为失败:空态、列表、角色范围与底栏通过;详情长标识裁切作为 P2 / CONFIRMED 独立保留。

桌面中间断点量测

所有页面最终 URL 均与目标路由一致,浏览器标题为“海音达工作台”,页面 document.scrollWidth 均等于 viewport;问题发生在共享表格容器内部。

viewport 路由 H1 容器 client/scroll 可裁切宽度 overflow-x 右侧操作初始可达
768×1024 /projects 项目 702 / 760 58px hidden 否
768×1024 /assets 资产 702 / 760 58px hidden 否
768×1024 /contracts-registry 合同 702 / 760 58px hidden 是;截图中“编辑/更多”均可见,但容器合同仍失败
768×1024 /payment-batches 付款 702 / 760 58px hidden 否
768×1024 /reimbursements 我的报销 702 / 760 58px hidden 否
1024×768 /projects 项目 654 / 760 106px hidden 否
1024×768 /assets 资产 654 / 760 106px hidden 否
1024×768 /contracts-registry 合同 654 / 760 106px hidden 否
1024×768 /payment-batches 付款 654 / 760 106px hidden 否
1024×768 /reimbursements 我的报销 654 / 760 106px hidden 否

裁切后的操作在程序化设置 scrollLeft 后可以重新进入容器,但 overflow-x: hidden 不向用户提供横向滚动,因此不视为可达。标题动作方面:五页在两个 viewport 下均为 1 行,资产页的两个标题动作也未换行;标题动作完整位于 viewport 内,标题容器横溢均为 0。

当前主证据

证据目录:research/evidence/local-browser-8f8606c/。

  • 结构化量测:metrics.json
  • 移动空态:mobile-375x812-wecom-archive-empty-employee.png
  • 移动空态底部:mobile-375x812-wecom-archive-empty-employee-bottom.png
  • 移动列表:mobile-375x812-wecom-archive-record-hr.png
  • 移动列表底部:mobile-375x812-wecom-archive-record-hr-bottom.png
  • 移动详情:mobile-375x812-wecom-archive-detail-hr.png
  • 移动详情底部:mobile-375x812-wecom-archive-detail-hr-bottom.png
  • 768×1024:desktop-768x1024-projects.png、desktop-768x1024-assets.png、desktop-768x1024-contracts-registry.png、desktop-768x1024-payment-batches.png、desktop-768x1024-reimbursements.png
  • 1024×768:desktop-1024x768-projects.png、desktop-1024x768-assets.png、desktop-1024x768-contracts-registry.png、desktop-1024x768-payment-batches.png、desktop-1024x768-reimbursements.png

research/screenshots/mobile-wecom-approval-archive-375.png 已人工复核,画面本身使用 synthetic 内容,但缺少本轮精确 SHA、角色和尺寸量测合同,因此只作为旧辅助截图,不作为当前 finding 的主证据。

证据完整性与脱敏复核

  • metrics.json 只记录本地 URL、当前 SHA、viewport、最终路由、页面标题、角色代码、DOM 尺寸、截图文件名和诊断计数。
  • 对 metrics.json 进行敏感关键词复核,未发现公网域名、邮箱、密码、token、Secret、账号、银行资料、企业微信完整标识或真实业务字段。
  • 两个移动上下文和两个桌面上下文均为未知 API 0、console error 0、page error 0、外部来源请求 0。
  • Service Worker 在浏览器上下文层阻断;本轮页面没有发起 Service Worker 请求。

建议验收合同

  • 共享表格修复后,两组 viewport 的容器应满足:右侧操作完整可见,或容器提供用户可操作的横向滚动;页面级 document.scrollWidth 继续等于 viewport。
  • 移动详情修复后,“历史详情”面板应满足 scrollWidth <= clientWidth + 2px,长字段名、长人员摘要、长单号和 finding 类型均可换行,不通过隐藏溢出来消除页面横滚。
  • 修复回归继续使用本地合成数据;真机企业微信 WebView 仍保持 EXTERNAL_GATED,不能由本轮 Chromium 结果替代。