tasks.md 38 KB

低代码应用开发业务领域化重设计任务计划

status: phase_5r_g_page_preview_feedback_done current_phase: phase_5r_g_page_preview_feedback last_updated: 2026-05-21 execution_rule: 每次只实现一个阶段;阶段开始前把该阶段状态改为 in_progress,阶段完成后改为 done 并补充实际改动文件与验证结果。

1. Spec 分析结论

  • 本变更是跨数据库、后端领域模型、低代码应用发布链路、前端信息架构和 AI 生成上下文的复杂改造,不适合一次性全量实现。
  • 最小安全路径是先建立领域主数据和接口,再让低代码应用绑定领域,最后改前端入口和 AI 生成;运行时 /ai/crud-page/{configKey}/ai/crud/{configKey} 保持不变。
  • 最高风险点是权限资源脚本、发布菜单父级、旧版 modelSchema 兼容、历史未归属应用、领域停用对新建/迁移入口的影响。
  • 第一版只存储和展示 relations/children 协议,不改变动态 CRUD 的单表查询能力;领域字段模板第一版只做新建模型初始化,不批量同步历史应用。
  • 所有新增查询 SQL 必须落在 Mapper XML;分页参数继续使用 pageNum/pageSize;业务内置数据和权限资源 tenant_id 使用 1

2. 阶段状态总览

阶段 状态 目标 阶段完成口径
0. 规划与门禁 done 完成 spec 阅读、风险识别和阶段拆分 tasks.md 已创建,未写实现代码
Gate. 人工确认 done 补齐 spec HARD-GATE 与待澄清项 spec.md 第 14 节已填写确认记录
1. 数据库与领域后端核心 done 新增领域表、领域 CRUD/树/默认规则/工作台接口 后端编译通过,接口路径完整
2. 应用领域绑定与模型协议兼容 done 低代码应用绑定领域,支持通用业务域和迁移,modelSchema 升级 v2 旧应用可读,新草稿必须绑定领域
3. 发布菜单与版本快照领域化 done 发布菜单按领域父级挂载,版本保留领域快照 发布/回滚不丢领域信息
4. 领域工作台与应用列表前端 done 低代码首页改成领域优先,提供领域工作台和迁移入口 前端构建通过,应用列表可按领域过滤
5. 搭建器领域优先改造 done 新建流程先选领域和业务对象,默认值按领域规则生成 草稿保存带领域和对象信息
5R. 数据模型/应用页面拆分纠偏 done 数据模型独立设计,应用页面选择多个模型并绑定字段 应用设计器不再维护模型本体,多模型字段引用可保存
5R-F. 交互反馈纠偏 done 修正领域树、模型关系选择、应用入口和菜单重复 前端交互顺序符合“领域 -> 模型 -> 应用页面”
5R-G. 页面设计与预览纠偏 done 修正发布菜单父级、表单详情合并、字段配置弹窗和真实运行态预览入口 父级菜单树选择;表单/详情共用;查询/列表字段弹窗编辑;已发布应用可运行态预览
6. AI 生成领域上下文注入 pending AI CRUD 生成支持 domainId 并注入领域上下文 流式生成请求与提示词包含领域信息
7. 测试、文档与收口 pending 补充 test-spec、核心测试和执行日志 编译/构建/测试结果记录完整

3. Gate:人工确认

状态:done

进入实现前先补齐 code-copilot/changes/lowcode-business-domain-redesign/spec.md 第 14 节确认记录。确认内容必须覆盖:

  • 允许新增业务领域管理菜单、领域工作台菜单、启停和迁移按钮权限。
  • 历史低代码应用先进入“通用业务域”,不做破坏性自动重命名。
  • 领域菜单父级按领域自动创建目录。
  • 领域字段模板第一版先不实现后续批量同步到已创建应用。
  • relations 第一版按自动生成 ER 图方向处理,不改变动态 CRUD 查询。

4. 阶段 1:数据库与领域后端核心

状态:done

目标

建立业务领域主表和后端基础接口,先不改前端入口,也不强制低代码应用绑定领域。

计划改动文件

  • Create: forge/db/migration/V1.0.7__add_lowcode_business_domain.sql
  • Create: forge/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/domain/entity/AiLowcodeDomain.java
  • Create: forge/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/dto/lowcode/LowcodeDomainDTO.java
  • Create: forge/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/dto/lowcode/LowcodeDomainStatusDTO.java
  • Create: forge/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/dto/lowcode/LowcodeDomainSchema.java
  • Create: forge/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/vo/lowcode/LowcodeDomainVO.java
  • Create: forge/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/vo/lowcode/LowcodeDomainTreeVO.java
  • Create: forge/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/vo/lowcode/LowcodeDomainWorkspaceVO.java
  • Create: forge/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/mapper/AiLowcodeDomainMapper.java
  • Create: forge/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/resources/mapper/AiLowcodeDomainMapper.xml
  • Create: forge/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/service/lowcode/LowcodeDomainService.java
  • Create: forge/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/controller/LowcodeDomainController.java

