# Round 5V 验收记录 — 部分通过,迁移待授权 日期:2026-10-14;分支 `fix/iot-safety-hardening`;基线 `47bc6604e53b841e9070b890e65e0a75df1c1e1c`。本文件描述本轮实际结果, 不继承此前 Agent 的通过声明。最终本地提交号见 Git HEAD。 ## 真实 Kingbase 结果 - JDBC 实际连接仅限 `192.168.139.218:4321/railwaysystem_fusion_qa_20261013`。 账号 `fusion_qa_app`,KingbaseES V009R003C018,current_schema=public。 只读 repeatable-read 事务结束 rollback;未执行 DDL、业务 INSERT/UPDATE/DELETE、 全量初始化、GRANT、账号修改或共享库访问。 - 迁移前 `iotlocks.lock_auth` 10条,`lock_command` 15条;最终只读复查不变。 005的新增列/索引缺失,迁移未执行,`MIGRATION_WAITING_APPROVAL`。 - 角色非 superuser/createdb/createrole,public/iotlocks 均无 CREATE,表属 kingbase。 但3张 public 表具有额外 TRUNCATE/TRIGGER/REFERENCES,见迁移计划,待管理员审查。 - 两张受影响表的 WebRowSet 私有快照10/15行,SHA256及XML解析通过: `.qa-runtime/snapshot-baf7eb8fede1`。不是原生全库备份,未做数据库恢复演练。 - **八类生命周期/并发/跨事务 Kingbase 测试均未执行**。只读事务成功不是它们的证明。 当前历史数据未被改写;新增默认 LEGACY/QUARANTINED 的实际迁移效果尚未验证。 证据:`scripts/qa/QaDatabaseProbe.java`、`.qa-runtime/final-database-inspection.log`、 `.qa-runtime/snapshot-report.log`、[迁移/回退计划](ROUND5V_KINGBASE_MIGRATION_PLAN.md)。 ## 构建与自动化结果 - Java 21.0.2 / Maven 3.9.x 打包成功;所有模块 release21,抽查 class major65。 当前85项选定JUnit测试,失败0、错误0:原81项加4项住宿异常/事务声明测试。 它们主要为H2/替身,不是Kingbase生命周期验收。 - 修复入住/直接新增在住/调宿吞掉IoT持久化异常;checkIn增加事务边界。 `Round5vAccommodationAtomicityTest`覆盖入住/调宿/退宿异常传播及事务声明。 新增修复的真实Kingbase回滚语义待验证,未夸称原子性已通过。 - 11项Python QA工具测试通过:目标库白名单、URL凭据拒绝、配置权限、无Shell 执行、过滤继承覆盖、迁移缺失不启动、强制安全参数和PID复用拒绝。 - JDBC已从授权本机文件校验后安装为私有Maven依赖9.0.0,正常打入Boot JAR, 不再依赖systemPath;未提交供应商二进制。安装/预检脚本从旧8.6.0同步至9.0.0。 - 前端Node22.23.2/npm10.9.8,`npm ci --ignore-scripts --no-audit --no-fund` 实际安装1753依赖,生产构建通过。核心版本对齐实验工程,新增受跟踪lockfile。 初次构建暴露Quill2语法转译缺失,补回实验已有transpileDependencies后通过。 旧Vue2/CLI4废弃依赖、node-ipc engine/ESLint peer警告未在本轮整体迁移。 - 登录表单残留固定测试账号/密码预填已清空,未重置任何数据库账号。 证据:`RuoYi-Vue/ruoyi-*/target/surefire-reports/`、 `.qa-runtime/backend-build.log`、`.qa-runtime/frontend-build.log`、 `.qa-runtime/qa-tools-tests.log`;准确复现命令见根目录DEMO_RUNBOOK.md。 ## 实际 Chrome 与运行结果 - Playwright使用已安装的 `/Applications/Google Chrome.app/Contents/MacOS/Google Chrome`, UA Chrome155。实际打开生产dist(loopback18088),可见原SYFJGYD品牌登录页。 截图 `output/playwright/round5v-login-backend-blocked.png`,已目视检查。 - 新后端未启动:`qa.py start`执行真实目标库预检后以MIGRATION_REQUIRED拒绝, 未启动Redis或Spring Boot。前端的captchaImage如实返回502,没有替身API或旧后端。 因此管理员登录、动态路由、首页图表、培训/IoT API、九页功能、住宿E2E均未验收。 九个IoT页面源码被生产构建编译不代表页面运行无404。 - 独立端口方案18096/18088/16389,实际只为登录页检查启动了前端服务; 交付前关闭本任务前端和本任务Chrome会话。既有Java PID51901/53305未被停止。 ## 配置与工程边界 - 所有安全默认保持关闭真实MQTT/设备写入、空白名单、关闭人脸HTTP、OpenAPI、 QA危险接口、Druid控制台、补偿任务和Quartz自动启动;旧DMS关闭。 运行器不清端口、不杀既有进程、不修改共享Redis或Mac网络;JWT/Redis密钥在 私有0600外部运行配置中生成并仅经环境注入,数据库/身份密钥从受保护文件读取。 - DEMO_RUNBOOK已移除不存在脚本/错误路径/固定登录口令/100%真实执行等声明, 提供实际存在的inspect/snapshot/start/frontend/stop入口和未通过项。 - CI YAML静态解析通过:Java21、私有JDBC预检、npm ci,显式web+变量门禁, 无部署job、无push自动流水线。本轮未Push、Merge、触发远程CI或部署;Runner未验证。 - 变更范围私钥/常见Token模式扫描无发现,未将快照/日志/浏览器缓存/驱动加入Git。 原工程无tracked diff;历史实验工程clean,未改写两者源码或历史。 ## 仍需完成 1. 明确仅针对目标QA库的005授权、合规原生备份及回退演练,协调该库写入窗口。 2. 授权后执行并核验增量迁移、历史LEGACY隔离和实际Kingbase八类事务测试。 3. 启动新隔离后端,以真实Chrome完成管理员/菜单/首页/九页/API/住宿Mock闭环。 4. 管理员审查3张表额外权限;老师协议/单台现场测试批准仍独立待办。 READY_FOR_SUPERVISED_HARDWARE_TEST = false。Mock/H2成功不等于真实门锁联调成功。