# 车辆主档与批量同步任务连续性 ## 审计结论 本轮将车辆查询中的两类高摩擦任务从页面内长表单重构为共享任务侧栏: 1. 批量同步主档使用桌面右侧 720 px 近全高任务区、移动端 92dvh bottom sheet,固定预演/写入操作,内容独立滚动。 2. 单车主档维护使用桌面右侧 680 px 编辑区、移动端 92dvh bottom sheet,保留车辆身份、来源、版本和完整度上下文。 3. 来源证据侧栏原有信息架构健康,本轮保留其位置与层级,只统一首次挂载、焦点进入和焦点返回行为。 4. 修复共享 SideSheet 首次以 `visible=true` 条件挂载时门户为空的问题;侧栏打开后焦点进入关闭按钮,关闭后返回触发入口。 ## 关键变化 - 批量同步拆成“配置来源 → 预演影响 → 确认写入”三步,显示 CSV 数量、冲突策略、写入统计和需复核记录。 - 同步工具按需加载;加载失败时保留可恢复入口,正式写入后刷新车辆目录。 - 主档维护明确网关身份只读边界,仅编辑运营属性与生命周期字段。 - 未保存的同步配置和主档草稿都需要二次确认;主档保存后回到档案卡显示版本与操作者。 - 主档编辑模块从单车关键首屏包拆出,`VehiclePage` 关键包维持 25.82 KB;同步模块保持独立 11.18 KB 延迟包。 ## 真实页面验收 | 场景 | 视口 | 结果 | | --- | --- | --- | | 批量同步桌面 | 1440 × 1000 | 720 × 1000 侧栏;正文 774 px;固定底栏可见;URL 保持 `/vehicles` | | 批量同步移动 | 390 × 844 | 高度 776.5 px(92dvh);正文 577/754 px 可独立滚动;底栏固定在 794–836 px | | 主档维护桌面 | 1440 × 1000 | 680 × 1000 侧栏;全部字段首屏可见;URL 保持单车详情 | | 主档维护移动 | 390 × 844 | 正文 577/865 px 可独立滚动;最大滚动 288 px;底栏固定在 794–836 px | | 键盘与草稿 | 桌面/移动 | 打开聚焦关闭按钮;Esc 关闭;脏草稿阻止关闭并保留值;放弃后焦点回到“维护档案” | ## 前后证据 ### 批量同步 - 前:`before/batch-sync-desktop-viewport.png` - 后:`after/batch-sync-desktop.png` - 前:`before/batch-sync-mobile-viewport.png` - 后:`after/batch-sync-mobile.png` ### 主档维护与来源证据 - 前:`before/profile-edit-desktop-visible.png` - 后:`after/profile-edit-desktop.png` - 移动:`after/profile-edit-mobile.png` - 保留验证:`after/source-evidence-desktop.png` ## 自动化验证 - Web 全量测试:78 个测试文件、484 项测试全部通过。 - 生产构建:通过 `tsc -b`、Vite build 与 `verify-build`。 - 构建门禁:`vehicle_bytes=25818`、`profile_sync_deferred=1`、`profile_sync_bytes=11179`。 - 已知非阻断项:Semi UI 2.x 在 React StrictMode 下仍输出 `findDOMNode` 弃用警告;Sass 依赖仍使用将弃用的 `@import`。 ## 无障碍边界 已验证可访问名称、对话框语义、初始焦点、Esc、关闭后的焦点恢复和固定操作区。尚未完成 NVDA、JAWS、VoiceOver 的人工朗读顺序与高对比度模式专项验收,不能将本轮结果表述为完整 WCAG 合规。