status: apply_completed created: 2026-07-03 complexity: 🔴复杂
lowcode-platform-capability-foundation 已补齐通用动作、记录选择器、主子表 merge、流程回调、触发器复用动作、领域动作 SPI、数量台账和分层提醒。采购仓储原型继续暴露的是“交易闭环”能力缺口:
本变更继续坚持平台级通用能力,采购仓储只作为验收样例,不在平台代码中硬编码采购、仓库、供应商、物料等对象名。
完成后,平台应支持:
BusinessActionExecutionService:统一执行业务动作,支持日志、幂等、事务和白名单步骤。DomainActionStepExecutor + BusinessQuantityDomainActionExecutor:支持 DOMAIN_ACTION 调用通用数量台账。BusinessQuantityLedgerService:支持入账、锁定、释放、扣减、转移、幂等和防负数。BusinessRecordSelectorService + AiRecordSelectorModal.vue:支持通用对象选择器、字段映射和权限过滤。ChildTableEditor.vue:支持选择器批量追加子表和 merge 保存。BusinessDetailDesigner.vue:支持主信息复用表单设计、关联页签、操作日志和审批记录。BusinessActionStepConfigHelper 只能从单个 record/form/context 解析字段,缺少集合路径、循环变量和循环结果聚合。DomainActionStepExecutor 只执行一次领域动作,无法按子表行逐行执行数量动作。BusinessRecordSelectorService#buildSearchParams 仅在 keywordFields.size() == 1 时处理关键词,多字段搜索不生效。searchParams 目前是静态对象,缺少 ${form.xxx}、${record.xxx}、${query.xxx} 这类上下文表达式解析。FOREACH 白名单步骤,支持 collectionPath、itemAlias、indexAlias、steps,逐行执行子步骤并汇总结果。${item.xxx}、${index},循环内可读取父级 record/form/context。searchParams 支持从 formData、record、routeQuery、context 解析表达式,运行态字段和子表选择器都可使用。rollbackOnFailure 控制回滚。本轮 P0 不新增业务表。数量台账复用 ai_business_quantity_balance、ai_business_quantity_ledger、ai_business_quantity_lock。
新增权限迁移脚本 V1.0.89__add_business_quantity_query_permission.sql,写入 ai:businessQuantity:view 只读权限,具备 NOT EXISTS 防重复保护,tenant_id=1。
如后续需要沉淀详情区块模板,可另起变更新增平台配置表或扩展现有 page/view schema,不在本轮新增表。
| 操作 | 接口 | 方法 | 说明 |
|---|---|---|---|
| 新增 | /ai/business/quantity/query/balance |
POST | 查询通用数量余额 |
| 新增 | /ai/business/quantity/query/ledger |
POST | 查询通用数量流水 |
| 新增 | /ai/business/quantity/query/lock |
POST | 查询通用数量锁定记录 |
| 扩展 | /ai/business/selector/query |
POST | 支持多字段关键词和动态过滤 |
| 扩展 | /ai/business/action/execute |
POST | 支持 FOREACH 动作步骤 |
forge-plugin-generator 的动作执行、选择器、数量台账 Mapper/Service/Controller。AiRecordSelectorModal、AiFormItem、ChildTableEditor、动作设计器、详情设计器和运行态详情区块。FOREACH 容易被滥用成脚本引擎,必须只允许白名单步骤,并限制递归深度。BusinessActionForeachStepExecutorTest:覆盖集合不存在、空集合、逐行成功、子步骤失败回滚、循环变量映射和稳定幂等键。BusinessRecordSelectorServiceTest:覆盖多字段关键词、动态过滤解析、非法字段过滤、权限拒绝。BusinessQuantityQueryServiceTest:覆盖余额、流水、锁定查询条件和分页。source ~/.nvm/nvm.sh && nvm use v20.19.0 && NODE_OPTIONS=--max-old-space-size=8192 pnpm build。-Pdev,enable-tests。采购仓储原型应能通过低代码配置表达:
| 时间 | 事项 | 状态 | 备注 |
|---|---|---|---|
| 2026-07-03 | 创建 SDD 变更 | in_progress | 从采购仓储原型评估收敛为通用业务交易闭环能力 |
| 2026-07-03 | 完成 P0 平台能力实现 | completed | FOREACH 动作、选择器多字段搜索/动态过滤、数量台账只读查询和权限/API |
| 2026-07-03 | 完成 P1 前端配置与详情区块 | completed | 动作循环模板、选择器过滤入口、子表选择器配置、数量展开/详情区块和验收文档 |
| 2026-07-03 | 补齐详情区块发布运行态贯通 | completed | detail.quantityPanels 发布为 options.detailPanels,真实运行页、预览页和低代码页面块均传入 AiCrudPage |
| 2026-07-03 | 补充运行配置单测 | completed | 新增 LowcodeRuntimeConfigBuilderTest 覆盖详情数量区块发布到运行态 options |
| 2026-07-03 | 修复设计器配置保真和菜单停用等回归 | completed | 保留字典/选择器/自动编号元数据,合并发布入口,停用同步隐藏菜单,修复 Delete 误清绑定和表格全局对齐 |
| 2026-07-04 | 修复表单校验和关系选择器配置体验 | completed | 常用校验不再被 schema 归一化清空;关系子表选择器改为结构化选择配置;运行态按 recordSelector 元数据发布选择器组件 |