execution-log.md 17 KB

执行日志 — Controller 边界与查询规范整改

时间线

时间 阶段 事件 备注
2026-07-27 Research 重新扫描当前 Controller 越层、异常和分页基线 14 文件/35 数据操作,4 文件/9 裸异常,3 个未兼容分页端点
2026-07-27 Research 复核 Flow 删除语义 2 类已是逻辑删除;5 类是管理员显式不可逆清理
2026-07-27 Proposal/HARD-GATE 创建四份 SDD 文档 用户已授权按分阶段方案继续 /apply
2026-07-27 Apply/Task 1 完成分页双读和 Controller 异常边界整改 保留旧 page 别名;Excel 响应不再透传底层异常
2026-07-27 Apply/Task 2 完成 System 查询下沉 SysLoginLogControllerLoginTenantAssetController 不再构造查询或直连 Mapper
2026-07-27 Apply/Task 3 完成 AI 查询和默认项更新下沉 新增模型/供应商协调 Manager,保证供应商状态同步
2026-07-27 Apply/Task 4 完成 Generator 查询和字段配置操作下沉 新增字段配置 Service,迁移 Mapper 注解 SQL 和查询 Wrapper 到 XML
2026-07-27 Apply/Task 5 完成 Data/Message 数据操作下沉 数据集发布状态更新保留租户/逻辑删除门禁;消息业务类型查询进入 XML
2026-07-27 Apply/Task 6 完成 Flow 查询、统计、状态同步和清理下沉 复用 FlowMonitorService;2 类逻辑删除、5 类管理员物理清理及确认门禁保持
2026-07-27 Spec Review 独立 Reviewer 逐条核验 Spec 与实现 PASS;真实数据库 SQL 和不可逆清理 E2E 保留为部署门禁
2026-07-27 Code Quality Review 1 独立 Reviewer 检查事务、安全边界、并发和模块依赖 FAIL:0 Critical、4 Important;发现流程逐实例事务、异常泄露、AI 摘要并发覆盖和 Flow/System Service 耦合问题
2026-07-27 Review Fix 修复 4 个 Important 流程增加逐实例事务和稳定公开文案,引入用户查询 SPI;AI 增加供应商/模型 FOR UPDATE 行锁和确定性锁顺序
2026-07-27 Code Quality Review 2 独立 Reviewer 基于最新工作树复审 FAIL:0 Critical、4 Important;发现事务传播、跨表锁顺序、供应商删除竞态和降级日志缺口
2026-07-27 Review Fix 2 修复第二轮 4 个 Important Flow 固定 REQUIRES_NEW 并记录降级堆栈;AI 统一供应商先锁、模型后锁,删除供应商进入 Manager 原子编排
2026-07-27 Code Quality Review 3 独立 Reviewer 基于最新工作树复审 FAIL:0 Critical、2 Important、1 Minor;发现批量清理前置查询异常边界、默认供应商写入旁路和外层事务测试缺口
2026-07-27 Review Fix 3 修复第三轮全部发现 Flow 增加前置查询稳定错误边界和外层事务挂起/恢复测试;AI 默认切换进入全量升序锁 Manager,通用保存忽略默认标志
2026-07-27 Code Quality Review 4 独立 Reviewer 基于最新工作树复审 FAIL:2 Critical、1 Important;发现清理专用权限/租户边界、批量筛选范围和 AI 超管跨租户缺口
2026-07-27 Review Fix 4 修复第四轮全部发现 Flow 清理端点增加专用权限和当前租户候选/归属校验;AI 默认切换显式贯穿必填租户
2026-07-27 Code Quality Review 5 独立 Reviewer 基于最新工作树复审 FAIL:3 Critical、2 Important、1 Minor;发现权限资源唯一键、表单清理租户、监控分级权限/归属、Mapper 参数和合同假阳性问题
2026-07-27 Review Fix 5 修复第五轮全部发现 Flow 查询/管理/清理权限分级,实例/任务归属前置校验,表单状态和清理 SQL 显式传租户,合同按目标 statement 精确断言
2026-07-27 Code Quality Review 6 独立 Reviewer 基于最新工作树复审 FAIL:2 Critical、2 Important、1 Minor;错误日志和监控聚合租户边界、迁移兼容碰撞、管理事务与 UI 权限可见性未闭合
2026-07-27 Review Fix 6 修复第六轮全部发现 错误日志与监控查询显式租户化,管理/清理使用事务行锁,迁移补 PUT 权限并移除碰撞 UPDATE,UI 按 manage/cleanup 隐藏操作
2026-07-27 Code Quality Final 独立 Reviewer 定向复审最新工作树 PASS;统一 business-first 锁顺序并让 UI 权限缺失时失败关闭后,无剩余或新增 Critical/Important/Minor

