spec.md,明确统一业务流程应用配置的背景、现状、功能点、业务规则、接口和风险。tasks.md,拆分后端 Facade、前端统一面板、表单资产选择器、流程设计器所有权提示、发布检查和采购单样例验收任务。test-spec.md,记录后端、前端和采购单审批验收策略。/apply unified-business-flow-app-config 后按 test-spec.md 执行增量验证。GET/PUT /ai/business/flow-app/config/{objectCode},事务保存单据配置和流程绑定。panel=document、panel=automation 继续映射到新面板。fields/fieldCatalog/providerKey/providerName/supportsSave/formMode,采购单审批表单暴露字段目录。BUSINESS_CODE_FORM 保存前按节点字段权限过滤提交数据;代码优先业务没有低代码 configKey 时允许进入 Provider 表单上下文。cd forge-server
JAVA_HOME=$(/usr/libexec/java_home -v 17) PATH="$JAVA_HOME/bin:$PATH" mvn -pl forge-framework/forge-plugin-parent/forge-plugin-generator -am -DskipTests compile
BUILD SUCCESS。GenTableServiceImpl deprecation、BusinessObjectDesignerService unchecked warning,不阻断。cd forge-server
JAVA_HOME=$(/usr/libexec/java_home -v 17) PATH="$JAVA_HOME/bin:$PATH" mvn -pl forge-business/forge-business-core -am -DskipTests compile
BUILD SUCCESS。cd forge-admin-ui
source ~/.nvm/nvm.sh && nvm use v20.19.0
pnpm exec eslint src/api/business-app.js 'src/views/app-center/object-designer.[objectCode].vue' src/views/app-center/components/BusinessUnitCard.vue src/views/app-center/components/ObjectCard.vue src/views/app-center/components/designer/BusinessActionDesigner.vue src/views/app-center/components/designer/BusinessFlowAppConfigPanel.vue src/views/app-center/components/designer/BusinessFlowFormAssetSelect.vue src/views/app-center/components/designer/BusinessFlowBindingPanel.vue src/views/app-center/components/designer/BusinessDocumentPanel.vue src/views/app-center/components/designer/BusinessObjectDesignerShell.vue src/components/bpmn/NodePropertiesPanel.vue src/components/flow-designer/DingFlowDesigner.vue src/components/flow-designer/panel/NodeConfigDrawer.vue src/components/flow-designer/panel/ApproverConfig.vue src/components/flow-designer/panel/FormPermissionConfig.vue
BusinessFlowAppConfigPanel.vue 的 open-trigger/open-publish emit 命名不符合 camelCase,已改为 openTrigger/openPublish 后复跑通过。cd forge-admin-ui
source ~/.nvm/nvm.sh && nvm use v20.19.0
NODE_OPTIONS=--max-old-space-size=8192 pnpm build
✓ built in 1m 25s。UserSelectModal 组件命名冲突、动态导入与静态导入混用、CSS // 注释、chunk 体积提示;本轮未新增阻断项。git diff --check
ai_business_binding.nodeForms 内置 Flyway 绑定脚本,本轮只补齐代码表单资产和运行时兼容。BusinessFlowAppConfigPanel.vue 顶部区域:移除内层“对象名 · 业务流程配置”标题、重复刷新/保存按钮和旧配置链路摘要,只保留紧凑的“配置项”分段切换。closureSteps 不再同时展示“单据闭环配置”侧栏,避免同一状态在侧栏和面板顶部重复出现。配置链路、未配置状态字段、未选择流程模型、单据规则 · 主流程 等旧堆叠文案。cd /Users/yaomindong/Desktop/project/mdframe/forge-project
source ~/.nvm/nvm.sh && nvm use v20.19.0
pnpm --dir forge-admin-ui exec eslint src/views/app-center/components/designer/BusinessFlowAppConfigPanel.vue src/views/app-center/components/designer/BusinessObjectDesignerShell.vue 'src/views/app-center/object-designer.[objectCode].vue'
cd /Users/yaomindong/Desktop/project/mdframe/forge-project
source ~/.nvm/nvm.sh && nvm use v20.19.0
NODE_OPTIONS=--max-old-space-size=8192 pnpm --dir forge-admin-ui build
✓ built in 1m 13s。UserSelectModal 命名冲突、动态导入与静态导入混用、CSS // 注释、chunk 体积提示;本轮未新增阻断项。git diff --check
BusinessFlowAppConfigPanel.vue:保留顶部标题工具栏,新增顶部步骤切换条,移除不可感知的左侧滚动锚点。scrollIntoView 改为真实分区切换:低代码对象在“单据规则 / 流程配置”之间切换,触发器和发布检查作为明确跳转命令。BusinessFlowBindingPanel.vue 在代码应用模式下隐藏“低代码业务表/状态字段”配置,替换为“代码适配器”接入说明和业务编码/主键/状态回写摘要。cd /Users/yaomindong/Desktop/project/mdframe/forge-project
source ~/.nvm/nvm.sh && nvm use v20.19.0
pnpm --dir forge-admin-ui exec eslint src/views/app-center/components/designer/BusinessFlowAppConfigPanel.vue src/views/app-center/components/designer/BusinessFlowBindingPanel.vue src/views/app-center/components/designer/BusinessObjectDesignerShell.vue 'src/views/app-center/object-designer.[objectCode].vue' src/views/business/purchase-order-test.vue
cd /Users/yaomindong/Desktop/project/mdframe/forge-project
source ~/.nvm/nvm.sh && nvm use v20.19.0
NODE_OPTIONS=--max-old-space-size=8192 pnpm --dir forge-admin-ui build
✓ built in 1m 54s。UserSelectModal 命名冲突、动态导入与静态导入混用、CSS // 注释、chunk 体积提示;本轮未新增阻断项。git diff --check
forge-plugin-generator 和 forge-business-core 编译已通过。BusinessFlowAppConfigPanel.vue 的页面结构。cd /Users/yaomindong/Desktop/project/mdframe/forge-project
source ~/.nvm/nvm.sh && nvm use v20.19.0
pnpm --dir forge-admin-ui exec eslint src/views/app-center/components/designer/BusinessFlowAppConfigPanel.vue
cd /Users/yaomindong/Desktop/project/mdframe/forge-project
source ~/.nvm/nvm.sh && nvm use v20.19.0
NODE_OPTIONS=--max-old-space-size=8192 pnpm --dir forge-admin-ui build
✓ built in 1m 25s。UserSelectModal 命名冲突、动态导入与静态导入混用、CSS // 注释、chunk 体积提示;本轮未新增阻断项。git diff --check
BusinessFlowAppConfigPanel.vue 顶部页签只保留“单据规则 / 流程配置”;移除“自动化触发器”和“发布检查”页签,避免用户点击触发器直接跳出当前配置页面。1180px,背景、卡片边框、圆角、阴影、间距改为同一套后台工作区样式。cd /Users/yaomindong/Desktop/project/mdframe/forge-project
source ~/.nvm/nvm.sh && nvm use v20.19.0
pnpm --dir forge-admin-ui exec eslint src/views/app-center/components/designer/BusinessFlowAppConfigPanel.vue
cd /Users/yaomindong/Desktop/project/mdframe/forge-project
source ~/.nvm/nvm.sh && nvm use v20.19.0
NODE_OPTIONS=--max-old-space-size=8192 pnpm --dir forge-admin-ui build
✓ built in 1m 20s。UserSelectModal 命名冲突、动态导入与静态导入混用、CSS // 注释、chunk 体积提示;本轮未新增阻断项。git diff --check
BusinessFlowAppConfigPanel.vue:由旧面板堆叠改为工作台布局,包含顶部工具栏、指标摘要、左侧步骤导航和统一配置区。BusinessFlowAppConfigService 支持代码应用 fallback:低代码业务对象不存在但存在代码表单资产时,仍返回统一配置结构并允许保存流程绑定。appName/objectName/businessName,配置页展示为“采购申请”。BusinessFlowBindingPanel 增加 codeApp 模式:默认 ADAPTER 接入,节点表单默认 BUSINESS_CODE_FORM,唯一代码表单资产自动填充到人工节点。cd forge-admin-ui
source ~/.nvm/nvm.sh && nvm use v20.19.0
pnpm exec eslint src/views/app-center/components/designer/BusinessFlowAppConfigPanel.vue src/views/app-center/components/designer/BusinessFlowBindingPanel.vue src/views/app-center/components/designer/BusinessObjectDesignerShell.vue 'src/views/app-center/object-designer.[objectCode].vue' src/views/business/purchase-order-test.vue
BusinessFlowAppConfigPanel.vue 的 else 换行风格和 purchase-order-test.vue 导入顺序不符合项目规则,已修复并复跑通过。cd forge-server
JAVA_HOME=$(/usr/libexec/java_home -v 17) PATH="$JAVA_HOME/bin:$PATH" mvn -pl forge-framework/forge-plugin-parent/forge-plugin-generator -am -DskipTests compile
BUILD SUCCESS。cd forge-server
JAVA_HOME=$(/usr/libexec/java_home -v 17) PATH="$JAVA_HOME/bin:$PATH" mvn -pl forge-business/forge-business-core -am -DskipTests compile
BUILD SUCCESS。cd /Users/yaomindong/Desktop/project/mdframe/forge-project
source ~/.nvm/nvm.sh && nvm use v20.19.0
NODE_OPTIONS=--max-old-space-size=8192 pnpm --dir forge-admin-ui build
✓ built in 1m 40s。UserSelectModal 命名冲突、动态导入与静态导入混用、CSS // 注释、chunk 体积提示;本轮未新增阻断项。git diff --check
BusinessFlowAppConfigPanel.vue 四步卡片选中态不完整的问题:编号生成、状态字典、业务记录绑定、变量映射、节点表单 现在都会根据当前步骤同步高亮。BusinessDocumentPanel 内部 document-rail,只保留外层一套步骤。主流程 会切换到流程配置的默认流程卡片。cd /Users/yaomindong/Desktop/project/mdframe/forge-project
source ~/.nvm/nvm.sh && nvm use v20.19.0
pnpm --dir forge-admin-ui exec eslint src/views/app-center/components/designer/BusinessFlowAppConfigPanel.vue
activeStageMeta 时引用 activeStages 的定义顺序不符合 no-use-before-define。cd /Users/yaomindong/Desktop/project/mdframe/forge-project
source ~/.nvm/nvm.sh && nvm use v20.19.0
NODE_OPTIONS=--max-old-space-size=8192 pnpm --dir forge-admin-ui build
✓ built in 1m 16s。UserSelectModal 命名冲突、动态导入与静态导入混用、CSS // 注释和 chunk 体积提示;本轮未新增阻断项。git diff --check
flowable:formUrl 和 flowable:formFieldPermissions,避免流程模型和业务流程配置双写。V1.0.82__seed_sample_purchase_order_flow_binding.sql,为 sample_purchase_order 内置默认 ai_business_binding,节点表单配置落到 binding_config.nodeForms。BusinessFlowService 支持纯代码业务无低代码 configKey 时加载代码 Provider,上下文和保存都按节点字段权限过滤。cd /Users/yaomindong/Desktop/project/mdframe/forge-project
git diff --check
cd /Users/yaomindong/Desktop/project/mdframe/forge-project/forge-server
JAVA_HOME=$(/usr/libexec/java_home -v 17) PATH="$JAVA_HOME/bin:$PATH" mvn -pl forge-framework/forge-plugin-parent/forge-plugin-generator -am -DskipTests compile
BUILD SUCCESS。cd /Users/yaomindong/Desktop/project/mdframe/forge-project/forge-server
JAVA_HOME=$(/usr/libexec/java_home -v 17) PATH="$JAVA_HOME/bin:$PATH" mvn -pl forge-business/forge-business-core -am -DskipTests compile
BUILD SUCCESS。cd /Users/yaomindong/Desktop/project/mdframe/forge-project
source ~/.nvm/nvm.sh && nvm use v20.19.0
pnpm --dir forge-admin-ui exec eslint src/api/business-app.js src/views/app-center/components/designer/BusinessFlowAppConfigPanel.vue src/views/app-center/components/designer/BusinessFlowBindingPanel.vue src/views/app-center/components/designer/BusinessFlowFormAssetSelect.vue src/views/app-center/components/designer/BusinessObjectDesignerShell.vue 'src/views/app-center/object-designer.[objectCode].vue' src/views/business/purchase-order-test.vue src/views/flow/todo.vue src/views/flow/done.vue
cd /Users/yaomindong/Desktop/project/mdframe/forge-project
source ~/.nvm/nvm.sh && nvm use v20.19.0
NODE_OPTIONS=--max-old-space-size=8192 pnpm --dir forge-admin-ui build
✓ built in 2m 12s。UserSelectModal 命名冲突、动态导入与静态导入混用、CSS // 注释、chunk 体积提示;本轮未新增阻断项。cd /Users/yaomindong/Desktop/project/mdframe/forge-project
rg -n "formUrl|formFieldPermissions|/business/purchase-order-test" forge-server/forge-business/forge-business-core/src/main/java/com/mdframe/forge/business/core/purchase/support/SamplePurchaseOrderFlowBpmn.java forge-server/db/migration/V1.0.82__seed_sample_purchase_order_flow_binding.sql
rg -n "\$\{" forge-server/db/migration/V1.0.82__seed_sample_purchase_order_flow_binding.sql
V1.0.83__seed_sample_purchase_order_app_center_entry.sql,把采购单审批测试写入应用中心元数据:采购 业务域、采购申请 业务对象、采购单审批测试 应用入口。ROUTE 模式打开 /business/purchase-order-test,避免代码业务被低代码 RUNTIME/configKey 校验拦截。designer_options={"codeApp":true,...},应用中心卡片识别后默认展示“业务流程配置”。BusinessUnitCard.vue 和 ObjectCard.vue 识别 options/designerOptions.codeApp=true 后,主设计按钮直接进入 flow-app。object-designer.[objectCode].vue 增加代码型业务对象兜底切换,避免从应用中心进入后停在低代码表单设计页。cd /Users/yaomindong/Desktop/project/mdframe/forge-project
git diff --check
cd /Users/yaomindong/Desktop/project/mdframe/forge-project
rg --files forge-server/db/migration | rg "V1\.0\.83"
rg -n "\$\{|tenant_id = 0|tenant_id,.*0|formUrl|formFieldPermissions" forge-server/db/migration/V1.0.83__seed_sample_purchase_order_app_center_entry.sql
cd /Users/yaomindong/Desktop/project/mdframe/forge-project
source ~/.nvm/nvm.sh && nvm use v20.19.0
pnpm --dir forge-admin-ui exec eslint src/views/app-center/components/BusinessUnitCard.vue src/views/app-center/components/ObjectCard.vue 'src/views/app-center/object-designer.[objectCode].vue'
cd /Users/yaomindong/Desktop/project/mdframe/forge-project
source ~/.nvm/nvm.sh && nvm use v20.19.0
NODE_OPTIONS=--max-old-space-size=8192 pnpm --dir forge-admin-ui build
✓ built in 2m 24s。UserSelectModal 命名冲突、动态导入与静态导入混用、CSS // 注释和 chunk 体积提示;本轮未新增阻断项。V1.0.83 后刷新页面。SamplePurchaseOrderCodeFormProvider 的代码表单字段资产,字段目录从仅业务可编辑字段扩展为完整单据字段,补齐采购单号、状态、申请人、部门、业务 Key、流程实例、审批人、会签人、驳回原因和创建/更新时间等只读字段。BusinessTaskFormContextVO.recordData 同步补齐上述字段,避免字段目录有字段但待办/已办上下文没有值。SamplePurchaseOrderTaskSaveDTO 和 SamplePurchaseOrderServiceImpl 增加 needDate 保存,支持申请人修改节点配置并保存期望到货日期。V1.0.84__extend_sample_purchase_order_form_asset_fields.sql,对已经存在的采购单默认流程绑定补充申请人修改节点的 needDate 权限。BusinessFlowBindingPanel.vue 的节点表单策略从“可见字段 / 可编辑字段 / 必填字段”三个多选框改为字段权限矩阵,按行展示字段名、字段编码、可见、可编辑、必填,接近用户参考图的表单权限体验。visibleFields/writableFields/requiredFields 仍会归一化为 fieldPermissions,只读字段可见但不能配置可编辑或必填。cd /Users/yaomindong/Desktop/project/mdframe/forge-project
git diff --check
cd /Users/yaomindong/Desktop/project/mdframe/forge-project
rg -n "\$\{|tenant_id = 0|tenant_id,.*0" forge-server/db/migration/V1.0.84__extend_sample_purchase_order_form_asset_fields.sql
cd /Users/yaomindong/Desktop/project/mdframe/forge-project/forge-server
JAVA_HOME=$(/usr/libexec/java_home -v 17) PATH="$JAVA_HOME/bin:$PATH" mvn -pl forge-business/forge-business-core -am -DskipTests compile
BUILD SUCCESS。cd /Users/yaomindong/Desktop/project/mdframe/forge-project
source ~/.nvm/nvm.sh && nvm use v20.19.0
pnpm --dir forge-admin-ui exec eslint src/views/app-center/components/designer/BusinessFlowBindingPanel.vue
setNodeFieldVisible 新增分支缺少大括号,不符合 antfu/curly。cd /Users/yaomindong/Desktop/project/mdframe/forge-project
source ~/.nvm/nvm.sh && nvm use v20.19.0
NODE_OPTIONS=--max-old-space-size=8192 pnpm --dir forge-admin-ui build
✓ built in 2m 12s。UserSelectModal 命名冲突、动态导入与静态导入混用、CSS // 注释和 chunk 体积提示;本轮未新增阻断项。spec.md:
BusinessFlowBinding.nodeForms,不重复写入 BPMN XML。tasks.md:
test-spec.md:
BusinessFlowBindingPanel.vue:
businessFlowVariables(...).userTasks。审批设置 / 表单权限 / 高级设置 三个页签。表单权限 页签复用现有字段权限矩阵,并新增字段类型/只读标识列。visibleFields/writableFields/requiredFields 到 fieldPermissions 的保存协议不变,后端和数据库结构不变。BusinessFlowAppConfigPanel.vue:
cd /Users/yaomindong/Desktop/project/mdframe/forge-project
source ~/.nvm/nvm.sh && nvm use v20.19.0 >/dev/null
pnpm --dir forge-admin-ui exec eslint \
src/views/app-center/components/designer/BusinessFlowBindingPanel.vue \
src/views/app-center/components/designer/BusinessFlowAppConfigPanel.vue
transition CSS 需要按 Prettier 拆行。cd /Users/yaomindong/Desktop/project/mdframe/forge-project
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 2m 41s。UserSelectModal 命名冲突、动态导入与静态导入混用、CSS // 注释和 chunk 体积提示;本轮未新增阻断项。cd /Users/yaomindong/Desktop/project/mdframe/forge-project
git diff --check -- \
forge-admin-ui/src/views/app-center/components/designer/BusinessFlowBindingPanel.vue \
forge-admin-ui/src/views/app-center/components/designer/BusinessFlowAppConfigPanel.vue
cd /Users/yaomindong/Desktop/project/mdframe/forge-project
rg -n "[ \t]+$" \
forge-admin-ui/src/views/app-center/components/designer/BusinessFlowBindingPanel.vue \
forge-admin-ui/src/views/app-center/components/designer/BusinessFlowAppConfigPanel.vue
cd /Users/yaomindong/Desktop/project/mdframe/forge-project
source ~/.nvm/nvm.sh && nvm use v20.19.0 >/dev/null
pnpm --dir forge-admin-ui dev --host 127.0.0.1
EMFILE: too many open files, watch。cd /Users/yaomindong/Desktop/project/mdframe/forge-project
ulimit -n 65535
source ~/.nvm/nvm.sh && nvm use v20.19.0 >/dev/null
CHOKIDAR_USEPOLLING=true pnpm --dir forge-admin-ui exec vite --host 127.0.0.1 --port 5173
listen EPERM: operation not permitted 127.0.0.1:5173。Local: http://127.0.0.1:5173/。cd /Users/yaomindong/Desktop/project/mdframe/forge-project
curl -I http://127.0.0.1:5173/
HTTP/1.1 200 OK。playwright 包,Node REPL 浏览器工具在本会话沙箱元数据下不可用。http://127.0.0.1:5173/ 验证页面。BusinessFlowVariableResolver.java:
sample_purchase_order 这类代码业务没有低代码 configKey 时,不再直接返回“业务对象缺少运行配置,无法读取字段候选项”。BusinessCodeFormProviderRegistry#listAssets(objectCode) 兜底读取代码表单 Provider 暴露的 fields/fieldCatalog。fieldCandidates;只有找不到代码表单资产或资产未暴露字段目录时才返回 warning。BusinessFlowBindingPanel.vue:
props.fields 和变量候选项接口返回的 fieldCandidates。fieldCode / field / code 三种字段编码,支持代码业务没有低代码表单字段 props 的场景。FlowVariableMappingEditor.vue:
cd /Users/yaomindong/Desktop/project/mdframe/forge-project/forge-server
JAVA_HOME=$(/usr/libexec/java_home -v 17) PATH="$JAVA_HOME/bin:$PATH" mvn -pl forge-framework/forge-plugin-parent/forge-plugin-generator -am -DskipTests compile
BUILD SUCCESS。cd /Users/yaomindong/Desktop/project/mdframe/forge-project
source ~/.nvm/nvm.sh && nvm use v20.19.0 >/dev/null
pnpm --dir forge-admin-ui exec eslint \
src/views/app-center/components/designer/BusinessFlowBindingPanel.vue \
src/views/app-center/components/designer/FlowVariableMappingEditor.vue
cd /Users/yaomindong/Desktop/project/mdframe/forge-project
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 2m 18s。UserSelectModal 命名冲突、动态导入与静态导入混用、CSS // 注释和 chunk 体积提示;本轮未新增阻断项。cd /Users/yaomindong/Desktop/project/mdframe/forge-project
git diff --check -- \
forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/service/businessapp/BusinessFlowVariableResolver.java \
forge-admin-ui/src/views/app-center/components/designer/BusinessFlowBindingPanel.vue \
forge-admin-ui/src/views/app-center/components/designer/FlowVariableMappingEditor.vue \
forge-admin-ui/src/views/app-center/components/designer/BusinessFlowAppConfigPanel.vue \
code-copilot/changes/unified-business-flow-app-config/spec.md \
code-copilot/changes/unified-business-flow-app-config/tasks.md \
code-copilot/changes/unified-business-flow-app-config/test-spec.md \
code-copilot/changes/unified-business-flow-app-config/execution-log.md
cd /Users/yaomindong/Desktop/project/mdframe/forge-project
rg -n "[ \t]+$" \
forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/service/businessapp/BusinessFlowVariableResolver.java \
forge-admin-ui/src/views/app-center/components/designer/BusinessFlowBindingPanel.vue \
forge-admin-ui/src/views/app-center/components/designer/FlowVariableMappingEditor.vue \
forge-admin-ui/src/views/app-center/components/designer/BusinessFlowAppConfigPanel.vue \
code-copilot/changes/unified-business-flow-app-config/spec.md \
code-copilot/changes/unified-business-flow-app-config/tasks.md \
code-copilot/changes/unified-business-flow-app-config/test-spec.md \
code-copilot/changes/unified-business-flow-app-config/execution-log.md
cd /Users/yaomindong/Desktop/project/mdframe/forge-project
curl -I http://127.0.0.1:5173/
HTTP/1.1 200 OK。http://127.0.0.1:5173/。BusinessFlowBindingPanel.vue:
/flow/design,携带 id/businessObjectCode/codeApp/source=appCenter。nodeForms 仅兼容旧配置,不再作为应用侧编辑入口。flow/design.vue、DingFlowDesigner.vue、NodeConfigDrawer.vue、ApproverConfig.vue:
formKey/formName/formType,字段权限写入 formFieldPermissions,由 BPMN writer 输出到流程节点。BusinessFlowService.java、FlowClient.java:
formKey/formUrl/formFieldPermissions。BusinessFlowBinding.nodeForms。SamplePurchaseOrderFlowBpmn.java:
flowable:formKey="sample_purchase_order_approval_form" 和节点 flowable:formFieldPermissions。V1.0.82/V1.0.84 中的 nodeForms 文案修正为历史兼容兜底。spec.md、tasks.md、test-spec.md、decisions.md:
cd /Users/yaomindong/Desktop/project/mdframe/forge-project
source ~/.nvm/nvm.sh && nvm use v20.19.0 >/dev/null
pnpm --dir forge-admin-ui exec eslint \
src/views/app-center/components/designer/BusinessFlowBindingPanel.vue \
src/views/flow/design.vue \
src/components/flow-designer/DingFlowDesigner.vue \
src/components/flow-designer/panel/NodeConfigDrawer.vue \
src/components/flow-designer/panel/ApproverConfig.vue \
src/components/flow-designer/panel/FormPermissionConfig.vue \
src/components/bpmn/NodePropertiesPanel.vue
cd /Users/yaomindong/Desktop/project/mdframe/forge-project/forge-server
JAVA_HOME=$(/usr/libexec/java_home -v 17) PATH="$JAVA_HOME/bin:$PATH" mvn -pl forge-business/forge-business-core -am -DskipTests compile
BUILD SUCCESS。cd /Users/yaomindong/Desktop/project/mdframe/forge-project
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 2m 46s。UserSelectModal 命名冲突、动态导入与静态导入混用、CSS // 注释和 chunk 体积提示;本轮未新增阻断项。cd /Users/yaomindong/Desktop/project/mdframe/forge-project
git diff --check
cd /Users/yaomindong/Desktop/project/mdframe/forge-project
rg -n "[ \t]+$" \
forge-admin-ui/src/views/app-center/components/designer/BusinessFlowBindingPanel.vue \
forge-admin-ui/src/views/flow/design.vue \
forge-admin-ui/src/components/flow-designer/DingFlowDesigner.vue \
forge-admin-ui/src/components/flow-designer/panel/NodeConfigDrawer.vue \
forge-admin-ui/src/components/flow-designer/panel/ApproverConfig.vue \
forge-admin-ui/src/components/flow-designer/panel/FormPermissionConfig.vue \
forge-admin-ui/src/components/bpmn/NodePropertiesPanel.vue \
forge-server/forge-flow/forge-flow-client/src/main/java/com/mdframe/forge/flow/client/FlowClient.java \
forge-server/forge-framework/forge-plugin-parent/forge-plugin-generator/src/main/java/com/mdframe/forge/plugin/generator/service/businessapp/BusinessFlowService.java \
forge-server/forge-business/forge-business-core/src/main/java/com/mdframe/forge/business/core/purchase/support/SamplePurchaseOrderFlowBpmn.java \
forge-server/db/migration/V1.0.82__seed_sample_purchase_order_flow_binding.sql \
forge-server/db/migration/V1.0.84__extend_sample_purchase_order_form_asset_fields.sql \
code-copilot/changes/unified-business-flow-app-config/spec.md \
code-copilot/changes/unified-business-flow-app-config/tasks.md \
code-copilot/changes/unified-business-flow-app-config/test-spec.md \
code-copilot/memory/decisions.md
cd /Users/yaomindong/Desktop/project/mdframe/forge-project
curl -I http://127.0.0.1:5173/
HTTP/1.1 200 OK。http://127.0.0.1:5173/。