任务清单

  • 新增 Flyway 脚本,创建 ai_lowcode_domain,并为 ai_crud_configai_crud_config_version 增加 domain_id/domain_code/object_code/object_name 字段和必要索引。
  • Flyway 脚本初始化业务领域管理菜单、领域工作台菜单、启停/迁移按钮权限;所有 sys_resource 插入必须使用 tenant_id=1NOT EXISTS
  • 实现领域实体、DTO、VO 和 domain_schema JSON DTO,字段覆盖 spec 中 AI 上下文、命名规则、默认规则、字段模板、字典推荐、安全策略。
  • 实现 AiLowcodeDomainMapper.xml:分页、树、详情、同租户编码唯一校验、同父级名称唯一校验、工作台统计查询。
  • 实现 LowcodeDomainService:编码格式校验、默认值补齐、启停规则、存在应用时禁止物理删除。
  • 实现 /ai/lowcode/domain/page/tree/{id}POST /PUT //{id}/status/{id}/workspace/{id}/defaults

验证

  • Run: cd forge && mvn -pl forge-admin-server -am compile -DskipTests
  • 重点检查:分页参数为 pageNum/pageSize;新增查询 SQL 全在 XML;迁移脚本防重复。

5. 阶段 2:应用领域绑定与模型协议兼容

状态:done

目标

让低代码应用具备领域归属和业务对象标识,同时兼容旧版无领域 modelSchema。历史应用按澄清意见归入“通用业务域”。

计划改动文件

  • Modify: forge/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/domain/entity/AiCrudConfig.java
  • Modify: forge/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/domain/entity/AiCrudConfigVersion.java
  • Modify: forge/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/resources/mapper/AiCrudConfigMapper.xml
  • Modify: forge/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/resources/mapper/AiCrudConfigVersionMapper.xml
  • Modify: forge/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/mapper/AiCrudConfigMapper.java
  • Modify: forge/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/dto/lowcode/LowcodeAppDraftDTO.java
  • Modify: forge/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/dto/lowcode/LowcodeModelSchema.java
  • Create: forge/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/dto/lowcode/LowcodeDomainRef.java
  • Create: forge/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/dto/lowcode/LowcodeObjectSchema.java
  • Create: forge/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/dto/lowcode/LowcodeRelationSchema.java
  • Create: forge/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/dto/lowcode/LowcodePolicySchema.java
  • Modify: forge/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/vo/lowcode/LowcodeAppDetailVO.java
  • Create: forge/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/dto/lowcode/LowcodeMoveDomainDTO.java
  • Modify: forge/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/service/lowcode/LowcodeAppService.java
  • Modify: forge/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/service/lowcode/LowcodeSchemaValidator.java
  • Modify: forge/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/controller/LowcodeAppController.java
  • Create: forge/db/migration/V1.0.8__fix_lowcode_domain_workspace_route.sql

任务清单

  • 实体、Mapper ResultMap 和 Base_Columns 补齐领域字段,避免新增列无法回显。
  • /ai/lowcode/app/page 增加 domainId/domainCode/generalDomain 过滤,SQL 继续写在 AiCrudConfigMapper.xml
  • LowcodeAppDraftDTO 增加 domainId/objectCode/objectName;新增草稿绑定启用领域,旧前端未传领域时自动归入通用业务域。
  • LowcodeModelSchema 增加 schemaVersion/domain/object/relations/policies,读取旧版 schema 时用配置表字段补齐运行时对象,仍无领域时补齐为通用业务域。
  • 增加 /ai/lowcode/app/{id}/move-domain,历史和草稿可迁移到启用领域,停用领域禁止迁入。
  • LowcodeAppDetailVO 回显领域和业务对象信息,前端后续可直接展示。
  • 不新增手动前端路由;通过 V1.0.8 将阶段 1 的领域工作台菜单修正到现有 /ai/lowcode-apps,避免 404。

验证

  • Run: cd forge && mvn -pl forge-admin-server -am compile -DskipTests
  • 重点检查:旧版 modelSchema 仍能打开详情和预览;通用业务域过滤可查到历史应用。