验证记录

时间 范围 命令 结果 警告/跳过
2026-07-27 Generator 静态合同 rg 扫描 4 个目标 Controller;xmllint --noout 校验 4 份 Mapper XML;目标文件 git diff --check 通过:Controller Wrapper/Mapper 直连、目标 Service 查询 Wrapper 均无输出,XML 和差异格式通过 未连接真实数据库,未执行 Mapper SQL
2026-07-27 Generator Reactor JAVA_HOME=... mvn -pl forge-framework/forge-plugin-parent/forge-plugin-generator -am package -DskipTests 29 个 Reactor 模块全部成功,BUILD SUCCESS 测试按命令跳过;依赖模块存在既有 deprecation/unchecked/Builder 警告
2026-07-27 Data/Message 静态合同 目标 Controller/Service rg;两份 Mapper XML xmllint --noout;目标差异 git diff --check 通过:Wrapper/lambda* 扫描为空,XML 和差异格式通过 未连接真实数据库,未执行 Mapper SQL
2026-07-27 Data/Message Reactor JAVA_HOME=... mvn -pl forge-framework/forge-plugin-parent/forge-plugin-data,forge-framework/forge-plugin-parent/forge-plugin-message -am package -DskipTests 27 个 Reactor 模块全部成功,BUILD SUCCESS 测试按命令跳过;依赖模块存在既有编译警告
2026-07-27 Flow 合同测试 Red mvn -pl forge-flow/forge-flow-server test ... -Dtest=FlowControllerBoundaryContractTest 首次使用默认 Java 8 被目标版本 17 拒绝;切换 JDK 17 后 3 条合同测试按预期失败,证明 Controller/Mapper 基线可被测试捕获 Java 版本问题已通过显式 JAVA_HOME 修正
2026-07-27 Flow Mapper XML xmllint --noout 校验 FlowBusiness/Task/Comment/Cc/ErrorLog/FormInstance/FillBatchItem 七份 XML 全部解析通过 未连接真实 MySQL,未执行 SQL
2026-07-27 Flow Reactor JAVA_HOME=... mvn -pl forge-flow/forge-flow-server -am package -DskipTests 32 个 Reactor 模块全部成功,BUILD SUCCESS;最终复跑同样通过 测试按命令跳过;Generator/Flow 依赖模块有既有 deprecation/unchecked 警告
2026-07-27 Flow 合同测试 Green mvn -pl forge-flow/forge-flow-server compiler:testCompile surefire:test ... -Dtest=FlowControllerBoundaryContractTest 5 条通过,0 failure/error/skip 先由 Reactor 生成当前依赖类,规避只构建子模块时本地仓库旧快照
2026-07-27 Flow 既有委托身份测试 mvn -pl forge-flow/forge-flow-server test ... -Dtest=FlowDelegatedIdentityControllerTest 未进入断言:3 条均因 Mockito inline Byte Buddy 无法 self-attach 报错 本机 JDK attach 环境限制;测试源码已编译,未将该结果计为通过
2026-07-27 Maven 本地安装尝试 mvn -pl .../forge-plugin-flow install -DskipTests 失败:沙箱禁止写入用户目录 .m2 非代码失败;改用 Reactor 联合构建和直接测试目标完成验证
2026-07-27 Controller 聚合静态合同 全仓 Controller Wrapper/lambda*、裸 RuntimeException 扫描;Flow 分页双读检查;git diff --check 全部通过:Wrapper 和裸异常无输出,page/pageNum 保持旧参数优先,差异格式通过 Controller 直连 Mapper 的全仓历史存量另行盘点,不混入本变更基线
2026-07-27 Spec Review 修复复跑 子模块直接执行 compiler:testCompile surefire:test -Dtest=FlowControllerBoundaryContractTest 未进入断言:测试编译看不到当前工作树新增的 PageParamResolver 子模块引用本机 .m2forge-starter-core 快照;当前 Reactor 的目标类已存在,不计为代码失败
2026-07-27 Spec Review 修复有效验证 dependency:build-classpath 后以 javac 加入当前 forge-starter-core/target/classes 编译目标测试,再用 mvn surefire:test -Dmaven.test.additionalClasspath=... 执行 7 条通过,0 failure/error/skip;覆盖分页四组合、分布首个非空标题、清理和统计合同 Maven 报三个本地快照 POM 的既有 transitive dependency 警告;未影响本次测试
2026-07-27 Excel 安全合同初次复跑 mvn -pl .../forge-starter-excel test -Dtest=AsyncExportSecurityContractTest,ExcelImportSecurityContractTest,并尝试覆盖通用 skip 参数 BUILD SUCCESS,但 testCompile 和 Surefire 明确显示测试被跳过,不计为通过 根 POM 使用 forge.tests.skip=true,需启用 enable-tests profile
2026-07-27 Excel 安全合同有效复跑 mvn -Penable-tests -pl .../forge-starter-excel test -Dtest=AsyncExportSecurityContractTest,ExcelImportSecurityContractTest 5 条通过,0 failure/error/skip;异步导出 2 条、同步导入 3 条 测试故意触发的内部异常完整写入测试日志,公开对象断言确认不含内部消息和路径
2026-07-27 System 安全合同 Reactor 尝试 mvn -Penable-tests -pl .../forge-plugin-system -am test -Dtest=SysUserImportSecurityContractTest -Dsurefire.failIfNoSpecifiedTests=false 未执行到 System:前置 forge-starter-datascope 因测试类路径没有 JUnit/TestNG engine 且配置了 groups 而失败 环境/聚合测试配置问题,不计为目标测试失败
2026-07-27 System 安全合同有效复跑 根 Reactor 生成测试依赖 classpath,javac 单独编译 SysUserImportSecurityContractTest,随后 mvn -Penable-tests -pl .../forge-plugin-system surefire:test -Dtest=SysUserImportSecurityContractTest 1 条通过,0 failure/error/skip;确认用户导入只公开稳定文案并记录完整异常 测试为源码合同,不连接数据库;规避 System 单模块读取 .m2starter-core 快照
2026-07-27 Flow Code Review 修复合同首次复跑 mvn -Penable-tests -pl forge-flow/forge-flow-server surefire:test -Dtest=FlowControllerBoundaryContractTest -Dmaven.test.additionalClasspath=.../forge-starter-core/target/classes 执行 9 条,8 条通过、1 条失败;发现流程变量和活动节点接口仍拼接系统异常消息 有效测试失败,继续修复,不计为通过
2026-07-27 Flow Code Review 修复合同 Green 同上,修复两个遗留异常分支后复跑 9 条通过,0 failure/error/skip 未连接数据库、未执行流程清理
2026-07-27 AI 并发合同 mvn -Penable-tests -pl .../forge-plugin-ai test -Dtest=AiModelProviderConcurrencyContractTest 1 条通过,0 failure/error/skip Mockito-free 源码合同;未连接数据库执行真实并发事务
2026-07-27 Flow+AI 修复后 Reactor mvn -pl forge-flow/forge-flow-server,forge-framework/forge-plugin-parent/forge-plugin-ai -am package -DskipTests 32 个 Reactor 模块全部成功,BUILD SUCCESS 测试按命令跳过;既有 deprecation/unchecked/Builder 警告不阻断
2026-07-27 AI 第二轮并发合同首次复跑 mvn -Penable-tests -pl .../forge-plugin-ai test -Dtest=AiModelProviderConcurrencyContractTest 生产代码和测试编译通过,1 条断言失败 测试源码切片错误地要求下一个方法为 public;修复测试解析后复跑,不计为实现失败
2026-07-27 AI 第二轮并发合同 Green 同上 1 条通过,0 failure/error/skip 覆盖供应商先锁、模型后锁和供应商删除原子编排的源码合同
2026-07-27 Flow 独立事务测试 mvn -Penable-tests -pl .../forge-plugin-flow test -Dtest=FlowCleanupTransactionExecutorTest 1 条通过,0 failure/error/skip 无 Mockito;验证 3 次均为 REQUIRES_NEW、2 次提交和 1 次回滚
2026-07-27 Flow 第二轮边界合同 手工 javac 使用当前 Reactor classpath 编译测试后执行 surefire:test -Dtest=FlowControllerBoundaryContractTest 9 条通过,0 failure/error/skip 覆盖事务执行器源码、稳定文案、降级日志和 SPI 解耦
2026-07-27 Flow+AI 第二轮修复后 Reactor mvn -pl forge-flow/forge-flow-server,forge-framework/forge-plugin-parent/forge-plugin-ai -am package -DskipTests 32 个 Reactor 模块全部成功,BUILD SUCCESS 测试按命令跳过;既有编译警告不阻断
2026-07-27 第三轮回归合同 Red AI 并发合同直接执行;Flow 合同按常规 Maven 命令尝试 AI 1 条按预期失败,证明默认供应商旁路可被捕获;Flow 因本机 .m2forge-starter-core 快照无法编译新增 PageParamResolver Flow 环境限制与既有记录一致,不计为实现失败
2026-07-27 AI 第三轮并发合同 Green mvn -Penable-tests -pl .../forge-plugin-ai test -Dtest=AiModelProviderConcurrencyContractTest 1 条通过,0 failure/error/skip 覆盖默认切换 Manager、全量升序供应商锁和通用保存默认标志隔离
2026-07-27 Flow 第三轮边界合同 Green 使用 /private/tmp/forge-flow-test-classpath.txt 和当前 forge-starter-core/target/classes 手工编译目标测试,再执行 surefire:test 10 条通过,0 failure/error/skip 新增批量清理候选查询稳定错误边界合同;未连接数据库或执行清理
2026-07-27 Flow 独立事务增强测试 mvn -Penable-tests -pl .../forge-plugin-flow test -Dtest=FlowCleanupTransactionExecutorTest 2 条通过,0 failure/error/skip 覆盖 3 次独立执行、2 提交/1 回滚及外层事务挂起/恢复
2026-07-27 AI Mapper 与目标格式 xmllint --noout AiProviderMapper.xml;目标文件 git diff --check;默认写入旁路 rg 全部通过 isDefault 仅保留响应读取和兼容 DTO 字段,生产保存路径不读取该字段
2026-07-27 Flow+AI 第三轮修复后 Reactor mvn -q -pl forge-flow/forge-flow-server,forge-framework/forge-plugin-parent/forge-plugin-ai -am package -DskipTests 32 模块聚合构建退出码 0 测试按命令跳过;目标测试已单独有效执行,既有编译警告不阻断
2026-07-27 Code Quality Review 4 独立 Reviewer 基于最新工作树复审 FAIL:2 Critical、1 Important;清理权限/租户、筛选范围和 AI 超管跨租户边界不完整 未连接数据库,未执行清理
2026-07-27 第四轮安全合同 Red/Green Flow 合同先 2 failure/1 error、AI 合同 1 failure;修复后执行 FlowControllerBoundaryContractTestAiModelProviderConcurrencyContractTest Green:Flow 12/12、AI 1/1 Flow 单模块首次受 .m2 旧 core 快照影响,按既有方案使用当前 Reactor 产物编译/执行
2026-07-27 第四轮事务/XML/Flyway FlowCleanupTransactionExecutorTest;9 份 Mapper XML xmllintV1.0.55 placeholder/权限/防重复静态检查 事务 2/2,XML 全部合法,Flyway 静态合同通过 未执行真实 MySQL/Flyway 或 Flowable 清理
2026-07-27 第五轮 Flow 合同与事务 FlowControllerBoundaryContractTestFlowCleanupTransactionExecutorTest Flow Controller 合同 14/14、独立事务测试 2/2 未连接真实数据库,未执行 Flowable 清理
2026-07-27 第五轮 Flow XML/构建/静态合同 七份 Flow Mapper XML xmllint --noout;Flow Server 依赖 Reactor package -DskipTests;Controller/Flyway/差异扫描 XML 全部合法,32 个 Reactor 模块构建成功;Wrapper、裸异常、placeholder、Flyway 版本重复均无输出,git diff --check 通过 测试按构建命令跳过;目标合同已单独有效执行,真实 MySQL/Flyway 和角色矩阵保留为部署门禁
2026-07-27 第六轮 Flow 定向验证 forge-plugin-flow compile -DskipTestsFlowControllerBoundaryContractTest;两份 Mapper XML;监控页 ESLint;目标差异检查 插件编译成功,合同最终 18/18,XML、ESLint 和差异格式通过 按用户要求不重复全 Reactor/UI build;真实数据库、角色矩阵、并发与不可逆清理未执行

Spec-Code 偏差记录

偏差点 Spec 预期 实际情况 处理方式
原清单 Wrapper 数量 14 文件/40 处 当前代码为 14 文件/35 个操作 以可复现的当前扫描基线为准
原清单裸异常 4 文件/10 处 当前代码为 4 文件/9 处 以当前扫描基线为准
原清单分页 4 处 FlowFormController 已双读,剩余 3 处 保留其为兼容参考,修复剩余 3 处
原清单流程删除 7 处均视为物理删除 2 个实体已有 @TableLogic 明确 2 逻辑 + 5 管理清理物理语义

服务状态

  • 本变更尚未启动任何服务。
  • 未连接真实数据库,未执行任何 Flowable 或 Forge 流程数据清理。