更新项目 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_api:3307c23..b683bb7,57 个文件 |
多渠道训练定义;开始/推进/提交/评定命令幂等;步骤运行事实;三个登录身份与教员内容写权限;029–034 SQL | 发布快照、权限、重复命令、失败重试、提交门槛、数据库兼容性 |
unreal_tran_web:0aac918..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. 报告文件与复跑
- 真实接口 Playwright 报告 · JSON · API 断言证据
- 前端模拟接口 Playwright 报告 · JSON
- 后端测试日志 · 后端打包日志
- 前端回归日志 · 前端构建日志
- 资料与原型 · 前端审查 · 后端审查 · 数据库审查
测试源码位于 ute2e/tests/review-live.spec.ts 和 tests/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 保留时间、断言和最终结果,可据此核验,测试计数不等同于完整功能覆盖率。