status: completed created: 2026-06-14 拆分顺序:契约与迁移 → 后端应用模式 → 应用代码接口 → 代码生成模板 → 前端应用管理 → 旧入口下线 → 术语清理 → 验证 原则:先完成 spec/tasks 再编码;不回滚无关工作区改动;查询 SQL 写 Mapper XML;分页参数使用
pageNum/pageSize;内置数据tenant_id=1;用户可见文案不出现 CRUD。
| 阶段 | 目标 | 包含任务 | 交付结果 |
|---|---|---|---|
| Phase 0 | 规格冻结 | Task 0 | 确认接口前缀、旧入口兼容策略和术语表 |
| Phase 1 | 后端模型 | Task 1-2 | 应用模式字段、options 解析、权限和迁移 |
| Phase 2 | 代码能力 | Task 3-5 | 应用管理代码预览、下载、业务接口生成、完整 zip |
| Phase 3 | 前端应用管理 | Task 6-8 | 应用模式选择、代码面板、应用总览操作收敛 |
| Phase 4 | 旧入口和术语 | Task 9-10 | 旧配置入口下线,高级配置隐藏技术入口 |
| Phase 5 | 验证收尾 | Task 11-12 | 自动化验证、执行日志、文档回填 |
| Task | 阶段 | 名称 | 状态 | 优先级 |
|---|---|---|---|---|
| Task 0 | Phase 0 | 规格确认与实现边界冻结 | completed | P0 |
| Task 1 | Phase 1 | 应用模式后端字段与 options 映射 | completed | P0 |
| Task 2 | Phase 1 | 字典、菜单和权限迁移脚本 | completed | P0 |
| Task 3 | Phase 2 | 应用管理代码预览/下载后端接口 | completed | P0 |
| Task 4 | Phase 2 | 业务专属接口路径解析与校验 | completed | P0 |
| Task 5 | Phase 2 | 代码生成模板标准化与完整 zip | completed | P0 |
| Task 6 | Phase 3 | 前端 API 迁移到应用管理 | completed | P0 |
| Task 7 | Phase 3 | 应用编辑抽屉新增使用模式 | completed | P0 |
| Task 8 | Phase 3 | 应用总览入口操作和代码面板整合 | completed | P0 |
| Task 9 | Phase 4 | 旧 /ai/crud-config 入口下线 |
completed | P0 |
| Task 10 | Phase 4 | 高级配置和终端用户术语清理 | completed | P0 |
| Task 11 | Phase 5 | 自动化测试与构建验证 | completed | P0 |
| Task 12 | Phase 5 | 变更文档、执行日志和验收回填 | completed | P1 |
目标: 在编码前确认本阶段只做“应用管理收敛 + 双模式 + 下载代码业务接口 + 旧入口下线”,不重写动态运行时。
涉及文件:
code-copilot/changes/app-mode-code-download-consolidation/spec.mdcode-copilot/changes/app-mode-code-download-consolidation/tasks.md执行步骤:
/{suiteCode-kebab}/{objectCode-kebab}。/ai/crud-config/codegen/download/{configKey} 的后端兼容策略:短期保留但加权限和废弃提示,前端不再调用。spec.md 第 11 章。验收标准:
目标: 应用保存、详情、列表都能读写 appMode,历史应用默认在线运行。
涉及文件:
forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/dto/businessapp/BusinessAppDTO.javaforge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/vo/businessapp/BusinessAppVO.javaforge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/service/businessapp/BusinessAppService.javaforge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/constant/BusinessAppMode.java执行步骤:
BusinessAppDTO.appMode 和 BusinessAppVO.appMode。DYNAMIC_RENDERCODE_DOWNLOADBusinessAppService 的 DTO → Entity 保存逻辑中,将 appMode 写入 options.appMode。options.appMode 解析 appMode。entryMode != RUNTIME 的入口保存时移除 options.appMode,VO 默认返回 DYNAMIC_RENDER 或空值需保持前端可识别。entryMode = RUNTIME 且未传 appMode 的历史数据默认 DYNAMIC_RENDER。CODE_DOWNLOAD 时校验必须有关联 suiteCode、objectCode 和 configKey。验收标准:
appMode。options 中包含正确 appMode。目标: 补齐应用模式字典、应用代码权限,并隐藏旧终端用户入口。
涉及文件:
forge-server/db/migration/V1.0.70__consolidate_app_codegen_mode.sqlforge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/resources/sql/ai_crud_config.sqlforge-server/forge-admin-server/sql/初始化脚本.sql执行步骤:
forge-server/db/migration/ 当前最大版本号,选择下一个版本。ai_business_app_mode,tenant_id=1,带 NOT EXISTS。DYNAMIC_RENDER、CODE_DOWNLOAD,tenant_id=1,带 NOT EXISTS。ai:businessApp:codeai:businessApp:codePreviewai:businessApp:codeDownload/ai/crud-config/ai/crud-generator/ai/lowcode-builder/ai/lowcode-modelstenant_id=0 和 tenant_id=1 资源条件,但新增内置数据必须用 tenant_id=1。验收标准:
目标: 代码能力从低代码应用入口迁移到业务应用入口。
涉及文件:
forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/controller/BusinessAppController.javaforge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/service/businessapp/BusinessAppCodegenService.javaforge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/dto/lowcode/LowcodeCodegenRequest.javaforge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/vo/lowcode/LowcodeCodePreviewVO.java执行步骤:
BusinessAppController 新增:
GET /{id}/code/optionsPUT /{id}/code/optionsGET /{id}/code/previewGET /{id}/code/download@SaCheckPermission:
ai:businessApp:codeai:businessApp:codePreviewai:businessApp:codeDownloadBusinessAppCodegenService 读取应用详情,校验应用存在、租户可见、entryMode=RUNTIME、appMode=CODE_DOWNLOAD。configKey 读取 AiCrudConfig,不存在时抛出业务异常“访问入口尚未发布,不能生成代码”。code/options 从 ai_business_app.options.codegen 读写,不再写入旧配置入口的 UI 状态。code/preview 返回文件 Map、文件数量、应用 ID、configKey、sourceType。code/download 输出 zip,文件名使用 {appCode-kebab}-code.zip 或 {configKey}-code.zip。验收标准:
/ai/business/app/{id}/code/preview 获取代码预览。/ai/business/app/{id}/code/download 下载 zip。目标: 下载代码模式生成前统一覆盖旧通用接口,保证代码包和预览不含 /ai/crud/。
涉及文件:
BusinessAppCodegenService.javaLowcodeCodegenRequest.javaforge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/codegen/VelocityCodegenStrategy.java执行步骤:
LowcodeCodegenRequest 增加 businessApiBase 字段,说明“下载代码模式业务接口前缀”。suiteCode 和 objectCode 转小写 kebab 或小写下划线统一格式。/{suite}/{object},例如 /crm/customer。/ 开头。/ai/crud/、/ai/crud-config、/ai/lowcode/、/rest/ 开头。{configKey}。crud。apiConfig,更新和删除必须使用 POST:
list: get@{base}/pagedetail: post@{base}/getByIdadd: post@{base}/addupdate: post@{base}/editdelete: post@{base}/remove/:id{base}/import-template、{base}/import、{base}/export。businessApiBase 同步写入 options.codegen.businessApiBase。VelocityCodegenStrategy 中优先读取 options.codegen.businessApiBase,再读取 apiConfig.list,最后才按 configKey 兜底。验收标准:
/ai/crud/{configKey} 配置下载代码时,生成结果自动变成业务路径。/ai/crud/。目标: 下载代码模式输出完整且符合 Forge 标准的代码包。
涉及文件:
forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/resources/templates/vm/controller.java.vmforge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/resources/templates/vm/ai-crud/api.js.vmforge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/resources/templates/vm/ai-crud/index.vue.vmforge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/codegen/VelocityCodegenStrategy.javaforge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/resources/templates/vm/README.md.vm执行步骤:
POST /getByIdPOST /addPOST /editPOST /remove/{id}api.js.vm 调整为业务专属接口调用,更新和删除继续使用 POST。index.vue.vm 的 baseApiConfig 调整为:
list: 'get@${apiBase}/page'detail: 'post@${apiBase}/getById'add: 'post@${apiBase}/add'update: 'post@${apiBase}/edit'delete: 'post@${apiBase}/remove/:${pkColumn.javaField}'README.md,说明:
VelocityCodegenStrategy 将 README 加入 zip 文件列表。验收标准:
/ai/crud/。apiConfig 使用冒号占位符,不使用 {id}。目标: 前端代码预览、下载和设置全部调用 /ai/business/app。
涉及文件:
forge-admin-ui/src/api/business-app.jsforge-admin-ui/src/api/lowcode-crud.js执行步骤:
business-app.js 新增:
businessAppCodePreview(id, params)businessAppCodeOptions(id)businessSaveAppCodeOptions(id, data)businessDownloadAppCode(id, params)/ai/business/app/{id}/code/download。syncPublishedCrudConfigs 对外导出名改为 syncPublishedApps,旧函数可保留兼容但不在 UI 使用。dynamicCrudImportTemplate/export/import 的用户可见调用点改名或隔离,不在应用管理主界面暴露 CRUD 命名。lowcode-crud.js 中低代码内部能力,但应用管理页面不再依赖它下载代码。验收标准:
/ai/lowcode/app/{id}/code/*。/ai/crud-config/codegen/download/*。目标: 用户在应用配置里明确选择“在线运行”或“下载代码”。
涉及文件:
forge-admin-ui/src/views/app-center/components/AppEditorDrawer.vueforge-admin-ui/src/components/DictSelect.vueai_business_app_mode执行步骤:
useDict('ai_business_app_mode') 或本地模式元信息。entryMode=RUNTIME 时展示“使用模式”分段选择或卡片选择:
defaultForm() 增加 appMode: 'DYNAMIC_RENDER'。hydrateOptions() 从 props.app.appMode 或 options.appMode 读取模式。buildOptions() 将 appMode 写入 options;非 RUNTIME 时删除。验收标准:
目标: 业务单元与访问入口整合展示,重复按钮收敛,下载代码模式提供应用内代码能力。
涉及文件:
forge-admin-ui/src/views/app-center/index.vueforge-admin-ui/src/views/app-center/components/BusinessUnitCard.vueforge-admin-ui/src/views/app-center/components/AppCodePanel.vue执行步骤:
BusinessUnitCard 在访问入口行展示模式标签:
CODE_DOWNLOAD 入口主按钮改为打开代码面板,不触发 open-info 动态页面。index.vue 增加 codePanelVisible、codingApp 状态和打开代码面板方法。AppCodePanel 提供:
验收标准:
/ai/crud-config 入口下线目标: 独立旧配置页不再作为用户功能入口。
涉及文件:
forge-admin-ui/src/views/ai/crud-config.vueforge-admin-ui/src/api/ai.jsforge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/controller/AiCrudConfigController.java执行步骤:
crud-config.vue 改为迁移提示页,提示“配置能力已迁移到应用管理”,提供跳转 /app-center。AiCrudConfigController 对非 /render/{configKey} 的管理接口增加权限或废弃标记,避免前端隐藏但后端裸露。downloadCode(configKey) 增加废弃日志,建议调用 /ai/business/app/{id}/code/download。/render/{configKey} 给动态运行页使用。验收标准:
目标: 普通用户界面不暴露旧低代码技术入口和 CRUD 词。
涉及文件:
forge-admin-ui/src/views/app-center/components/designer/BusinessAdvancedConfig.vueforge-admin-ui/src/views/app-center/components/designer/form-first/forgeBusinessComponents.jsforge-admin-ui/src/router/guards/tab-guard.jsforge-admin-ui/src/router/guards/page-title-guard.jsforge-admin-ui/src/composables/useMenu.jsforge-admin-ui/src/views/app-center/index.vueforge-admin-ui/src/views/app-center/components/AppFilterBar.vueforge-admin-ui/src/views/app-center/components/BusinessUnitCard.vueforge-admin-ui/src/views/app-center/components/AppEditorDrawer.vue执行步骤:
BusinessAdvancedConfig 普通模式仅展示业务摘要,不展示技术入口。BusinessAdvancedConfig 开发者模式移除“模型资产”“低代码搭建器”“CRUD 配置”按钮。/ai/crud/{configKey};在线运行模式展示“平台托管接口”,下载代码模式展示业务专属接口。rg -n "CRUD|crud|业务套件|业务对象|应用入口|低代码搭建器|模型资产|configKey|Schema" forge-admin-ui/src验收标准:
目标: 按项目标准执行增量验证,记录结果。
涉及文件:
code-copilot/rules/automated-testing-standard.mdcode-copilot/changes/app-mode-code-download-consolidation/test-spec.mdcode-copilot/changes/app-mode-code-download-consolidation/execution-log.md执行步骤:
code-copilot/rules/automated-testing-standard.md。test-spec.md,只覆盖本次差异:
/ai/crud/。cd forge-server && mvn -pl forge-framework/forge-plugin-parent/forge-plugin-generator -am test -DskipTests=falsemvn -pl ... -am compile 并记录跳过原因。source ~/.nvm/nvm.sh && nvm use v20.19.0cd forge-admin-ui && pnpm build。/ai/crud/。execution-log.md。验收标准:
目标: 收尾时让 spec/tasks 与真实实现保持一致。
涉及文件:
code-copilot/changes/app-mode-code-download-consolidation/spec.mdcode-copilot/changes/app-mode-code-download-consolidation/tasks.mdcode-copilot/changes/app-mode-code-download-consolidation/execution-log.mdcode-copilot/changes/app-mode-code-download-consolidation/implementation-summary.md执行步骤:
spec.md。code-copilot/memory/pitfalls.md 或 code-copilot/memory/decisions.md。验收标准:
BusinessAppDTO/VO.appMode、BusinessAppMode、BusinessAppService options 映射和下载代码模式校验。/{id}/code/options、/{id}/code/preview、/{id}/code/download,并新增 BusinessAppCodegenService 统一解析业务接口前缀、覆盖旧运行接口、校验生成文件不含 /ai/crud/。businessApiBase 和 POST 更新/删除风格,前端 API 与页面使用业务路径,zip 增加 README.md。AppCodePanel,下载代码模式入口不再打开动态运行页。/ai/crud-config 页面改为迁移提示,旧管理接口加权限,迁移脚本隐藏旧菜单并补齐代码权限。git diff --check 通过,执行证据见 execution-log.md。