status: completed created: 2026-06-13 spec:
code-copilot/changes/lowcode-designer-field-sync-ux/spec.md
| Task | 名称 | 状态 | 优先级 |
|---|---|---|---|
| Task 1 | 允许表单设计器字段 ID 手动输入 | completed | P0 |
| Task 2 | 补齐字段资产与表单设计器双向同步 | completed | P0 |
| Task 3 | 修复无修改时左侧导航切换未保存提示 | completed | P0 |
| Task 4 | 字段配置抽屉改为内嵌属性面板 | completed | P0 |
| Task 5 | 前端校验与执行日志回填 | completed | P0 |
| Task 6 | 修复默认字段编码 input 与已有字段名称回显 | completed | P0 |
| Task 7 | 整合字段资产入口并修复新版画布 field_ 临时字段保存 | completed | P0 |
| Task 8 | 修复关联字段引用污染模型 Schema | completed | P0 |
| Task 9 | 修复表单设计器未修改也提示未保存 | completed | P0 |
| Task 10 | 修复低代码应用 LIST 入口误进静态预览 | completed | P0 |
| Task 11 | 修复表单新增字段运行态新增数据未入库 | completed | P0 |
| Task 12 | 清理表单删除后的自动字段并优化必填默认值 | completed | P0 |
涉及文件
forge-admin-ui/src/views/app-center/components/designer/form-first/forgeBusinessComponents.js执行要点
验收标准
涉及文件
forge-admin-ui/src/views/app-center/components/designer/BusinessFieldManager.vueforge-admin-ui/src/views/app-center/components/designer/form-first/fieldReferenceUtils.jsforge-admin-ui/src/views/app-center/components/designer/form-first/viewSchema.jsforge-admin-ui/src/views/app-center/object-designer.[objectCode].vue执行要点
fieldBinding.fieldCode、fieldBinding.columnName、组件 props.fieldCode、props.fieldBinding.fieldCode。draft.formDesignerSchema、draft.pageSchema、draft.viewSchema、draft.displayField,随后仍按现有逻辑 reload 服务端设计器。验收标准
涉及文件
forge-admin-ui/src/views/app-center/components/designer/BusinessFormCreateDesigner.vueforge-admin-ui/src/views/app-center/components/designer/BusinessFormDesigner.vue执行要点
flushDesigner() 比较转换后的 schema 与当前 modelValue,相同则不触发 dirty。syncDesignerDraft() 比较字段资产、页面 Schema 和表单 Schema;没有实际差异时返回 dirty: false。验收标准
涉及文件
forge-admin-ui/src/views/app-center/components/designer/BusinessFieldManager.vue执行要点
n-drawer 包裹。field-asset-workbench 左右分栏。BusinessFieldPropertyPanel,未选中时展示面板内空状态。验收标准
涉及文件
code-copilot/changes/lowcode-designer-field-sync-ux/execution-log.mdcode-copilot/rules/automated-testing-standard.md执行要点
验收标准
涉及文件
forge-admin-ui/src/views/app-center/components/designer/form-first/formCreateToForge.jsforge-admin-ui/src/views/app-center/components/designer/form-first/forgeToFormCreate.js执行要点
input、select、dictSelect 等设计器默认字段名,不再作为业务字段编码或数据库列名。fieldInput1 形式的稳定字段编码,并避免复用 input 作为组件 ID。fieldName / label。验收标准
columnName = input 的新字段。customerLevel 后,表单组件标题同步为字段资产名称。涉及文件
forge-admin-ui/src/views/app-center/components/designer/BusinessFormDesigner.vueforge-admin-ui/src/views/app-center/components/designer/BusinessObjectDesignerShell.vueforge-admin-ui/src/views/app-center/components/designer/forge-form-designer/designerLayoutFactory.jsforge-admin-ui/src/views/app-center/object-designer.[objectCode].vue执行要点
field_ + 时间戳随机字段,改为 fieldInput、fieldSelect 等可读字段编码并自动去重。modelSchema、pageSchema 和 formDesignerSchema,避免布局接口用旧字段资产校验新页面区域。field_... 模板字段,未落库字段会先规整成稳定字段编码再沉淀为字段资产。验收标准
页面区域引用了不存在的字段: field_mqn7a19j。涉及文件
forge-admin-ui/src/views/app-center/components/designer/BusinessFormDesigner.vue执行要点
saveBusinessObjectDesigner 的 modelSchema.fields 只保留主模型系统字段和业务字段。crm_contact__contactName 这类 fieldRef 可继续用于页面区域。验收标准
字段名格式不正确: crm_contact__contactName。pageSchema.modelRefs 和页面区域引用校验范围内。涉及文件
forge-admin-ui/src/views/app-center/components/designer/BusinessFormDesigner.vue执行要点
localSchema。syncDesignerDraft() 使用当前设计器结果与保存态基线比较,避免字段属性自动归一化被当成用户修改。props.modelValue、effectiveModelSchema 和表单 Schema 派生出的页面 Schema 同步使用静默写入;真实用户操作仍通过 replaceZone() 默认标记 dirty。验收标准
涉及文件
forge-admin-ui/src/views/ai/crud-page.vue执行要点
pageKey=list 入口不再优先进入 ListPageGridDesigner readonly。/ai/crud-page/:configKey?runtimeOpenMode=LIST 入口直接渲染业务模板 / AiCrudPage。验收标准
git diff --check 和前端生产构建通过。涉及文件
forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/service/DynamicCrudService.java执行要点
editSchema 调整为 editSchema + modelSchema 兜底。modelSchema 中启用、非系统、非主键、非自增、非只读、表单可见且数据库真实存在列的字段。验收标准
editSchema 尚未重建,新增/编辑记录也能保存新字段值。modelSchema 和真实表列校验直接写入。git diff --check 和 generator 插件目标模块 Maven 编译通过。涉及文件
forge-admin-ui/src/views/app-center/components/designer/form-first/autoFieldRegistry.jsforge-admin-ui/src/views/app-center/components/designer/form-first/formDesignerSchema.jsforge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/service/lowcode/LowcodeDdlService.java执行要点
source=designer/createIfMissing=true 字段不再回写模型。label 时保留空字符串,不再被 schema 规范化立即回填。required 视为运行态表单校验;只有配置了非空默认值时才同步数据库 NOT NULL DEFAULT ...。验收标准
field_mqn7a19j。NOT NULL。git diff --check 通过。