BusinessFlowBindingDTO 增加 businessBinding。BusinessFlowBindingVO 回显 businessBinding。BusinessFlowService 保存流程绑定时归一化 businessBinding,并对低代码对象自动补齐业务表绑定默认值。cd forge-server
mvn -pl forge-framework/forge-plugin-parent/forge-plugin-generator -am compile -DskipTests
结果:失败。Maven 使用本机默认 Java 8,报错 无效的目标发行版: 17。这是环境问题,不是代码编译错误。
cd forge-server
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-plugin-generator 及依赖模块 BUILD SUCCESS。
git diff --check
结果:通过,无空白错误。
GenTableServiceImpl、BusinessObjectDesignerService,非本轮新增。purchase-order-test.vue 将待办外部表单里的“同意 / 驳回修改”按钮调整为 size="large",并统一操作区按钮最小宽度,解决与父级“转办/签收”按钮大小不一致的问题。FlowTaskController 新增 GET /api/flow/task/form,通过 processInstanceId/businessKey/processDefKey/taskId 返回只读表单信息,覆盖已办等没有运行中任务的场景。BusinessFlowController 新增 GET /ai/business/flow/task-form-context/readonly,BusinessFlowService#getTaskFormReadonlyContext 跳过待办任务身份校验,仅返回只读业务表单上下文。done.vue 已办详情新增“表单内容”区块,按只读方式渲染外部表单、动态表单、低代码业务对象表单和代码表单查看入口。NodePropertiesPanel.vue 将流转条件配置改为业务化选项:同意通过、驳回修改、退回上一步、终止流程、按业务字段判断;选择后自动生成原 Flowable 条件表达式,高级表达式保留在折叠面板中。cd forge-server
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-flow/forge-flow-server,forge-framework/forge-plugin-parent/forge-plugin-generator -am compile -DskipTests
结果:通过。forge-plugin-generator、forge-flow-server 及依赖模块 BUILD SUCCESS,总耗时 13.141s。
cd forge-admin-ui
source ~/.nvm/nvm.sh && nvm use v20.19.0
NODE_OPTIONS=--max-old-space-size=8192 pnpm build
结果:通过。Vite 构建完成,输出 ✓ built in 1m 54s。
git diff --check
结果:通过,无空白错误。
UserSelectModal 组件命名冲突、CSS // 注释、ExpandPanelRenderer.vue 和 src/store/index.js 动静态混合导入导致无法拆分 chunk,非本轮新增阻断项。git status 中仍存在既有无关 .DS_Store 脏变更:M .DS_Store、D forge/.DS_Store,本轮未处理。SamplePurchaseOrderController#getById 支持 businessKey 查询采购单详情,避免流程待办外部表单只能依赖前端传 Long id。SamplePurchaseOrderService 增加 detailByBusinessKey,通过 sample_purchase_order.business_key 在当前租户内定位采购单。purchase-order-test.js 的详情、提交、删除接口统一按字符串传递 ID 参数。purchase-order-test.vue 的待办表单优先使用 businessKey 查询详情,列表详情/编辑优先使用行 businessKey,审批人和会签人 ID 不再转 Number()。Number 后发生精度丢失,导致 /business/sample-purchase-order/getById 收到错误 ID 并返回“采购单不存在”。cd forge-server
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-business/forge-business-core,forge-flow/forge-flow-client -am compile -DskipTests
结果:通过。forge-business-core、forge-flow-client 及依赖模块 BUILD SUCCESS,总耗时 12.678s。
cd forge-admin-ui
source ~/.nvm/nvm.sh && nvm use v20.19.0
NODE_OPTIONS=--max-old-space-size=8192 pnpm build
结果:通过。Vite 构建完成,输出 ✓ built in 1m 16s。
git diff --check
结果:通过,无空白错误。
rg -n "Number\((props|row|record|detail|currentSubmitRow|.*Id)|Number\(.*\.id|Number\(.*recordId|Number\(.*businessKey|Number\(.*purchaseOrderId" \
forge-admin-ui/src/views/business/purchase-order-test.vue \
forge-admin-ui/src/api/business/purchase-order-test.js
结果:通过,未发现采购单记录 ID、businessKey、流程变量 ID 继续被 Number() 转换。
UserSelectModal 组件命名冲突、CSS // 注释、ExpandPanelRenderer.vue 和 src/store/index.js 动静态混合导入导致无法拆分 chunk,非本轮新增阻断项。git status 中仍存在既有无关 .DS_Store 脏变更:M .DS_Store、D forge/.DS_Store,本轮未处理。flowable:collection、flowable:elementVariable,集合缺失时兜底写出 loopCardinality,避免采购会签节点部署时报 flowable-multi-instance-missing-collection。DingFlowDesigner 关闭 SVG 连线层重复条件标签,分支标签改为按连线路径放置并做碰撞避让,避免“条件已设 / 默认”和加号重叠。BranchNode 视觉调整为参考钉钉样式的小菱形条件锚点。cd forge-admin-ui
source ~/.nvm/nvm.sh && nvm use v20.19.0
pnpm exec vitest run \
src/components/flow-designer/converter/__tests__/layout-algorithm.spec.js \
src/components/flow-designer/canvas/__tests__/layout-engine.spec.js \
src/components/flow-designer/canvas/__tests__/EdgePath.spec.js \
src/components/flow-designer/converter/__tests__/user-task-parser-multi-instance.spec.js \
src/components/flow-designer/converter/__tests__/json-to-bpmn.spec.js \
src/components/flow-designer/converter/__tests__/roundtrip.spec.js \
src/components/flow-designer/__tests__/DingFlowDesigner.spec.js \
src/components/flow-designer/nodes/__tests__/node-cards.spec.js
结果:通过。8 个测试文件、92 个用例全部通过。
cd forge-admin-ui
source ~/.nvm/nvm.sh && nvm use v20.19.0
node --input-type=module <inline-check-script>
结果:通过。采购单样例 BPMN 往返转换后 purchase_countersign 检查输出:
assignee= ${assignee}
collection= ${countersignUserList}
elementVariable= assignee
loopCardinalityCount= 0
completion= ${nrOfCompletedInstances/nrOfInstances == 1}
cd forge-admin-ui
source ~/.nvm/nvm.sh && nvm use v20.19.0
NODE_OPTIONS=--max-old-space-size=8192 pnpm build
结果:通过。Vite 构建完成,输出 ✓ built in 1m 34s。
git diff --check
结果:通过,无空白错误。
UserSelectModal 组件命名冲突、CSS // 注释、ExpandPanelRenderer / src/store/index.js 等模块动静态混合导入导致无法拆分 chunk,非本轮新增阻断项。DingFlowDesigner.vue 调整分支条件标签定位:横向分支标签放到网关与目标节点的中段,垂直默认分支标签向左避让。DingFlowDesigner.vue 调整添加分支按钮定位:从网关中心线下方取分支线 y 坐标,不再固定向右偏移。DingFlowDesigner.spec.js 增加“添加分支按钮居中,默认分支标签避开按钮”回归用例。cd forge-admin-ui
source ~/.nvm/nvm.sh && nvm use v20.19.0
pnpm exec vitest run \
src/components/flow-designer/__tests__/DingFlowDesigner.spec.js \
src/components/flow-designer/canvas/__tests__/AddNodeButton.spec.js \
src/components/flow-designer/converter/__tests__/layout-algorithm.spec.js \
src/components/flow-designer/canvas/__tests__/layout-engine.spec.js
结果:通过。4 个测试文件、40 个用例全部通过。
cd forge-admin-ui
source ~/.nvm/nvm.sh && nvm use v20.19.0
NODE_OPTIONS=--max-old-space-size=8192 pnpm build
结果:通过。Vite 构建完成,输出 ✓ built in 1m 45s。
git diff --check
结果:通过,无空白错误。
UserSelectModal 组件命名冲突、CSS // 注释、ExpandPanelRenderer.vue 和 src/store/index.js 等动静态混合导入导致无法拆分 chunk,非本轮新增阻断项。layout-algorithm.js 区分真实局部分支汇合与驳回重提回退入口,避免 dept_leader_approve 这类回连目标被误判为主链路截断点。BranchNode.vue 将条件/并行/包容网关视觉从普通任务卡调整为轻量分支锚点。layout-algorithm.spec.js 增加驳回重提回路单测。cd forge-admin-ui
source ~/.nvm/nvm.sh && nvm use v20.19.0
pnpm exec vitest run \
src/components/flow-designer/converter/__tests__/layout-algorithm.spec.js \
src/components/flow-designer/canvas/__tests__/layout-engine.spec.js \
src/components/flow-designer/nodes/__tests__/node-cards.spec.js \
src/components/flow-designer/canvas/__tests__/NodeRenderer.spec.js \
src/components/flow-designer/__tests__/DingFlowDesigner.spec.js
结果:通过。5 个测试文件、67 个用例全部通过。
cd forge-admin-ui
source ~/.nvm/nvm.sh && nvm use v20.19.0
NODE_OPTIONS=--max-old-space-size=8192 pnpm build
结果:通过。Vite 构建完成,输出 ✓ built in 1m 48s。
git diff --check
结果:通过,无空白错误。
git status --short
结果:本轮相关文件包括 layout-algorithm.js、BranchNode.vue、layout-algorithm.spec.js、test-spec.md、execution-log.md;工作区仍存在前序任务和既有 .DS_Store 脏变更,本轮未处理。
UserSelectModal 组件命名冲突、CSS // 注释、ExpandPanelRenderer.vue 和 src/store/index.js 等动静态混合导入导致无法拆分 chunk,非本轮新增阻断项。sample_purchase_order 表、实体、DTO/VO、Mapper XML、Service、Controller 和代码表单 Provider。FlowClient 已支持模型创建、更新、发布;FlowResult 兼容 RespInfo.message 字段。src/api/business/purchase-order-test.js。src/views/business/purchase-order-test.vue,同一组件支持采购单列表测试页和 Flow 外置待办审批表单。V1.0.81__add_sample_purchase_order_flow_test.sql,创建测试表、状态字典、总经理角色、菜单和按钮权限。cd forge-server
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-business/forge-business-core,forge-flow/forge-flow-client -am compile -DskipTests
结果:通过。forge-business-core、forge-flow-client 及依赖模块 BUILD SUCCESS,总耗时 16.638s。
cd forge-admin-ui
source ~/.nvm/nvm.sh && nvm use v20.19.0
NODE_OPTIONS=--max-old-space-size=8192 pnpm build
结果:通过。Vite 构建完成,输出 ✓ built in 1m 9s,并生成 purchase-order-test 页面 chunk。
git diff --check
结果:通过,无空白错误。
UserSelectModal 命名冲突、CSS // 注释、src/store/index.js 和部分模块动静态混合导入导致无法拆分 chunk,非本轮新增阻断项。TASK_COMPLETED / PROCESS_COMPLETED 事件顺序不稳定,完成事件变量缺失导致业务回调失败且不重试”的同类风险。FlowTaskEventListener#handleProcessCompleted 发布 PROCESS_COMPLETED/PROCESS_REJECTED 前合并当前执行变量、运行时变量和历史变量,并从合并变量中兜底解析 approvalResult。FlowTaskEventListener#handleTaskCompleted 读取任务变量失败后不再直接返回空,继续按流程实例和历史变量兜底。FlowInstanceServiceImpl#getProcessVariables 改为运行时优先、流程结束后历史变量兜底。FlowMonitorServiceImpl#getProcessVariables 与监控 Controller 变量读取策略对齐。cd forge-server
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-flow -am compile -DskipTests
结果:通过。forge-plugin-flow 及依赖模块 BUILD SUCCESS,总耗时 7.706s。
cd forge-server
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-flow -Dtest=FlowTaskEventListenerTest -DskipTests=false -Dmaven.test.skip=false test
结果:命令成功返回,但模块配置仍输出 Not compiling test sources 和 Tests are skipped,未实际执行测试用例。
git diff --check
结果:通过,无空白错误。
ExecutionEntity#getVariables(),流程结束后的变量查询也只读运行时变量;业务侧 FlowEventSubscriber 回调异常只记录日志。FlowEventSubscriber 仍未提供持久化重试/死信队列;如果业务回调因业务异常、数据库异常或服务宕机失败,仍可能只记录日志。该能力需要单独设计事件投递表或可靠消息队列。git status 中仍存在既有无关 .DS_Store 脏变更:M .DS_Store、D forge/.DS_Store,本轮未处理。@FlowCallback 样例和数据库状态断言,留待最终统一验证。FlowClient 增加任务详情查询,业务待办表单上下文按 taskId 校验任务状态、当前办理人、流程实例、业务 Key 和节点 Key。BusinessTaskFormContextQueryDTO、BusinessTaskFormSaveDTO、BusinessTaskFormContextVO 补齐任务身份字段,保存业务字段和重提必须由已签收办理人执行。BusinessCodeFormProvider 和 BusinessCodeFormProviderRegistry,代码优先复杂业务可注册代码表单资产、上下文和保存逻辑。BUSINESS_CODE_FORM 待办上下文支持 Provider 委派;未注册 Provider 时返回 warning,并支持待办页打开业务表单地址。POST /ai/business/flow/resubmit,供复杂业务页保存主数据后复用原流程实例完成修改节点重提。todo.vue 对代码表单和存在可写业务字段的任务禁止快捷同意,避免绕过业务表单保存和节点字段权限。spec.md、tasks.md、test-spec.md 已补齐本轮运行态、Provider 和重提接口记录;低代码应用完整改造按用户要求暂缓。cd forge-server
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-plugin-generator 及依赖模块 BUILD SUCCESS,总耗时 10.878s。
cd forge-admin-ui
source ~/.nvm/nvm.sh && nvm use v20.19.0
NODE_OPTIONS=--max-old-space-size=8192 pnpm build
结果:通过。Vite 构建完成,输出 ✓ built in 1m 28s。
git diff --check
结果:通过,无空白错误。
UserSelectModal 组件命名冲突、CSS // 注释、ExpandPanelRenderer.vue 和 src/store/index.js 等动静态混合导入导致无法拆分 chunk,非本轮新增阻断项。git status 中仍存在既有无关 .DS_Store 脏变更:M .DS_Store、D forge/.DS_Store,本轮未处理。BusinessFlowBindingPanel.vue 增加“业务记录绑定”配置区。businessBinding,回显旧配置时归一化接入方式、业务表、主键字段、租户字段、状态字段、标题字段和负责人字段。tasks.md、test-spec.md 更新本轮设计器配置和验证范围。cd forge-admin-ui
source ~/.nvm/nvm.sh && nvm use v20.19.0
NODE_OPTIONS=--max-old-space-size=8192 pnpm build
结果:通过。Vite 构建完成,输出 ✓ built in 7m 44s。
cd forge-server
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-plugin-generator 及依赖模块 BUILD SUCCESS,总耗时 17.561s。
git diff --check
结果:通过,无空白错误。
UserSelectModal 组件命名冲突、CSS 中 // 注释、src/store/index.js 动静态混合导入导致无法拆分 chunk,非本轮新增阻断项。git status 中存在既有 .DS_Store 脏变更:M .DS_Store、D forge/.DS_Store,本轮未处理。PUT /ai/business/flow/binding/{objectCode},未改 Controller 路径或数据库结构。BusinessFlowService 在流程发起时对本次运行的 bindingConfig 补齐 businessBinding 默认值。businessBinding.statusField 回写 IN_PROCESS。businessBinding.statusField 回写 APPROVED/REJECTED/CANCELED。ADAPTER 模式跳过平台直接回写;BUSINESS_TABLE 暂只允许与已发布低代码运行表一致时通过动态 CRUD 内部更新,避免任意表名拼接 SQL。cd forge-server
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-plugin-generator 及依赖模块 BUILD SUCCESS。
git diff --check
结果:通过,无空白错误。
BusinessFlowBindingDTO/VO 增加 nodeForms。BusinessFlowController 新增 GET /ai/business/flow/form-assets/{objectCode}。BusinessFlowService 增加表单资产目录读取、节点表单策略保存归一化、字段权限归一化和低代码表单字段目录解析。BusinessFlowVariableResolver 从 BPMN XML 解析 userTask,返回人工节点清单给前端。BusinessFlowBindingPanel.vue 增加“节点表单策略”,支持低代码表单资产选择、代码适配器表单编码、外部表单 URL,以及节点级可见/可编辑/必填字段配置。business-app.js 增加表单资产目录 API。tasks.md、test-spec.md 更新本轮节点表单资产与字段权限落地范围。cd forge-server
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-plugin-generator 及依赖模块 BUILD SUCCESS,总耗时 13.999s。
cd forge-admin-ui
source ~/.nvm/nvm.sh && nvm use v20.19.0
NODE_OPTIONS=--max-old-space-size=8192 pnpm build
结果:通过。Vite 构建完成,输出 ✓ built in 2m 1s。
git diff --check
结果:通过,无空白错误。
UserSelectModal 组件命名冲突、CSS // 注释、src/store/index.js 动静态混合导入、部分模块动静态混合导入导致无法拆分 chunk,非本轮新增阻断项。git status 中仍存在既有 .DS_Store 脏变更:M .DS_Store、D forge/.DS_Store,本轮未处理。BusinessTaskFormContextQueryDTO、BusinessTaskFormSaveDTO、BusinessTaskFormContextVO。BusinessFlowController 新增 GET/PUT /ai/business/flow/task-form-context。BusinessFlowService 支持按 processInstanceId/businessKey/taskDefKey 解析业务记录、节点表单策略、低代码表单字段和字段权限,并只保存节点可编辑字段。business-app.js 新增待办业务表单上下文 API。todo.vue 在待办审批详情渲染低代码业务表单,“同意”前保存节点授权字段;快捷同意遇到业务可写字段时跳过并提示进入详情办理。spec.md、tasks.md、test-spec.md 回填首期“Flow 通用 TaskFormInfo + 业务侧表单上下文 API”的落地策略和验证计划。git diff --check
结果:通过,无空白错误。
cd forge-server
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-plugin-generator 及依赖模块 BUILD SUCCESS,总耗时 11.291s。
cd forge-admin-ui
source ~/.nvm/nvm.sh && nvm use v20.19.0
NODE_OPTIONS=--max-old-space-size=8192 pnpm build
结果:通过。Vite 构建完成,输出 ✓ built in 1m 17s。
git status --short
结果:本轮相关文件处于已修改/新增状态;仍存在既有无关 .DS_Store 脏变更:M .DS_Store、D forge/.DS_Store。
UserSelectModal 组件命名冲突、CSS // 注释、src/store/index.js 以及部分模块动静态混合导入导致无法拆分 chunk,非本轮新增阻断项。FlowTaskController 新增 GET /api/flow/task/form,已办/历史查看可按流程实例、业务 Key 或任务 ID 获取只读表单信息。FlowTaskMapper/FlowTaskServiceImpl 增加 selectByIdOrTaskId,兼容已办列表传 Flowable taskId 或 sys_flow_task.id。BusinessFlowController 新增 GET /ai/business/flow/task-form-context/readonly,业务表单只读上下文不触发待办办理人校验。git diff --check
结果:通过,无空白错误。
cd forge-server
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-flow/forge-flow-server,forge-framework/forge-plugin-parent/forge-plugin-generator -am compile -DskipTests
结果:通过。forge-flow-server、forge-plugin-flow、forge-plugin-generator 及依赖模块 BUILD SUCCESS,总耗时 14.543s。
cd forge-admin-ui
source ~/.nvm/nvm.sh && nvm use v20.19.0
NODE_OPTIONS=--max-old-space-size=8192 pnpm build
结果:通过。Vite 构建完成,输出 ✓ built in 2m 14s。
UserSelectModal 组件命名冲突、CSS // 注释、动静态混合导入导致无法拆分 chunk,非本轮新增阻断项。git diff --name-only 中仍存在既有无关 .DS_Store 脏变更,本轮未处理。ConditionConfig.vue 将仿钉钉流程设计器的条件分支配置改为“审批结果 / 业务字段 / 开发者高级”三种模式。${approvalResult == 'reject'}。BranchHeader.vue 对已有审批结果表达式做业务文案回显,分支标签直接显示“驳回修改 / 终止流程”等,不再只显示“条件已设”。ConditionConfig.spec.js 和 DingFlowDesigner.spec.js,覆盖审批结果选择、旧表达式回显、复杂驳回回路标签展示。cd forge-admin-ui
source ~/.nvm/nvm.sh && nvm use v20.19.0
pnpm exec vitest run \
src/components/flow-designer/panel/__tests__/ConditionConfig.spec.js \
src/components/flow-designer/__tests__/DingFlowDesigner.spec.js
结果:通过。2 个测试文件、28 个用例全部通过。
cd forge-admin-ui
source ~/.nvm/nvm.sh && nvm use v20.19.0
NODE_OPTIONS=--max-old-space-size=8192 pnpm build
结果:通过。Vite 构建完成,输出 ✓ built in 1m 41s。
git diff --check
结果:通过,无空白错误。
UserSelectModal 组件命名冲突、CSS // 注释、ExpandPanelRenderer.vue 和 src/store/index.js 动静态混合导入导致无法拆分 chunk,非本轮新增阻断项。UserSelectPicker 选择抄送人。flowable:type="cc"、flowable:candidateUsers、flowable:candidateUserNames,未配置自定义实现时自动挂 flowable:delegateExpression="${flowCcNodeDelegate}"。FlowCcNodeDelegate,流程流转到抄送 serviceTask 时按节点配置发送抄送。cd forge-admin-ui
source ~/.nvm/nvm.sh && nvm use v20.19.0
pnpm exec vitest run \
src/components/flow-designer/converter/__tests__/json-to-bpmn.spec.js \
src/components/flow-designer/converter/__tests__/bpmn-to-json-multi.spec.js \
src/components/flow-designer/nodes/__tests__/node-cards.spec.js
结果:通过。3 个测试文件、37 个用例全部通过。
cd forge-server
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-flow -am compile -DskipTests
结果:通过。forge-plugin-flow 及依赖模块 BUILD SUCCESS,总耗时 8.259s。
cd forge-admin-ui
source ~/.nvm/nvm.sh && nvm use v20.19.0
NODE_OPTIONS=--max-old-space-size=8192 pnpm build
结果:通过。Vite 构建完成,输出 ✓ built in 1m 54s。
cd forge-server
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-flow/forge-flow-server -am compile -DskipTests
结果:通过。forge-flow-server 及依赖模块 BUILD SUCCESS,总耗时 12.352s。
git diff --check
结果:通过,无空白错误。
UserSelectModal 组件命名冲突、CSS // 注释、ExpandPanelRenderer.vue 和 src/store/index.js 动静态混合导入导致无法拆分 chunk,非本轮新增阻断项。git status --short 中仍存在既有无关 .DS_Store 脏变更,本轮未处理。CarbonCopyConfig.vue 的抄送来源扩展为“指定人员 / 指定角色 / 表达式”。NodePropertiesPanel.vue 的服务任务抄送配置同步支持人员、角色和表达式。/system/role/page 加载角色,保存到 flowable:candidateGroups / flowable:candidateGroupNames。flowable-moddle.json 补充抄送节点自定义属性,避免普通 BPMN 设计器序列化时丢失 ccReceiverType、ccExpressionTarget 等配置。FlowCcNodeDelegate 支持解析简单变量、${user_123} 和复杂 Flowable 表达式,并在角色模式下解析角色/部门下用户。NSegmented,抄送来源选择最终使用 n-radio-group + n-radio-button 实现。cd forge-admin-ui
source ~/.nvm/nvm.sh && nvm use v20.19.0
pnpm exec eslint \
src/components/flow-designer/panel/CarbonCopyConfig.vue \
src/components/bpmn/NodePropertiesPanel.vue \
src/components/flow-designer/converter/json-to-bpmn.js \
src/components/flow-designer/converter/bpmn-to-json.js
结果:通过,无 ESLint 报错。
cd forge-admin-ui
source ~/.nvm/nvm.sh && nvm use v20.19.0
pnpm exec vitest run \
src/components/flow-designer/converter/__tests__/json-to-bpmn.spec.js \
src/components/flow-designer/converter/__tests__/bpmn-to-json-multi.spec.js
结果:通过。2 个测试文件、21 个用例全部通过。
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-flow -am compile -DskipTests
结果:通过。forge-plugin-flow 及依赖模块 BUILD SUCCESS,总耗时 6.905s。
cd forge-admin-ui
source ~/.nvm/nvm.sh && nvm use v20.19.0
NODE_OPTIONS=--max-old-space-size=8192 pnpm build
首次结果:失败。原因是新增的 n-segmented 会被自动导入为 NSegmented,但当前 naive-ui@2.44.1 不导出该组件。已改为项目可用的 n-radio-group + n-radio-button。
重跑结果:通过。Vite 构建完成,输出 ✓ built in 1m 35s。
git diff --check
结果:通过,无空白错误。
UserSelectModal 组件命名冲突、CSS // 注释、ExpandPanelRenderer.vue 和 src/store/index.js 动静态混合导入导致无法拆分 chunk,非本轮新增阻断项。git status --short 中仍存在既有无关 .DS_Store、本地环境文件和前序业务流程改造文件,本轮未处理。n-radio-group 强行改成 grid,改为自定义三段按钮。implementationType 不再依赖 implementation 非空才回显。cd forge-admin-ui
source ~/.nvm/nvm.sh && nvm use v20.19.0
pnpm exec eslint \
src/components/flow-designer/panel/CarbonCopyConfig.vue \
src/components/bpmn/NodePropertiesPanel.vue
结果:通过,无 ESLint 报错。
git diff --check
结果:通过,无空白错误。
cd forge-admin-ui
source ~/.nvm/nvm.sh && nvm use v20.19.0
NODE_OPTIONS=--max-old-space-size=8192 pnpm build
结果:通过。Vite 构建完成,输出 ✓ built in 1m 32s。
UserSelectModal 组件命名冲突、CSS // 注释、ExpandPanelRenderer.vue 和 src/store/index.js 动静态混合导入导致无法拆分 chunk,非本轮新增阻断项。