审查总报告真实 E2E模拟接口回归

更新项目 Code Review 与 E2E 报告

审查日期:2026-09-05 · 开发环境:E:/work/edit_3d · 状态:审查与验证完成,4 项功能差异和 1 项素材选择待确认

本轮按 资料 → 产品原型 → 设计 → 开发 → 测试 审查更新,定位并修复 8 处问题:前端 6 处、后端 1 处、数据库迁移 1 处。修复沿用现有产品和接口合同。另有 4 项资料与现有功能的差异,以及 1 项素材选择,列在本报告末尾待确认。

前端与三个后端服务已启动。页面地址:本机 6180局域网 6180。审查完成后已按用户授权提交:API 53d860b、Web 3c7f295。报告与测试脚本在 ute2e 独立提交。

1. 更新了什么

仓库与范围 同事本次更新的主要内容 本次重点
unreal_tran_api3307c23..b683bb7,57 个文件 多渠道训练定义;开始/推进/提交/评定命令幂等;步骤运行事实;三个登录身份与教员内容写权限;029–034 SQL 发布快照、权限、重复命令、失败重试、提交门槛、数据库兼容性
unreal_tran_web0aac918..1576728,29 个文件 虚拟训练切到正式 API 主入口;旧链接重定向;渠道编辑;步骤状态展示;命令追踪;角色、Three 资源及回放内容调整 默认入口可用性、编辑保存一致性、步骤顺序、运行页和重试入口

2. 从资料到测试的追溯

已逐页查看《维修训练内容设计.pdf》6 页和《电器控制系统故障维修脚本.pdf》5 页,并保留 11 页资料图像。这些文件没有可提取文本层;维修设计第 6 页下半流程图扫描过淡,未据此臆测执行规则。

AGENTS.md 指定的相邻 unreal_tran_demo 当前缺失。本次结合正式前端中移植的原型源码、适配层和 API wiki 追溯,未把废弃原型目录当作最新定稿。完整依据见 资料与原型审查

资料要求 原型与设计 开发检查 测试证据
同一任务贯穿不同训练方式 移植训练原型;wiki 19:公共步骤与渠道 profile、固定发布快照 渠道配置读写与默认配置镜像;切换默认渠道;保留其他渠道 浏览器模拟接口回归验证保存载荷与重新打开;Node 执行渠道转换逻辑
教员编排、学员训练、权限分工 现有角色合同与 wiki 14 三种登录角色;内容写入需有效教员身份 真实登录与教员列表;纯管理员创建内容返回 403;后端权限回归
逐步骤留痕、失败可重试 电气脚本五阶段;wiki 21 的四种步骤状态 顺序/进度;开始、失败、重试、完成;迟到证据 真实 API/数据库步骤事实、迟到事件 400;浏览器重试按钮与状态变化
操作不重复记账 wiki 20 的命令号与冻结载荷 同载荷重放、异载荷冲突、运行版本与事务边界 真实 start/progress/review 重放不增加版本,异载荷 409;服务测试
完成后提交、结果可查询 当前 wiki 21 要求全步骤完成;资料的提前交卷另列确认 提交门槛、评定、刷新后的服务端结果 真实未完成提交 409;8 步完成后 UI 提交;评定后刷新
训练页面可操作、状态清晰 正式 API 主入口与已有工作台设计 错误考核遮罩、场景尺寸、安全提示对比度 真实场景就绪截图;军工绿/暗色主题尺寸与文字对比测量

3. 已修复的 8 处问题

P1 表示阻断目标环境部署;P2 表示功能、状态或界面正确性问题。下列均已修改代码或 DDL,详细复现、修改文件与验证见 前端审查后端审查数据库审查