6. 阶段 3:发布菜单与版本快照领域化

状态:done

目标

发布时优先使用领域菜单父级,版本记录保留领域归属快照,回滚后不丢领域信息。

计划改动文件

  • Modify: forge/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/dto/lowcode/LowcodePublishDTO.java
  • Modify: forge/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/service/lowcode/LowcodePublishService.java
  • Modify: forge/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/service/MenuRegisterAdapter.java
  • Modify: forge/forge-admin-server/src/main/java/com/mdframe/forge/admin/bridge/MenuRegisterAdapterImpl.java
  • Modify: forge/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/vo/lowcode/LowcodeVersionVO.java

任务清单

  • 发布菜单父级优先级实现为:发布请求显式 menuParentId > 领域默认/自动创建领域菜单父级 > 现有低代码默认父级。
  • MenuRegisterAdapter 支持更新已有菜单的父级;实现类更新 SysResource.parentId/resourceName/sort
  • 发布版本写入 domain_id/domain_code/object_code/object_namepublishSnapshot 同步包含领域、对象和菜单父级信息。
  • 回滚时从版本和快照恢复领域、对象、菜单配置;旧版本缺失字段时沿用当前配置或默认兜底。
  • 发布在线建表继续沿用现有 DDL 权限和二次确认,不因领域表名前缀绕过校验。

验证

  • Run: cd forge && mvn -pl forge-admin-server -am compile -DskipTests
  • 重点检查:领域未配置菜单父级时仍回落到现有默认父级;已有菜单更新后父级可变更。

7. 阶段 4:领域工作台与应用列表前端

状态:done

目标

把低代码首页从单纯应用卡片列表改为领域优先的信息架构,并提供领域管理、工作台和应用迁移入口。

计划改动文件

  • Modify: forge-admin-ui/src/api/lowcode-crud.js
  • Create: forge-admin-ui/src/components/lowcode-builder/domain/DomainTreePanel.vue
  • Create: forge-admin-ui/src/components/lowcode-builder/domain/DomainWorkspacePane.vue
  • Create: forge-admin-ui/src/components/lowcode-builder/domain/DomainEditorDrawer.vue
  • Create: forge-admin-ui/src/components/lowcode-builder/domain/MoveDomainModal.vue
  • Modify: forge-admin-ui/src/views/ai/lowcode-apps.vue

任务清单

  • 在 API 文件中补齐 domain page/tree/detail/create/update/status/workspace/defaults 和 app move-domain 方法。
  • 低代码首页增加左侧领域树,主区域按当前领域加载工作台与应用列表。
  • 保留关键词、发布状态筛选,选择领域时额外传入 domainId
  • 领域管理抽屉支持新增、编辑、启停、默认规则和 AI 上下文维护。
  • 应用卡片展示领域名称、业务对象编码和发布状态;历史应用提供迁移入口。
  • 页面控件使用 Naive UI 与项目现有后台风格,按钮操作颜色遵守项目后台操作约定。

验证

  • Run: source ~/.nvm/nvm.sh && nvm use v20.19.0 && cd forge-admin-ui && pnpm build
  • 重点检查:低代码首页在无领域、只有未归属、有多领域三种状态下都能正常展示。

8. 阶段 5:搭建器领域优先改造

状态:done

目标

新建低代码应用时先选择业务领域和业务对象,configKey/tableName/menuName 默认从领域规则推导。

计划改动文件

  • Modify: forge-admin-ui/src/views/ai/lowcode-builder.vue
  • Modify: forge-admin-ui/src/components/lowcode-builder/model/model-schema.js
  • Modify: forge-admin-ui/src/components/lowcode-builder/model/LowcodeModelDesigner.vue
  • Modify: forge-admin-ui/src/components/lowcode-builder/model/ModelFieldTable.vue
  • Modify: forge-admin-ui/src/components/lowcode-builder/model/ModelFieldPropertyPanel.vue
  • Modify: forge-admin-ui/src/components/lowcode-builder/publish/PublishPanel.vue
  • Modify: forge-admin-ui/src/views/ai/lowcode-apps.vue
  • Modify: forge-admin-ui/src/components/lowcode-builder/domain/DomainWorkspacePane.vue
  • Modify: forge/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/dto/lowcode/LowcodeAppDraftDTO.java
  • Modify: forge/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/dto/lowcode/LowcodePublishDTO.java

