变更范围
命令与结果
git diff --check
JAVA_HOME=/opt/homebrew/Cellar/openjdk@17/17.0.13/libexec/openjdk.jdk/Contents/Home PATH=/opt/homebrew/Cellar/openjdk@17/17.0.13/libexec/openjdk.jdk/Contents/Home/bin:$PATH mvn -pl forge-framework/forge-plugin-parent/forge-plugin-generator -am compile -DskipTests
forge-serverGenTableServiceImpl 存在既有 deprecated API 提示,BusinessObjectDesignerService 存在 unchecked/unsafe operations 提示。source ~/.nvm/nvm.sh && nvm use v20.19.0 >/dev/null && (git diff --name-only -- ../forge-admin-ui; printf '%s\n' forge-admin-ui/src/views/app-center/components/AppCodePanel.vue) | sed 's#^forge-admin-ui/##' | rg '\.(js|vue)$' | sort -u | tr '\n' '\0' | xargs -0 pnpm exec eslint
forge-admin-uisource ~/.nvm/nvm.sh && nvm use v20.19.0 >/dev/null && NODE_OPTIONS=--max-old-space-size=8192 pnpm build
forge-admin-ui✓ built in 1m 4s。// 注释;src/store/index.js 同时动态和静态导入导致无法移动到单独 chunk。rg -n "业务套件|业务对象|应用入口|普通 CRUD|CRUD页面|模型资产|低代码搭建器|CRUD 配置|CRUD配置|get@/ai/crud|post@/ai/crud|/ai/crud-config" forge-admin-ui/src/views/app-center forge-admin-ui/src/views/ai/crud-config.vue forge-admin-ui/src/router forge-admin-ui/src/api/business-app.js
rg -n "业务套件|业务对象|应用入口|普通 CRUD|CRUD页面|模型资产|低代码搭建器|CRUD 配置|CRUD配置|get@/ai/crud|post@/ai/crud|/ai/crud-config" forge-server/db/migration/V1.0.70__consolidate_app_codegen_mode.sql ...
BusinessAppCodegenService 中旧路径禁用校验和迁移脚本中旧菜单隐藏条件,属于预期。rg -n "/ai/crud/" forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/resources/templates/vm forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/service/businessapp/BusinessAppCodegenService.java
中途发现并处理
pnpm exec eslint src/api/business-app.js src/router src/views/ai/crud-config.vue src/views/app-center 时,发现未触碰文件中存在既有 lint 问题:
src/router/guards/page-loading-guard.js 的 console.log。DocumentNoRuleEditor.vue、TemplateVariableEditor.vue 的模板字符串字面量规则。BusinessDocumentPanel.vue 有两个既有正则捕获组 lint 问题,已改为非捕获组并通过本次改动文件 lint。跳过项
变更范围
sync-published-crud-configs 路径切换到 sync-published-apps,后端保留旧路径兼容并记录废弃日志。命令与结果
source ~/.nvm/nvm.sh && nvm use v20.19.0 >/dev/null && pnpm exec eslint src/api/business-app.js
forge-admin-uiJAVA_HOME=/opt/homebrew/Cellar/openjdk@17/17.0.13/libexec/openjdk.jdk/Contents/Home PATH=/opt/homebrew/Cellar/openjdk@17/17.0.13/libexec/openjdk.jdk/Contents/Home/bin:$PATH mvn -pl forge-framework/forge-plugin-parent/forge-plugin-generator -am compile -DskipTests
forge-serversource ~/.nvm/nvm.sh && nvm use v20.19.0 >/dev/null && NODE_OPTIONS=--max-old-space-size=8192 pnpm build
forge-admin-ui✓ built in 1m 9s。// 注释和 src/store/index.js 动静态混合导入分包提示。变更范围
/generator/table 的代码预览交互,将应用管理功能代码面板从抽屉改为大尺寸弹窗工作台。命令与结果
source ~/.nvm/nvm.sh && nvm use v20.19.0 >/dev/null && pnpm exec eslint src/views/app-center/components/AppCodePanel.vue
forge-admin-uisource ~/.nvm/nvm.sh && nvm use v20.19.0 >/dev/null && NODE_OPTIONS=--max-old-space-size=8192 pnpm build
forge-admin-ui✓ built in 54.93s。// 注释和 src/store/index.js 动静态混合导入分包提示,非本轮新增。变更范围
n-spin 包装层、预览容器、目录区和编辑器区补齐高度继承、min-height: 0 与内部滚动约束。命令与结果
git diff --check
source ~/.nvm/nvm.sh && nvm use v20.19.0 >/dev/null && pnpm exec eslint src/views/app-center/components/AppCodePanel.vue
forge-admin-uisource ~/.nvm/nvm.sh && nvm use v20.19.0 >/dev/null && NODE_OPTIONS=--max-old-space-size=8192 pnpm build
forge-admin-ui✓ built in 1m 10s。// 注释和 src/store/index.js 动静态混合导入分包提示,非本轮新增。跳过项
变更范围
businessApiBase 前缀,但方法映射恢复为 /getById、/add、/edit、/remove/{id}。apiConfig 同步恢复为 post@{base}/getById、post@{base}/edit、post@{base}/remove/:id。命令与结果
rg -n "@PutMapping|@DeleteMapping|request\\.put|request\\.delete|put@|delete@|PUT \\$\\{apiBase\\}|DELETE \\$\\{apiBase\\}|GET /\\{id\\}|GET \\$\\{apiBase\\}/\\{id\\}|标准 REST|REST 风格" ...
GET /{id}/code/... 命中不属于生成代码模板。rg -n "post@\\$\\{apiBase\\}/(getById|add|edit|remove)|request\\.post\\(BASE \\+ '/(getById|add|edit|remove)|@PostMapping\\(\\\"/(getById|add|edit|remove)|apiConfig\\.put\\(\\\"(detail|add|create|update|delete)" ...
BusinessAppCodegenService 均使用 POST 风格。git diff --check
JAVA_HOME=/opt/homebrew/Cellar/openjdk@17/17.0.13/libexec/openjdk.jdk/Contents/Home PATH=/opt/homebrew/Cellar/openjdk@17/17.0.13/libexec/openjdk.jdk/Contents/Home/bin:$PATH mvn -pl forge-framework/forge-plugin-parent/forge-plugin-generator -am compile -DskipTests
forge-serverGenTableServiceImpl deprecated API 和 BusinessObjectDesignerService unchecked/unsafe operations 提示。跳过项
变更范围
.agents/skills/forge-codegen-crud 中仍保留 PUT/DELETE/标准 REST 的生成说明。.agents 目录只有只读权限,apply_patch 直接修改 skill 文件被沙箱拒绝。code-copilot/changes/app-mode-code-download-consolidation/forge-codegen-crud-skill-post-contract.patch。补丁内容
SKILL.md 增加不可违反规则:生成 CRUD 的详情、新增、更新、删除使用 POST 安全契约,禁止生成 PUT/DELETE。references/single-table-crud.md 将 Controller 示例改为 POST /getById、POST /add、POST /edit、POST /remove/{id}。references/single-table-crud.md 将 AiCrudPage 示例改为 post@.../getById、post@.../add、post@.../edit、post@.../remove/:id。references/sql-seeds.md 增加 API 权限资源的 POST 路由约束,禁止 seed PUT/DELETE API 资源。references/validation-checklist.md 增加后端和前端校验项,扫描 @PutMapping、@DeleteMapping、put@、delete@。命令与结果
git apply --check code-copilot/changes/app-mode-code-download-consolidation/forge-codegen-crud-skill-post-contract.patch
git diff --check
跳过项
.agents/skills/forge-codegen-crud 文件本体;原因是当前沙箱将 .agents 标记为只读,apply_patch 拒绝写入。变更范围
actionConfig 与参数 target。AiCrudPage 支持执行 CALL_API 并映射 path/query/body/header 参数。命令与结果
source ~/.nvm/nvm.sh && nvm use v20.19.0 >/dev/null && pnpm --dir forge-admin-ui exec eslint src/api/business-app.js src/views/app-center/components/AppEditorDrawer.vue src/views/app-center/components/designer/BusinessActionDesigner.vue src/components/ai-form/AiCrudPage.vue --fix
git diff --check
env JAVA_HOME=/opt/homebrew/Cellar/openjdk@17/17.0.13/libexec/openjdk.jdk/Contents/Home PATH=/opt/homebrew/Cellar/openjdk@17/17.0.13/libexec/openjdk.jdk/Contents/Home/bin:/usr/local/apache-maven-3.9.3/bin:/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin mvn -pl forge-framework/forge-plugin-parent/forge-plugin-generator -am compile -DskipTests
forge-server。GenTableServiceImpl deprecated API 和 BusinessObjectDesignerService unchecked/unsafe operations 提示。source ~/.nvm/nvm.sh && nvm use v20.19.0 >/dev/null && NODE_OPTIONS=--max-old-space-size=8192 pnpm --dir forge-admin-ui build
✓ built in 1m 28s。// 注释、UserSelectModal 组件命名冲突提示和 src/store/index.js 动静态混合导入分包提示,非本轮新增。跳过项
变更范围
menu_status=0、visible=0 并解除访问入口菜单绑定。MenuRegisterAdapter.disableMenu,forge-admin-server 实现只更新菜单可见性,不删除角色授权关系。命令与结果
git diff --check
env JAVA_HOME=/opt/homebrew/Cellar/openjdk@17/17.0.13/libexec/openjdk.jdk/Contents/Home PATH=/opt/homebrew/Cellar/openjdk@17/17.0.13/libexec/openjdk.jdk/Contents/Home/bin:/usr/local/apache-maven-3.9.3/bin:/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin mvn -pl forge-admin-server -am compile -DskipTests
forge-server。GenTableServiceImpl deprecated API、BusinessObjectDesignerService unchecked/unsafe operations、EmployeeServiceImpl deprecated API 提示,非本轮新增。跳过项
变更范围
BusinessActionDesigner,复用原有工具栏操作、行操作、详情操作和 CALL_API 配置能力。命令与结果
source ~/.nvm/nvm.sh && nvm use v20.19.0 >/dev/null && pnpm --dir forge-admin-ui exec eslint src/views/app-center/components/designer/BusinessListDesigner.vue --fix
git diff --check
source ~/.nvm/nvm.sh && nvm use v20.19.0 >/dev/null && NODE_OPTIONS=--max-old-space-size=8192 pnpm --dir forge-admin-ui build
✓ built in 1m 7s。// 注释、UserSelectModal 组件命名冲突和 src/store/index.js 动静态混合导入分包提示,非本轮新增。跳过项
变更范围
listLayoutMode=grid。AiCrudPage 兼容历史 request 类型自定义操作,系统参数补齐 userId、tenantId、selectedIds。命令与结果
source ~/.nvm/nvm.sh && nvm use v20.19.0 >/dev/null && pnpm --dir forge-admin-ui exec eslint src/views/app-center/components/designer/BusinessListDesigner.vue src/components/lowcode-builder/page/ListPageGridDesigner.vue src/components/lowcode-builder/page/LowcodePageBuilder.vue src/components/ai-form/AiCrudPage.vue --fix
git diff --check
source ~/.nvm/nvm.sh && nvm use v20.19.0 >/dev/null && NODE_OPTIONS=--max-old-space-size=8192 pnpm --dir forge-admin-ui build
✓ built in 1m 25s。// 注释、UserSelectModal 组件命名冲突和 src/store/index.js 动静态混合导入分包提示,非本轮新增。跳过项
变更范围
panel=actions 链接兼容跳转到「列表设计」。designerOptions.actions,自定义操作弹窗保留站内跳转、外部链接、调用 API、发起主流程、执行触发器、按钮权限、确认提示和参数映射;保存时同步调用对象 actions 接口并回写 designerOptions.actions。searchFieldRefs/searchFieldSettings,表格列继续写入 fieldRefs/fieldSettings。命令与结果
source ~/.nvm/nvm.sh && nvm use v20.19.0 >/dev/null && pnpm --dir forge-admin-ui exec eslint 'src/views/app-center/object-designer.[objectCode].vue' src/views/app-center/components/designer/BusinessObjectDesignerShell.vue src/views/app-center/components/designer/BusinessListDesigner.vue src/components/lowcode-builder/page/ListPageGridDesigner.vue src/components/lowcode-builder/page/page-schema.js --fix
git diff --check
source ~/.nvm/nvm.sh && nvm use v20.19.0 >/dev/null && NODE_OPTIONS=--max-old-space-size=8192 pnpm --dir forge-admin-ui build
✓ built in 1m 2s。// 注释、UserSelectModal 组件命名冲突和 src/store/index.js 动静态混合导入分包提示,非本轮新增。跳过项
/designer、/layout/list、/actions 接口。变更范围
layoutType 同步回显。/system/resource/tree 的菜单资源并自动写入目标地址,同时保留手工输入。命令与结果
source ~/.nvm/nvm.sh && nvm use v20.19.0 >/dev/null && pnpm --dir forge-admin-ui exec eslint src/views/app-center/components/designer/BusinessListDesigner.vue src/components/lowcode-builder/page/ListPageGridDesigner.vue --fix
git diff --check
source ~/.nvm/nvm.sh && nvm use v20.19.0 >/dev/null && NODE_OPTIONS=--max-old-space-size=8192 pnpm --dir forge-admin-ui build
ListPageGridDesigner.vue 误从 @/utils/request 导入请求工具,Vite 无法解析。@/utils/http 后复跑。✓ built in 1m 13s。// 注释、UserSelectModal 组件命名冲突和 src/store/index.js 动静态混合导入分包提示,非本轮新增。跳过项
/system/resource/tree 实际返回;本轮前端仅复用既有系统资源树接口并保留手工输入兜底。