编号 级别 触发与原行为 修复后的行为
DB-01 P1 KingbaseES 当前版本不接受 034 中独立 UNIQUE INDEX 作为组合外键目标,步骤事实表迁移失败 新增 035,使用真正 UNIQUE 约束;同步全量 DDL,保留历史 034;开发库执行 033 → 035
API-01 P2 步骤失败后重试,收到重试开始前的迟到成功/失败事件,可能错误完成当前尝试或增加失败次数 从已有激活事件校验本次尝试开始时间;旧事件返回 400,不改变当前事实
WEB-01 P2 实装步骤移动、删除或复制后仍保留旧顺序和进度,如 3,2,1 / 100,67,33,发布可能被拒 按编辑后的顺序重算顺序号(order)和严格递增进度,末步 100%;保留步骤标识和事件扩展字段
WEB-02 P2 通用编辑器只修改旧 modeConfig,重开被旧渠道 profile 覆盖;切默认渠道字段不一致 同步默认渠道、启用渠道、profile 和兼容镜像;保留其他渠道与历史对抗时长
WEB-03 P2 v-else 绑定到拆卸侧栏条件,普通训练也显示“正式考核执行场景已关闭” 仅正式考核且不在执行中显示关闭态
WEB-04 P2 当前步骤 FAILED,但运行仍 IN_PROGRESS,学员没有重试入口 补“重试当前步骤”,复用已有 start 和幂等命令;结束状态不出现该按钮
WEB-05 P2 场景仅占视口上方,安全确认区暗底深字 补运行场景填充定位和已有主题颜色、间距;安全确认规则保持原有语义
WEB-06 P2 默认离线视频替换为约 32 秒的新素材,但候选、阶段与抓拍仍对应 45 秒旧片;34 秒和 45.2 秒候选无法到达 将默认映射指向仓库保留、哈希与既有验收合同一致的 45 秒视频;新素材保留,重标与切换列 F5 确认

4. 测试结果与边界

验证 最终结果 证据与范围
后端全量测试 402/402 通过,0 失败、错误、跳过 Gateway 1、Auth 86、Tran 315;含新增迟到事件回归
后端构建 通过 Java 17 / Maven;三个服务打包完成
前端 Node 回归 25/25 通过 原 24 项加视频资产、候选与抓拍合同
前端构建 通过 vue-tsc、Vite、旧模型 iframe 校验
真实服务 E2E(Edge) 4/4 通过,0 失败/跳过/重试 62.3 秒;开始时间 2026-09-05T03:47:45.212Z(UTC)
浏览器模拟接口回归 15/15 通过,0 失败/跳过/重试 117.7 秒;编辑保存、状态组合、军工绿/暗色主题
数据库迁移 通过 033、035;首次、重跑和指定中断点恢复;开发库检查值均为 0
测试脚本类型检查、Git 空白检查 通过 两份专用 Playwright 测试与配置;API/Web/E2E 仓库

最终通过结果来自各自一次完整运行,未启用自动重试。补入三次完整场景加载与截图后,真实虚拟用例曾超过原 120 秒测试总预算,断言和评定已完成但截图收尾超时;保留 该轮记录,随后将该用例预算调到 240 秒,并在其他浏览器回归结束后重新完整运行。单次资源就绪仍有 60 秒上限。

实装视频新增检查还发现本机 Playwright 自带 Chromium 不支持 H.264(canPlayType 返回空字符串);失败轮次Edge 播放探针保留。最终真实 E2E 使用已安装 Microsoft Edge,模拟接口回归继续使用 Chromium。另独立修复了实际素材与候选配置不匹配的 WEB-06;最终用例验证默认视频可播、片长覆盖末尾候选,并在结尾得到 12 条候选。测试开发阶段的权限夹具、请求拦截范围与 UI 选择器错误已修正,不计为产品缺陷。

真实 E2E 使用本机正在运行的 Web、Gateway、Auth、Tran 与开发数据库,没有拦截 /api。通过专用临时账号和临时任务验证,避免改动现有训练记录。

浏览器回归使用真实前端组件与 Playwright,但对 API 返回进行模拟,以稳定重现排序、多渠道保存、遮罩及失败重试的状态组合。它能验证页面与请求载荷,不能作为后端持久化已通过的证据。

真实虚拟训练用例通过 UI 开始、UI 提交,通过真实 API 逐步推进 8 个步骤并验证服务端事实和重放。它验证了页面、接口与数据库的联通,没有逐个通过三维鼠标操作完成训练动作。三维资源加载与场景尺寸单独等待和检查。

实装测试验证的是失败 → 重试 → 拒绝旧证据 → 接受新证据的真实 API/数据库流程。现有实装样例的源项目已回到 DRAFT,因此复制其历史发布快照为隔离测试任务并配置人工事件;未更改原项目。默认实装运行仍是离线回放,现场 AI、硬件、MR、完整电气训练和自动评分不属于本轮通过项。真实并发压力与故障注入恢复未作为完整系统验收执行。