任务清单

  • 顶部配置改为“领域 / 业务对象 / 应用名称 / 发布菜单”,保留高级模式手动调整 configKey/tableName/menuParentId
  • 从领域默认规则生成 objectCodetableNameconfigKeymenuName;已有应用加载时不重新覆盖人工值。
  • 模型设计器增加“引入领域字段模板”,过滤审计字段,避免覆盖 id/tenant_id/create_by/create_time/create_dept/update_by/update_time
  • 字段编辑时根据领域字典推荐和安全策略推荐默认 dictType/sensitiveType/encryptAlgorithm,字典选项仍来自系统字典。
  • 保存草稿和发布请求带上 domainId/domainCode/domainName/objectCode/objectName

验证

  • Run: source ~/.nvm/nvm.sh && nvm use v20.19.0 && pnpm exec eslint --fix src/views/ai/lowcode-builder.vue src/views/ai/lowcode-apps.vue src/components/lowcode-builder/domain/DomainWorkspacePane.vue src/components/lowcode-builder/model/LowcodeModelDesigner.vue src/components/lowcode-builder/model/ModelFieldTable.vue src/components/lowcode-builder/model/ModelFieldPropertyPanel.vue src/components/lowcode-builder/model/model-schema.js src/components/lowcode-builder/publish/PublishPanel.vue
  • Run: source ~/.nvm/nvm.sh && nvm use v20.19.0 && NODE_OPTIONS=--max-old-space-size=8192 pnpm build
  • Run: cd forge && mvn -pl forge-admin-server -am compile -DskipTests
  • 结果:ESLint 通过;前端构建通过(4GB 堆偶发 OOM,8GB 堆通过;存在项目既有 UnoCSS 图标和 chunk 体积告警);后端 admin 编译通过。
  • 重点检查:低代码搭建器必须先选择业务领域;停用领域不可新建;编辑旧应用不覆盖 configKey/tableName;字段模板过滤审计字段;图片字段未改变 fileId 存储和运行时渲染方案。

8R. 阶段 5R:数据模型/应用页面拆分纠偏

状态:done

目标

按澄清后的关系重构交互:业务领域下沉淀多个独立数据模型,应用页面创建时选择一个或多个已有数据模型,页面元素再绑定到不同模型的字段。应用设计器不再维护模型名称、模型编码、字段、关联关系和校验规则等模型本体信息。

计划改动文件

  • Modify: forge-admin-ui/src/views/ai/lowcode-builder.vue
  • Create: forge-admin-ui/src/views/ai/lowcode-models.vue
  • Modify: forge-admin-ui/src/components/lowcode-builder/model/LowcodeModelDesigner.vue
  • Modify: forge-admin-ui/src/components/lowcode-builder/model/ModelFieldTable.vue
  • Modify: forge-admin-ui/src/components/lowcode-builder/model/ModelFieldPropertyPanel.vue
  • Modify: forge-admin-ui/src/components/lowcode-builder/model/model-schema.js
  • Modify: forge-admin-ui/src/components/lowcode-builder/page/ComponentPalette.vue
  • Modify: forge-admin-ui/src/components/lowcode-builder/page/StructuredListPageDesigner.vue
  • Modify: forge-admin-ui/src/components/lowcode-builder/page/FormCreateDesignerAdapter.vue
  • Modify: forge-admin-ui/src/components/lowcode-builder/page/page-schema.js
  • Modify: forge-admin-ui/src/components/lowcode-builder/page/LowcodePageBuilder.vue
  • Modify: forge-admin-ui/src/components/lowcode-builder/preview/LowcodePreviewPane.vue
  • Modify: forge-admin-ui/src/components/lowcode-builder/publish/PublishPanel.vue
  • Create: forge/db/migration/V1.0.9__add_lowcode_data_model.sql
  • Create: forge/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/domain/entity/AiLowcodeModel.java
  • Create: forge/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/dto/lowcode/LowcodeDataModelDTO.java
  • Create: forge/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/dto/lowcode/LowcodeDataModelStatusDTO.java
  • Create: forge/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/vo/lowcode/LowcodeDataModelVO.java
  • Create: forge/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/mapper/AiLowcodeModelMapper.java
  • Create: forge/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/resources/mapper/AiLowcodeModelMapper.xml
  • Create: forge/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/controller/LowcodeModelController.java
  • Create: forge/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/service/lowcode/LowcodeDataModelService.java
  • Modify: forge/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/dto/lowcode/LowcodePageSchema.java
  • Create: forge/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/dto/lowcode/LowcodePageModelRef.java
  • Modify: forge/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/service/lowcode/LowcodeSchemaValidator.java
  • Modify: forge/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/service/lowcode/LowcodeRuntimeConfigBuilder.java
  • Modify: forge/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/service/lowcode/LowcodeAppService.java

