Files
2026-07-27 16:46:15 +08:00

4.4 KiB
Raw Blame History

自动化版本历史与安全恢复验收

结论

自动化从“只能看到当前 vN”补齐为可审计、可比较、可安全恢复的版本工作流。恢复不会覆盖旧记录而是生成新版本恢复配置时始终保持当前启停状态避免历史版本意外启动或停止真实自动化。

审计步骤

  1. 入口与可发现性:桌面详情头新增“版本历史”;移动列表新增独立 42 × 42 px 历史按钮,未挤占规则主点击区。
  2. 信息层级:侧栏先给出当前版本、运行状态、历史数量,再按时间倒序展示版本、动作、操作人、时间、范围和执行动作。
  3. 差异与决策:每个历史版本标明与当前配置的实质差异数;配置相同的版本显示“无需恢复”,不提供无效操作。
  4. 高风险确认:恢复前明确目标版本、新版本号、变更数和“保持启用/停用”;说明确认前不会写入事件或发送真实通知。
  5. 结果连续性:恢复成功后列表、详情和版本侧栏原位更新,新产生的 rollback 版本出现在时间线顶部。

实现边界

  • 后端新增版本列表与恢复 API并继续复用乐观锁当前版本变化时拒绝过期恢复请求。
  • 审计快照兼容既有 create/update/enable/disable 记录,新增 rollback 动作。
  • 恢复只复制规则配置,启停状态取当前线上状态。
  • 管理员可以查看和恢复;恢复路由显式保持管理员权限。
  • 桌面侧栏与移动 bottom sheet 共用一套数据和操作语义。

截图证据

改造前

  • audit-before/01-automation-detail-desktop.jpg:桌面仅显示当前版本号,无历史入口。
  • audit-before/02-automation-list-mobile.jpg:移动端仅有复制与启停入口。

改造后

  • audit-after/01-version-history-desktop.jpg:桌面版本时间线与差异状态。
  • audit-after/02-rollback-confirm-desktop.jpg:恢复影响确认。
  • audit-after/03-rollback-success-desktop.jpg:恢复后生成新版本并原位刷新。
  • audit-after/04-version-history-mobile.jpg:移动端全高版本工作区。

视觉保真检查5 点)

  1. 结构:保持事件中心原有“列表 + 常驻详情”,版本能力作为右侧任务层叠加,不改主导航。
  2. 布局:桌面 560 px 侧栏;移动使用 94dvh bottom sheet、固定底部操作区和单一内容滚动区。
  3. 样式复用平台蓝、现有边框、810 px 圆角、Semi 图标和 Workspace 组件,没有引入第二套视觉语言。
  4. 交互:桌面和移动均可查看、选择版本、确认恢复、看到结果;相同版本不显示恢复按钮。
  5. 响应式1440 × 900 与 390 × 844 均无横向溢出;移动触控入口和主要按钮不小于 42 px。

首屏文案差异

  • 保留:事件中心自动化列表、规则名称、运行状态与创建/编辑入口。
  • 新增:桌面详情头的 版本历史;移动端使用图标按钮并提供完整可访问名称 查看版本历史:{规则名}
  • 未新增冗余说明卡;审计和风险文案只在版本工作区与确认步骤出现。

验证

  • Go 全量测试:go test ./... 通过。
  • Web 正式测试集75 个文件、455 个测试通过。
  • Web 生产构建与发布资产门禁通过。
  • 真实浏览器完成桌面与移动入口、版本列表、恢复确认、恢复成功回写检查。
  • 额外运行的旧版 src/test/App.test.tsx 存在 14 个与本次改动无关的既有里程/旧路由断言失败;正式测试脚本按项目配置排除该旧版套件。

无障碍检查与限制

  • 版本面板、摘要、时间线、确认框和所有按钮均有角色与可访问名称;移动图标按钮不依赖图标含义。
  • 状态不是只靠颜色表达,同时提供“当前版本”“差异”“无需恢复”“保持启用/停用”等文本。
  • 浏览器 DOM 验证确认对话框焦点与关闭入口可达。
  • 本轮未使用实体屏幕阅读器或硬件触控设备;语义、焦点与 390 px 模拟触控尺寸已验证,实体设备朗读顺序仍应在发布前抽检。

健康度

健康,可发布(有已知非阻塞限制):核心任务链、并发保护、角色权限、桌面/移动布局、空/错/成功状态均已验证;剩余限制是实体辅助技术抽检,以及平台审计队列中的历史批量操作、差异批量处置和账号深链,继续放入下一轮。