5. 截图证据

以下截图来自最终通过轮次。点击图像可查看原尺寸。模拟接口截图的图注明确标注,资料扫描不计入 E2E 截图。

共 27 张最终 E2E 截图。

真实服务与页面

模拟接口浏览器回归

6. 数据库、运行环境与清理

目标数据库为开发环境 unreal_tran/public,KingbaseES V008R006C009B0014。迁移前保存四张教学主表原始行、字段和索引信息,恢复快照位于 E:/work/edit_3d/.codex-tmp/review-20260905/database-before.json;该文件含业务数据,未打进报告包。

实际执行 033 与新增 035。029–032 未在本次审查中重新执行,未注入新的前泵课目。035 与全量 DDL 的步骤表、父表约束保持一致;验证了隔离 schema 首次执行、重复执行、中途提交后续跑,所有无效行/孤儿行检查为 0。隔离 schema 已删除。详见 迁移执行记录。其他环境部署应先核对现状,按文档执行 033 → 035,迁移工具需支持 dollar quote。

最终清理时间:2026-09-05T11:48:55.347416。删除本轮临时任务及关联记录(step_run 12, command_receipt 13, event 19, run_member 2, run 2, member 2, assignment 2),测试账号已停用/软删除,会话已撤销,临时管理员密码文件已移除。四张原始教学表的既有行逐行对照均未变化,剩余活动测试账号为 0。审计与软删除记录按系统机制保留。见 最终清理记录;较早轮次见 diagnostics/cleanup-*.json

环境检查记录见 environment.json。三个服务健康接口及本机、局域网前端访问返回 200。Nacos 与 Redis 保留运行。

构建中的既有资源 URL、包体积和部分 Java 弃用警告未阻断打包;未因此升级依赖版本。报告不包含密码或会话令牌。

7. 待你确认的功能差异与素材选择

这些涉及产品口径或新增接入,未作为本轮 bugfix 擅自扩展。建议逐项确认后安排对应实现与验收。

编号 现状与资料差异 需要确认的决定
F1:实装正式训练 电气资料及移植原型为五阶段、15 分钟;默认实装页面当前是约 45 秒离线识别回放,未接入正式步骤与计分 此次交付继续保留回放,还是把电气模板发布为正式内容、接入真实事件/人工证据、提交与评定?
F2:混合现实归属 资料列虚拟、混合现实、AI 实装;当前渠道为 VIRTUAL、PHYSICAL、CONFRONTATION MR 作为虚拟渠道的呈现能力/沉浸入口,还是新增渠道?对抗是否属于另一维度的组织形式?
F3:提前提交规则 资料允许未收尾提交并扣分;当前新运行要求全部步骤 COMPLETED 才能提交 保留全部完成门槛,还是新增提前交卷/放弃结算及未完成、失败、超时计分规则?
F4:评分与复盘范围 资料包括自动结算、90/80/70 分档、全过程复盘和知识拓展;当前以服务端规则/教员评定为权威 这些是否纳入此次交付?若纳入,需要确认评分规则、等级文案、复盘证据及知识资源来源。
F5:离线回放素材 新增约 32 秒素材与现有 12 条候选/抓拍不匹配;本轮默认恢复指向已验收的约 45 秒素材 继续使用当前匹配素材,还是采用新片?采用新片需要先重新标注候选、阶段时间与证据抓拍,再整体切换。

各项 PDF 页码、原型和代码依据见 完整差异说明

8. 报告文件与复跑

测试源码位于 ute2e/tests/review-live.spec.tstests/review-frontend-regressions.spec.ts,配置为 review-live.config.ts / review-frontend.config.ts。回归脚本读取本地配置,不内嵌密码。

已具备开发库表结构时,可在 ute2e 顺序运行:

python tools/review-db.py test-admin
pnpm exec playwright test --config review-live.config.ts
python tools/review-db.py cleanup
pnpm exec playwright test --config review-frontend.config.ts

真实测试后即使失败也需执行 cleanup。当前开发库已完成迁移,prepare 会因目标表存在而拒绝重跑。报告 JSON 保留时间、断言和最终结果,可据此核验,测试计数不等同于完整功能覆盖率。