任务清单

  • 应用设计器左侧第二栏从“领域模型”改为“应用页面”,数据模型设计入口跳转到独立 lowcode-models 页面。
  • 应用基础信息只维护应用名称、应用编码、所属业务域、发布菜单等应用属性,不再维护模型基础信息。
  • 应用数据源支持选择多个已启用数据模型,并指定一个主模型用于当前单表运行时兼容。
  • 页面设计器字段池合并所选模型字段,字段标签显示来源模型,页面区域和画布组件可保存多模型字段引用。
  • 后端 pageSchema 增加应用引用模型快照,页面校验允许多模型字段引用;运行时转换只使用主模型字段,避免破坏现有动态 CRUD。
  • 取消低代码应用在同一领域内按业务对象编码唯一的限制,避免一个模型只能创建一个应用。
  • 数据模型设计页改为“业务域树 + 模型子节点”的树形信息架构,不再用模型卡片堆叠展示。
  • 字段设计 tab 去掉触发器;字段表格全宽优先,长度/小数位/必填/默认值等字段本体配置在字段设计区维护。
  • 字段编码输入改为输入时不强制规范化、失焦再规范化,避免行内编辑时焦点跳出。
  • 审计字段在前端保存前和后端保存前双侧过滤;领域通用字段校验覆盖 camel 与 snake 审计字段。
  • 查询字段、列表字段、编辑表单字段、查询方式、排序方式移动到页面设计阶段维护;模型字段表格不再展示查询/列表/表单开关。
  • 字段属性面板只保留数据库映射、主键/系统字段、字典与安全策略等补充配置,避免与字段表格重复。

验证

  • Run: source ~/.nvm/nvm.sh && nvm use v20.19.0 && pnpm exec eslint --fix src/views/ai/lowcode-models.vue src/components/lowcode-builder/model/LowcodeModelDesigner.vue src/components/lowcode-builder/model/ModelFieldTable.vue src/components/lowcode-builder/model/ModelFieldPropertyPanel.vue src/components/lowcode-builder/model/model-schema.js src/components/lowcode-builder/page/ComponentPalette.vue src/components/lowcode-builder/page/StructuredListPageDesigner.vue src/components/lowcode-builder/page/FormCreateDesignerAdapter.vue src/components/lowcode-builder/page/page-schema.js src/components/lowcode-builder/preview/LowcodePreviewPane.vue
  • Run: source ~/.nvm/nvm.sh && nvm use v20.19.0 && NODE_OPTIONS=--max-old-space-size=8192 pnpm build
  • Run: cd forge && mvn -pl forge-admin-server -am compile -DskipTests
  • 结果:ESLint 通过,仅保留 StructuredListPageDesigner.vue 既有单文件多组件 warning;前端生产构建通过,存在项目既有 UnoCSS 图标、CSS 注释和 chunk 体积 warning;后端 admin 编译通过。

8S. 阶段 5R-F:交互反馈纠偏

状态:done

目标

按最新反馈继续纠偏交互和菜单:关系配置不再手输目标对象编码;领域树可展开/收起;低代码应用页不再展示占空间的领域工作台概览;应用页面设计器不再出现左侧业务领域/应用页面侧栏;菜单只保留统一的“低代码应用”入口。

计划改动文件

  • Modify: forge-admin-ui/src/views/ai/lowcode-apps.vue
  • Modify: forge-admin-ui/src/views/ai/lowcode-builder.vue
  • Modify: forge-admin-ui/src/views/ai/lowcode-models.vue
  • Modify: forge-admin-ui/src/components/lowcode-builder/domain/DomainTreePanel.vue
  • Modify: forge-admin-ui/src/components/lowcode-builder/model/LowcodeModelDesigner.vue
  • Modify: forge-admin-ui/src/components/lowcode-builder/shared/DictTypeSelect.vue
  • Create: forge/db/migration/V1.0.10__dedupe_lowcode_app_menu.sql

任务清单

  • 模型关联配置的目标模型改为从当前领域数据模型中下拉选择;目标字段和展示字段随目标模型联动。
  • 字典与安全区的“字典类型 / 新增字典”改为固定网格对齐,修正控件高度不协调。
  • 低代码应用页和数据模型设计页的业务领域树支持展开/收起。
  • 低代码应用页移除领域工作台大块概览内容,保留业务领域树、应用列表、筛选和新建应用入口。
  • 新建应用入口在低代码应用页持续可见;未选领域时给出明确提示,停用领域仍禁止新建。
  • 应用页面设计器去掉左侧业务领域/应用页面侧栏和残留领域抽屉,改为单栏页面设计工作台。
  • 新增 V1.0.10 菜单迁移:把 ai:lowcode:domain:list 资源改名为“低代码应用”,删除旧 ai:lowcode:list 与临时 ai:lowcode:domain:workspace 资源,并迁移旧角色授权和发布按钮权限。

