execution-log.md 3.4 KB

执行日志 — 业务域删除孤立对象优化

2026-08-04 需求分析与验证基线

  • 变更范围:应用中心业务域删除链路。
  • 工作树基线:用户既有 M .DS_StoreD forge/.DS_Store,本任务保持不动。
  • 根因证据:
    • BusinessApplicationService.delete 删除应用对象关联但保留业务对象。
    • BusinessSuiteService.delete 在应用/入口校验之前调用 countObjectsBySuite,孤立对象直接触发“该业务套件已存在业务对象,不能删除”。
    • BusinessSuiteMapper.xml 的对象统计已过滤 del_flag = 0,不是逻辑删除条件遗漏。
  • 方案:新增默认关闭的显式孤立对象清理参数;仍有应用、入口或有效应用对象引用时失败关闭;确认后物理清理关系表、逻辑删除对象和业务域。
  • 服务与数据库:未启动、未修改。
  • 下一步:新增服务测试并确认 Red。

2026-08-04 Red / Green 与实现

  • Red 命令:
    • JAVA_HOME=... mvn -Penable-tests -Dtest=BusinessSuiteServiceTest test
    • 结果:失败;6 处编译错误均为 BusinessSuiteService.delete 仅支持 Long,尚不支持预期的 Long, boolean
  • Green 实现:
    • Controller 新增默认 falsecleanupOrphanObjects 查询参数。
    • Service 先校验子域、业务应用和访问入口,再处理孤立对象;未确认时返回带数量的可操作提示。
    • Mapper 在清理前检查有效应用对象引用;物理删除 ai_business_object_relation,按 del_flag = id 逻辑删除 ai_business_object
    • 前端两个删除入口根据 objectCount 明确提示影响并传递清理参数。
  • Green 命令:同 Red。
  • Green 结果:Tests run: 6, Failures: 0, Errors: 0, Skipped: 0,构建成功。

2026-08-04 增量验证

  • generator 模块全量测试:
    • 命令:JAVA_HOME=... mvn -Penable-tests test
    • 结果:共 569 个用例,2 failures、4 errors,其余 563 通过。
    • 非本轮失败:
    • FormulaExecutionEngineLookupTest.lookupResolverFailureIsTraced
    • FormulaValueMaskerTest.masksStandaloneSensitiveValues
    • BusinessBindingApplicationTargetTest.applicationTargetValidatesIdAndCode(测试对象 baseMapper 未注入)
    • BusinessExtensionVersionServiceTest 2 个用例(applicationChangeTracker 未注入)
    • LowcodeRuntimeConfigBuilderTest.doesNotPublishOneToManyChildRelationAsRelationNameTranslation(测试模型缺少自增主键约束)
    • 判断:上述类与本轮 Controller、Suite Service/Mapper 及前端删除入口没有调用或文件重叠;不作为本轮阻断,后续应单独修复测试基线。
  • 前端生产构建:
    • 命令:source ~/.nvm/nvm.sh && nvm use v20.19.0 && NODE_OPTIONS=--max-old-space-size=8192 pnpm build
    • 结果:通过,8847 个模块,耗时 3m43s。
    • 警告:既有组件命名冲突、动态/静态导入和 CSS // 注释警告,无本轮新增错误。
  • 目标 ESLint:
    • 命令:pnpm exec eslint src/api/business-app.js src/views/app-center/index.vue 'src/views/app-center/suite.[suiteCode].vue'
    • 结果:0 errors、3 warnings;均为 index.vue 既有属性顺序警告(95-97 行)。
  • Mapper XML:xmllint --noout .../BusinessSuiteMapper.xml 通过。
  • 差异检查:git diff --check 通过。
  • 服务与数据库:按用户偏好未启动真实服务、未执行数据库变更;本轮也没有 Flyway 变更。