# 验收记录 本文件保留已完成架构清理的关键结果、适用范围和数据恢复入口,替代 `docs/plans/` 中 2026-10-02 至 2026-10-04 的 11 份阶段文档。当前职责以[架构说明](architecture.md)为准,复现命令以 [CONTRIBUTING](../CONTRIBUTING.md) 为准。以下历史结果不自动代表后续工作树已通过验收。 ## 2026-10-12 架构收尾 | 验证 | 当时结果与范围 | |---|---| | Quick | 后端 297 通过、106 因外部环境隔离跳过、0 失败;前端契约 59/59;PowerShell 目标守卫 27 项、lint、构建、架构和 diff 检查通过 | | BrowserControlled | 11 个 spec、102/102,无跳过或重试;真实 Vue/Edge,后端响应受控 | | MySQL | 55 个 suite、437/437,无跳过;MySQL 8.4、独立 Redis、103 表基线 | | BrowserReal | 3 个 spec、6/6,无跳过或重试;真实后端、前端、数据库和 Redis | | 架构反例 | Java 违规依赖、Maven 环、重复身份声明、私有源码拼装四组反例均拒绝,恢复后通过 | 最终 Quick/BrowserReal 的源码指纹为 `d9662943207030a91de664e7b7dcfc3748d1c5a6eb21374a996e107f7c7f128c`;BrowserControlled 为 `71bbe23c125ebf0fc390ffbfbea28fbc3a6c96ac9bd9325c0158393f197633dd`;MySQL 为 `9b18e2538e55da20d8ba0b6d542a3055e6518e1ba38ae3019899fae853041c7b`。文档在运行后更新,不属于这些运行时指纹。 后端专项覆盖了身份 CAS、菜单授权并发、模型/表单引用锁、任务事务、根/子实例生命周期、外部事件、SLA、附件、通知租约、协作失败恢复和十二个数据保留域。前端将页面私有源码拼装测试迁入真实组件宿主;设计编辑状态维持页面所有权。附件绑定时的二次有效期校验和端点探测事务锁因并发反例保留。 MySQL/BrowserReal 在常用业务数据迁入之前执行。迁入后存在活动流程和草稿,不再满足全量验收前置条件;不应根据此处历史通过记录启动全局清理测试。 ## 2026-10-12 数据迁移与恢复材料 常用数据由 `3306/ry-vue` 迁入 `13306/approvaplat`;98 张原表逐表比对行数与全部原始字段摘要一致,47 张 Flowable 表名按目标实例大小写规则规范化,再增量补齐至 103 表。完成核对后删除原 `ry-vue` 和空的 `approvaplat_it`,保留已有 Docker 数据卷。迁移时模型 31、部署 62、活动任务 4、草稿 75、用户 8,没有推进已有流程。 本地恢复材料保留在忽略目录: - `output/database-backups/20261012-203252/`:三套原库、最新源库、迁移后目标库备份;`manifest.json` 记录哈希,`migration.json` 保存逐表摘要和表名映射,`application-smoke.json` 记录停用消费者的启动复核。 - 最新源库 SQL 的 SHA256 为 `8B83A2E55217F3D8FD6CB860CA1BA7CCE6D8008903E65CDB5E4A391AFFE92E36`,已实际导入并核对;迁移后目标 SQL 为 `BC75FC61CF929DED1FF28B995D027E0176B76C2A2FCA9081DC25CECF6D543D45`。其他原库备份只核对导出及哈希,未逐份恢复演练。 源服务器 UUID 为 `faf9db8c-9eaa-11f1-8e7f-60cf84b98896`,目标为 `144ce057-a214-11f1-8410-9a264c8952d0`。它们是本次操作记录;未来迁移仍需现场核实目标身份。 ## 2026-10-12 历史 v1 制品修复 Kimi 真实浏览器发现迁入后部署列表与发起列表返回业务码 500,原因是 31 个资源子部署仍为 v1,而当前运行时只接受 v2。应用就绪检查没有覆盖该失败;迁入前的四模式通过记录也不证明旧数据可读。 使用[离线迁移工具](workflow-artifact-v2-migration.md)升级 31 个制品、35 个条件分支,更新 62 条 manifest/条件资源;其他 217 条资源正文不变,冻结 ruleJson、ID 与数值精度保持。重复执行返回 `already-current`,模型、部署、任务及草稿数量保持。 恢复材料为 `output/database-backups/artifacts-v2-20261012-234334-ccdec90e/` 中的 `resources-before.json`、带身份/字节/revision 门禁的 `rollback.sql` 和 `receipt.json`。原资源 SHA256 为 `9C3826F5D403901BF5A4EEA7A1CE41F2340BD033C22D7D19C60AA8899BCD0B23`。 | 验证 | 结果与范围 | |---|---| | 迁移回归 | PowerShell/MySQL 28 项通过,包括精度、摘要损坏、缺资源、错误 UUID、陈旧 revision、写后失败整批回滚及恢复 | | Flowable 合同 | 迁移 1、部署资源 3、模型编译 1,合计 5/5;使用真实资源仓库和当前路由器验证大数边界及 v1 拒绝 | | Kimi 真实页面 | 部署与发起各 7 个当前流程;11 个发布版本翻页、BPMN 预览、表单快照读取成功;16 次 API 请求均为 HTTP/业务码 200,无捕获的 JS 错误,待办仍为 4 | | 构建 | Maven package、七模块依赖、八个指定 Java 类型的 737 条依赖边、前端结构及 diff 检查通过 | 浏览器使用 jar SHA256 `51E86DAE7E94D8C455DEBBAE1F872F9154F3120619BFCFDAA8822FC4574024AA`,关闭调度及异步消费者,没有保存新草稿或推进现有流程。此次修复未重跑全量四模式。 ## 2026-10-13 远端差异与仓库清理 已 fetch `origin/main`。本地 `main @ 736a369` 领先 33 个提交、落后 2 个;远端新增提交只涉及中文 README,其项目介绍已被本地双语文档同步提交吸收。`git merge-tree --write-tree HEAD origin/main` 模拟合并成功,无冲突;未修改分支或索引。 审查覆盖提交范围、未提交改动、配置和脚本引用,重点核对身份刷新、菜单锁、发布制品、模型引用恢复、协作失败恢复及数据库验收入口。修复了服务停止失败仍关闭验收登记的问题:现在核实停止后的进程状态,失败时保留 `cleanup-failed` 和进程信息,阻止新登记,重试成功才关闭。正式回归先复现原失败,再通过失败保留、重复登记拒绝、停止后仍存活拒绝和成功重试场景。 | 本轮验证 | 结果 | |---|---| | Quick | 56 个后端 suite,298 通过、106 环境跳过、0 失败;前端契约 59/59;迁移纯转换 12 项、lint、构建、架构、diff 检查通过 | | 清理失败回归 | 修复后 `verification-target.test.ps1` 32 项通过,不连接数据库或停止真实服务 | | 收尾检查 | 七模块架构及四组反例通过;7 份 PowerShell 脚本语法、6 份文档的 47 个本地链接、工作树与远端 diff 空白检查通过 | | 远端与文档 | 更新双语启动环境配置、IDEA 进程继承说明和旧制品升级入口;11 份阶段文档合并为当前架构说明和本记录 | Quick 的开始/结束源码指纹均为 `b0dd8ab70c9d1fdb370c83a93dcea01b0924b97829fe920c76b21937df1ee1b8`。此后只修改验收环境脚本及其回归和文档,并单独重跑 32 项目标守卫测试及架构反例;未更改业务源码。正式脚本、测试、SQL、依赖和构建制品保留。已清理 157 个旧日志及临时测试输出文件(10,268,734 字节)、16 个空目录;14 份恢复材料逐份核对哈希不变。本轮清理/链接核对辅助脚本在完成后删除。 本轮未重跑 MySQL/BrowserReal;共用库保留活动业务,完整验收仍受前述前置条件约束。未提交或推送。 ## 2026-10-13 当前源码真实验收 完成现有应用账号认证与明确授权的开发数据准备后,重新执行正式 MySQL 和 BrowserReal 入口。下表时间为 UTC+8;这些结果与上方历史记录分开。 | 验证 | 结果与时间 | |---|---| | Quick | 12:04–12:06,57 个后端 suite;303 通过、106 外部环境跳过、0 失败;前端合同 59/59;目标保护 34 项、凭据加载 38 项及 lint、构建、架构检查通过 | | MySQL | 15:34–15:37,57 个 suite,443/443,0 失败、0 跳过;包含附件集成 7 项、协作入站失败恢复 13 项、真实数据保留 27 项 | | BrowserReal | 15:46–15:48,3 个 spec,6/6,0 跳过、0 自动重试;真实后端、前端、MySQL 和独立 Redis | | BrowserControlled | 当日 08:33–08:37,11 个 spec,102/102;本轮未重跑,前端源码未变 | Quick、MySQL、最终 BrowserReal 的开始/结束源码指纹均为 `aea61274d6eccfb11eca2df9293f6a6824e9faf39c96056f0827140024de9139`。本条验收记录是在测试完成后补充的文档,因而不能将该指纹称为包含本条记录的提交指纹;业务源码、测试和运行配置未因记录更新而改变。 浏览器首轮是 5/6:通知补偿用例在“初始没有 SMTP 配置”的保护断言停止。未放宽断言;将现有配置仅在内存中保留,用既有本机合成 SMTP 夹具完整补跑后,先关闭本次服务,再逐字段恢复原配置并核对摘要。复验通过不能写成首轮全部通过,也不代表验证了外部邮件供应商。 共享开发库的操作另有明确授权:通过 Flowable 接口结束 4 个现有开发实例,清空 13 张验收保留表;保留 31 个模型、62 个部署、表结构、账号及数据库卷。测试生成的草稿和收件箱残留按运行时间限定清理;4 个合成账号经正式 API 逻辑删除,保留审计行,无新增可用账号。两次运行登记均已关闭,前端、后端和独立 Redis 已停止,验证码设置和 SMTP 配置已恢复。 原始运行产物、截图、日志、凭据和机器专属状态不进入 Git。仓库外保留脱敏报告;部分编码附件经过脱敏,不能用于字节级回放。现有正式入口不会自动清空开发数据或移除 SMTP 配置;再次验收仍须核对目标、取得所需数据操作授权并满足各保护条件。 ## 未执行边界 外部邮件/SMS/OSS 供应商、多节点故障、共享存储、容量长稳和目标生产部署仍需独立验收。H2、受控 HTTP 或受控浏览器结果不替代这些环境中的验证。临时原始报告按清理规则回收;业务备份保留在本地,不进入 Git。