验证

  • Run: source ~/.nvm/nvm.sh && nvm use v20.19.0 && pnpm exec eslint --fix src/views/ai/lowcode-apps.vue src/components/lowcode-builder/domain/DomainTreePanel.vue src/views/ai/lowcode-models.vue src/components/lowcode-builder/model/LowcodeModelDesigner.vue src/components/lowcode-builder/shared/DictTypeSelect.vue src/views/ai/lowcode-builder.vue
  • Run: source ~/.nvm/nvm.sh && nvm use v20.19.0 && NODE_OPTIONS=--max-old-space-size=8192 pnpm build
  • Run: cd forge && mvn -pl forge-admin-server -am compile -DskipTests
  • Run: curl -I http://127.0.0.1:5173/ai/lowcode-apps
  • 结果:ESLint 通过;前端构建通过,存在项目既有 UnoCSS 图标、CSS 注释和 chunk 体积告警;后端 admin 编译通过;本地前端服务 127.0.0.1:5173 返回 200 OK

8T. 阶段 5R-G:页面设计与预览纠偏

状态:done

目标

按最新反馈修正应用发布、页面设计和预览交互:发布菜单父级从菜单树选择;查询详情页与表单页合并;查询字段、列表字段在弹窗中配置;表单配置按钮有明确反馈;已发布应用支持真实运行态预览入口。

计划改动文件

  • Create: forge-admin-ui/src/components/lowcode-builder/shared/MenuParentSelect.vue
  • Modify: forge-admin-ui/src/components/lowcode-builder/publish/PublishPanel.vue
  • Modify: forge-admin-ui/src/views/ai/lowcode-builder.vue
  • Modify: forge-admin-ui/src/components/lowcode-builder/domain/DomainEditorDrawer.vue
  • Modify: forge-admin-ui/src/components/lowcode-builder/page/StructuredListPageDesigner.vue
  • Modify: forge-admin-ui/src/components/lowcode-builder/page/LowcodePageBuilder.vue
  • Modify: forge-admin-ui/src/components/lowcode-builder/page/FormCreateDesignerAdapter.vue
  • Modify: forge-admin-ui/src/components/lowcode-builder/page/page-schema.js
  • Modify: forge-admin-ui/src/components/lowcode-builder/preview/LowcodePreviewPane.vue

任务清单

  • 发布配置、应用基础配置、领域默认规则中的菜单父级改为 MenuParentSelect,从 /system/resource/tree 加载目录/菜单树,不再手输父级 ID。
  • 页面设计器将“编辑表单”改为“表单与详情”,表单字段作为详情展示字段来源;列表设计区移除单独“查询详情页/详情字段”配置。
  • 查询字段、列表字段改为摘要行加弹窗配置;弹窗内支持字段增删、排序、查询方式、列表排序,避免字段过多挤压主设计区。
  • “应用表单配置”按钮调用后给出成功/未加载提示,避免点击无反馈。
  • 实时预览区区分草稿配置预览和真实运行态预览:草稿只做配置预览/后端校验;已发布应用可加载 crudConfigRender 并内嵌 AiCrudPage 访问真实运行接口,也可打开 /ai/crud-page/{configKey}
  • 明确未发布草稿不能直接跑真实 CRUD 数据和动作,避免把样例预览误认为真实运行。

验证

  • Run: source ~/.nvm/nvm.sh && nvm use v20.19.0 && pnpm exec eslint --fix src/components/lowcode-builder/shared/MenuParentSelect.vue src/components/lowcode-builder/publish/PublishPanel.vue src/views/ai/lowcode-builder.vue src/components/lowcode-builder/domain/DomainEditorDrawer.vue src/components/lowcode-builder/page/StructuredListPageDesigner.vue src/components/lowcode-builder/page/LowcodePageBuilder.vue src/components/lowcode-builder/page/FormCreateDesignerAdapter.vue src/components/lowcode-builder/page/page-schema.js src/components/lowcode-builder/preview/LowcodePreviewPane.vue
  • Run: source ~/.nvm/nvm.sh && nvm use v20.19.0 && NODE_OPTIONS=--max-old-space-size=8192 pnpm build
  • Run: curl -I http://127.0.0.1:5173/ai/lowcode-builder
  • 结果:ESLint 通过,仅保留 StructuredListPageDesigner.vue 既有单文件多组件 warning;前端构建通过,存在项目既有 UnoCSS 图标、CSS 注释和 chunk 体积告警;本地前端服务 127.0.0.1:5173/ai/lowcode-builder 返回 200 OK

8U. 阶段 5R-H:低代码菜单归位

状态:done

目标

按最新反馈调整菜单信息架构:低代码应用不再作为“AI智能平台”下的散落入口;复用原“AI代码生成”顶层目录并重命名为“AI低代码”,其下提供“模型设计”和“应用开发”两个低代码入口。

计划改动文件

  • Create: forge/db/migration/V1.0.11__reparent_lowcode_menus.sql
  • Modify: code-copilot/changes/lowcode-business-domain-redesign/tasks.md

任务清单

  • 新增 V1.0.11 菜单迁移:将原“AI代码生成”目录重命名为“AI低代码”。
  • ai:lowcode:model:list 菜单移到“AI低代码”下,显示名改为“模型设计”。
  • ai:lowcode:domain:list 菜单移到“AI低代码”下,显示名改为“应用开发”。
  • 将独立 ai:lowcode:edit 搭建器菜单隐藏到“应用开发”下,避免继续在“AI智能平台”下显示重复入口。
  • 根据现有低代码角色授权补齐“AI低代码”父目录授权,避免菜单树缺父节点导致子菜单不可见。

验证

  • Run: rg -n "[ \t]$" forge/db/migration/V1.0.11__reparent_lowcode_menus.sql code-copilot/changes/lowcode-business-domain-redesign/tasks.md
  • Run: cd forge && mvn -pl forge-admin-server -am compile -DskipTests
  • 结果:尾随空白检查无输出;后端 admin 编译通过。未改前端文件,未执行前端构建。

9. 阶段 6:AI 生成领域上下文注入

状态:pending

目标

AI CRUD 生成支持选择业务领域,提示词注入领域上下文,生成结果落入领域化 schema。

计划改动文件

  • Modify: forge/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/dto/StreamGenerateRequest.java
  • Modify: forge/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/service/CrudGeneratorStreamService.java
  • Modify: forge/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/dto/AiCrudGenerateRequest.java
  • Modify: forge-admin-ui/src/api/crud-generator.js
  • Modify: forge-admin-ui/src/composables/useCrudGenerator.js
  • Modify: forge-admin-ui/src/views/ai/crud-generator.vue

任务清单

  • StreamGenerateRequest 增加 domainId/objectCode/objectName
  • 后端生成提示词注入领域描述、术语、命名规则、字段模板、字典推荐和安全策略。
  • 如果领域未启用,生成请求直接返回明确错误;未选择领域时保持现有 AI 生成兼容路径。
  • 前端 AI 生成页增加领域选择,带出默认 configKey/tableName 建议。
  • 生成结果转换到 schemaVersion=2modelSchema,不改变现有 searchSchema/columnsSchema/editSchema/apiConfig 输出。

验证

  • Run: cd forge && mvn -pl forge-admin-server -am compile -DskipTests
  • Run: source ~/.nvm/nvm.sh && nvm use v20.19.0 && cd forge-admin-ui && pnpm build
  • 重点检查:不传 domainId 的旧生成流程仍可用;传 domainId 时提示词含领域上下文。

10. 阶段 7:测试、文档与收口

状态:pending

目标

补齐测试说明、自动化测试和执行日志,确保实现与 spec 对齐。

计划改动文件

  • Create: code-copilot/changes/lowcode-business-domain-redesign/test-spec.md
  • Modify: code-copilot/changes/lowcode-business-domain-redesign/spec.md
  • Modify: code-copilot/changes/lowcode-business-domain-redesign/tasks.md
  • Create: forge/forge-framework/forge-plugin-parent/forge-plugin-generator/src/test/java/com/mdframe/forge/plugin/generator/service/lowcode/LowcodeDomainServiceTest.java
  • Create: forge/forge-framework/forge-plugin-parent/forge-plugin-generator/src/test/java/com/mdframe/forge/plugin/generator/service/lowcode/LowcodeModelSchemaCompatibilityTest.java
  • Create: forge/forge-framework/forge-plugin-parent/forge-plugin-generator/src/test/java/com/mdframe/forge/plugin/generator/service/lowcode/LowcodePublishDomainMenuTest.java

任务清单

  • test-spec.md 覆盖领域 CRUD、领域树、工作台统计、默认规则、应用按领域分页、草稿绑定领域、发布菜单父级、旧 schema 兼容、AI 生成上下文。
  • 补充后端单元测试,优先覆盖编码唯一性、启停状态、未归属应用、菜单父级兜底、版本快照。
  • 执行后端编译、前端构建和可行的测试命令,记录结果到 spec 执行日志。
  • 更新 tasks.md 每个阶段实际改动文件和验证结果。
  • Review 前自查:是否有新增查询写在 Service wrapper、是否有 {id} 占位符、是否有 tenant_id=0、是否硬编码字典选项。

验证

  • Run: cd forge && mvn -pl forge-admin-server -am compile -DskipTests
  • Run: cd forge && mvn -pl forge-framework/forge-plugin-parent/forge-plugin-generator test
  • Run: source ~/.nvm/nvm.sh && nvm use v20.19.0 && cd forge-admin-ui && pnpm build

11. 执行日志

时间 阶段 状态 实际改动文件 验证
2026-05-20 0. 规划与门禁 done code-copilot/changes/lowcode-business-domain-redesign/tasks.md 未执行构建;本阶段仅任务规划
2026-05-20 1. 数据库与领域后端核心 done forge/db/migration/V1.0.7__add_lowcode_business_domain.sqlAiLowcodeDomain.javaLowcodeDomainDTO.javaLowcodeDomainStatusDTO.javaLowcodeDomainSchema.javaLowcodeDomainVO.javaLowcodeDomainTreeVO.javaLowcodeDomainWorkspaceVO.javaAiLowcodeDomainMapper.javaAiLowcodeDomainMapper.xmlLowcodeDomainService.javaLowcodeDomainController.java cd forge && mvn -pl forge-admin-server -am compile -DskipTests 通过
2026-05-20 2. 应用领域绑定与模型协议兼容 done AiCrudConfig.javaAiCrudConfigVersion.javaLowcodeAppDraftDTO.javaLowcodeMoveDomainDTO.javaLowcodeModelSchema.javaLowcodeDomainRef.javaLowcodeObjectSchema.javaLowcodeRelationSchema.javaLowcodePolicySchema.javaLowcodeAppDetailVO.javaAiCrudConfigMapper.javaAiCrudConfigMapper.xmlAiCrudConfigVersionMapper.xmlLowcodeAppService.javaLowcodeAppController.javaV1.0.8__fix_lowcode_domain_workspace_route.sql cd forge && mvn -pl forge-admin-server -am compile -DskipTests 通过;前端手动路由未保留
2026-05-20 3. 发布菜单与版本快照领域化 done LowcodePublishService.javaMenuRegisterAdapter.javaMenuRegisterAdapterImpl.javaLowcodeVersionVO.javaSysResourceMapper.javaSysResourceMapper.xml cd forge && mvn -pl forge-admin-server -am compile -DskipTests 通过
2026-05-20 4. 领域工作台与应用列表前端 done lowcode-crud.jslowcode-apps.vueDomainTreePanel.vueDomainWorkspacePane.vueDomainEditorDrawer.vueMoveDomainModal.vue pnpm exec eslint --fix ... 通过;NODE_OPTIONS=--max-old-space-size=4096 pnpm build 通过
2026-05-21 5R-F. 交互反馈纠偏 done lowcode-apps.vuelowcode-builder.vuelowcode-models.vueDomainTreePanel.vueLowcodeModelDesigner.vueDictTypeSelect.vueV1.0.10__dedupe_lowcode_app_menu.sql pnpm exec eslint --fix ... 通过;NODE_OPTIONS=--max-old-space-size=8192 pnpm build 通过;mvn -pl forge-admin-server -am compile -DskipTests 通过;curl -I http://127.0.0.1:5173/ai/lowcode-apps 返回 200 OK
2026-05-21 5R-G. 页面设计与预览纠偏 done MenuParentSelect.vuePublishPanel.vuelowcode-builder.vueDomainEditorDrawer.vueStructuredListPageDesigner.vueLowcodePageBuilder.vueFormCreateDesignerAdapter.vuepage-schema.jsLowcodePreviewPane.vue pnpm exec eslint --fix ... 通过,仅保留既有单文件多组件 warning;NODE_OPTIONS=--max-old-space-size=8192 pnpm build 通过;curl -I http://127.0.0.1:5173/ai/lowcode-builder 返回 200 OK
2026-05-21 5R-H. 低代码菜单归位 done V1.0.11__reparent_lowcode_menus.sqltasks.md 尾随空白检查无输出;mvn -pl forge-admin-server -am compile -DskipTests 通过