spec.md 37 KB

低代码业务应用平台业务闭环补齐

status: in_progress created: 2026-05-28 complexity: 🔴复杂

1. 背景与目标

lowcode-business-app-platform 第一阶段已经完成应用中心、业务套件、业务对象、对象关系、应用入口、能力挂接、移动端中心、集成中心和 CRM 样板入口。但从业务人员视角看,当前能力仍更接近“业务化目录 + 低代码包装”,还没有完全达到客户真实诉求:

  • 做 CRM 时,只看 CRM 相关业务对象和应用能力。
  • 业务前端要能高度个性化,平台只保留组织、权限、流程、审批、报表、消息、数据接口等底座。
  • 平台能力要拆成可拼接的引擎:流程引擎、审批引擎、报表引擎、权限引擎、消息引擎。
  • 应用层围绕单据和业务对象建设,例如客户、商机、合同、回款、跟进记录。
  • 后续要能快速接入大屏看板、H5、嵌入式页面、标准接口、Webhook、企微、飞书、钉钉等外部平台。

本变更目标不是再新增一批入口页面,而是把第一阶段“能看见”推进到“能交付、能运行、能扩展”:

CRM 业务闭环 → 对象自助搭建闭环 → 引擎能力最小闭环 → 嵌入/H5/集成闭环 → 业务验收口径

完成后,业务人员从“应用中心 → CRM”进入,应至少能完成以下闭环:

  • 客户、联系人、商机、合同、回款等核心对象可以运行标准列表、表单、详情、导入、导出。
  • 客户详情能看到联系人、商机、跟进记录等关联入口,不再只是关系配置展示。
  • 合同可以看到审批接入状态;若流程已配置,可发起审批;若未配置,给出明确配置路径。
  • 商机阶段提醒、合同金额汇总、回款逾期提醒等触发器不再只是能力标签,至少有可执行或可验证的最小动作。
  • 销售看板或经营分析大屏可以作为嵌入应用安全打开。
  • H5、移动待办、移动审批、移动业务入口可以按 CRM 套件统一管理和打开。
  • 标准接口、Webhook、企微/飞书/钉钉至少形成一个通用出站事件和推送日志闭环。

2. 代码现状(Research Findings)

2.1 第一阶段已具备的业务化入口

  • code-copilot/changes/lowcode-business-app-platform/spec.md 已标记第一阶段完成,并明确第一阶段定位是“业务化应用平台模块”,不是重写低代码运行时。
  • forge-admin-ui/src/views/app-center/index.vue 已有应用总览、业务套件筛选、业务对象列表、应用入口列表、引擎中心、移动端、集成入口。
  • forge-admin-ui/src/views/app-center/suite.[suiteCode].vue 已能按套件展示业务对象和场景入口。
  • forge-admin-ui/src/views/app-center/object.[objectCode].vue 已有对象详情、运行态提示、配置模型、配置布局、发布应用、导入模板、导入、导出、关系、能力页签。
  • forge-admin-ui/src/views/app-center/engines.vue 已展示流程、审批、报表、权限、消息、触发器、导入导出等引擎卡片。
  • forge-admin-ui/src/views/app-center/mobile.vue 已登记 H5、移动待办、移动审批、移动业务入口。
  • forge-admin-ui/src/views/app-center/integration.vue 已登记标准接口、Webhook、企微/飞书/钉钉、外部系统等集成入口。

2.2 第一阶段已具备的后端协议

  • BusinessSuiteController 提供业务套件分页、列表、详情、汇总和同步低代码领域接口。
  • BusinessObjectController 提供业务对象分页、列表、详情、运行态信息、创建、修改、启停、删除和同步低代码模型接口。
  • BusinessObjectRelationController 提供对象关系查询、保存和删除接口。
  • BusinessAppController 提供应用入口分页、列表、详情、打开信息、创建、修改、启停、删除和同步已发布低代码应用接口。
  • BusinessBindingController 提供能力挂接列表、新增、修改、删除和批量保存接口。
  • BusinessAppOpenService 已对应用入口打开做状态、权限、目标地址、域名白名单和敏感 URL 参数校验。

2.3 CRM 样板现状

  • forge/db/migration/V1.0.28__seed_crm_business_suite.sql 已初始化 CRM 套件、9 个业务对象、对象关系、对象能力挂接和 8 个标准业务应用入口。
  • CRM 对象包括客户、联系人、线索、商机、合同、合同明细、回款、跟进记录、销售任务。
  • CRM 关系包括客户-联系人、客户-商机、商机-合同、合同-合同明细、合同-回款、客户-跟进记录、商机-跟进记录。
  • CRM 能力挂接包括导入、导出、报表、触发器、审批、消息、权限。
  • forge/db/migration/V1.0.32__seed_crm_customer_runtime_link.sql 仅明确补齐了客户对象的低代码模型和 crm_customer 运行态配置。
  • forge/db/migration/V1.0.33__seed_crm_other_models.sql 初始化了其他 CRM 对象的低代码模型,但不等同于所有对象都已经具备真实运行态 CRUD 配置和物理数据表。

2.4 当前业务缺口

  • 应用入口已经按 CRM 展示,但 CRM 多数对象仍可能只是对象、模型和入口配置,未必具备可运行数据表和 CRUD 配置。
  • 对象关系当前主要用于“关系展示”,还没有形成客户详情下联系人/商机/跟进记录列表等业务使用体验。
  • 能力挂接当前主要是能力标签和配置入口,不能把“已接入”直接理解成“已可运行”。
  • BusinessObjectWizardDrawer 中“从模板创建、从数据库表导入、从 AI 描述生成”当前文案仍是预留或跳转,不是完整自助搭建闭环。
  • 引擎中心当前多数卡片跳到原有配置页面,缺少对象维度的运行状态、缺口提示和最小执行动作。
  • 移动端中心当前只做入口登记,不提供 CRM 移动业务最小运行路径。
  • 集成中心当前只做入口定义,不具备标准事件、Webhook 推送、失败日志、重试和第三方平台通道闭环。
  • 嵌入应用已有 open-info 安全校验,但缺少统一 iframe 容器、业务化错误页和大屏类入口验收闭环。
  • CRM 入口和关系入口存在目标错配风险:例如点击“客户跟进记录/跟进记录”时,不能进入客户管理,必须进入跟进记录对象对应的运行页。
  • 生成出的客户管理运行页存在字段名、列标题或表单项显示为 undefined 的问题,说明运行配置 Schema 和前端渲染兜底需要补齐校验。
  • 应用中心的对象关系和低代码模型里的关联配置需要保持一致,不能形成两套互相不生效的关系配置。
  • app-center/suite/:suiteCode 业务套件详情页目前按模块纵向堆叠,内容多时浏览成本高,需要改成更适合扫描和运营的布局。

3. 产品定位

本变更把应用中心从“业务化配置目录”推进到“可交付业务装配工作台”。

3.1 面向业务人员

业务人员不需要理解表名、配置键、JSON 或发布版本。业务人员关心:

  • CRM 是否能用。
  • 客户、联系人、商机、合同、回款能不能录入和查询。
  • 合同审批、回款提醒、销售看板能不能接上。
  • 后续能不能把企业已有大屏、H5 或第三方平台接进来。

3.2 面向实施人员

实施人员需要看到“这个业务对象距离可交付还差什么”:

  • 是否有数据表。
  • 是否有低代码模型。
  • 是否有已发布运行配置。
  • 是否有关联应用入口。
  • 导入导出是否可用。
  • 审批、报表、消息、权限、触发器是否只是挂接,还是已能运行。

3.3 面向开发人员

开发人员继续使用低代码模型设计、搭建器、发布、动态 CRUD、代码预览和下载。应用中心只做业务编排和可交付闭环,不复制低代码底层能力。

4. 范围

4.1 本阶段必须完成

  • CRM 核心对象最小可运行闭环:客户、联系人、商机、合同、回款。
  • CRM 入口目标修正:点击跟进记录、客户跟进记录等入口时,必须进入目标对象运行页,不能错开到客户管理。
  • CRM 运行页 Schema 质量修正:客户管理等生成页面不得出现 undefined 字段、列名、表单标签或按钮文案。
  • 业务对象就绪度检查:数据表、模型、运行配置、应用入口、导入导出、关系、能力挂接。
  • 对象详情关系运行视图:客户下联系人/商机/跟进记录,合同下合同明细/回款。
  • 关系配置闭环:应用中心的“关系配置”必须能直接维护业务对象关系,并与模型关联配置保持同步或一致映射。
  • 对象自助搭建主流程补齐:空白对象、模板对象、数据库导入、AI 生成四种入口必须有明确下一步和状态回写。
  • 引擎中心从“固定入口”升级为“按对象统计接入状态和可运行状态”。
  • 业务套件详情页布局优化:app-center/suite/:suiteCode 不能只按对象、验收、入口纵向堆叠,需要支持内容较多时的横向分区、页签或分栏浏览。
  • 合同审批最小闭环:绑定流程存在时可发起;不存在时给配置路径。
  • 报表/大屏最小闭环:销售看板或经营分析大屏可作为安全嵌入应用打开。
  • 消息/触发器最小闭环:至少支持商机阶段变化提醒、回款逾期提醒、合同金额汇总其中的可执行动作或可验收模拟。
  • 移动端入口最小闭环:CRM H5、移动审批、移动待办、移动业务入口能登记、校验、打开,并展示可见范围。
  • 集成最小闭环:标准事件、Webhook 订阅、推送日志和失败重试;企微/飞书/钉钉作为通道类型,不保存明文密钥。

4.2 本阶段不做

  • 不重写动态 CRUD 运行时。
  • 不重写低代码模型设计器和页面搭建器。
  • 不一次性实现完整 CRM 行业套件。
  • 不建设完整移动 App 或完整 H5 页面搭建器。
  • 不一次性打通企微、飞书、钉钉所有接口能力。
  • 不新建独立工程。
  • 不把 ai_business_* 表变成低代码运行配置事实来源。

5. 功能点

5.1 CRM 核心对象可运行闭环

  • CRM 客户、联系人、商机、合同、回款必须有真实可用的物理数据表、低代码模型、运行配置和应用入口。
  • 已配置 configKey 但找不到运行配置时,应用中心必须提示“运行配置缺失”,不能让业务用户打开后报错。
  • 客户、联系人、商机、合同、回款必须支持标准列表、查询、新增、编辑、删除、导入模板、导入、导出。
  • 金额字段统一使用分为单位的 long/bigint,不新增 decimal 金额字段。
  • CRM 对象的运行入口必须从“应用中心 → CRM 套件 → 业务对象/应用入口”可达。
  • 未完成运行态的对象必须显示具体缺口和下一步,不允许只显示灰色按钮。
  • 点击“跟进记录”“客户跟进记录”“商机跟进记录”入口时,目标必须是 crm_follow_record 运行页或跟进记录对象详情,禁止落到 crm_customer 客户管理页。
  • RUNTIME 类型应用入口打开必须以 ai_business_app.object_code + config_key + entry_url 三者一致为准;三者不一致时返回不可打开状态并提示修复配置。
  • 客户管理生成页的搜索项、表格列、表单项、详情项必须都有有效 field/proplabel,页面上不得出现 undefined、空白列标题或无法提交的字段。
  • 后端保存或发布 ai_crud_config 时必须校验 search_schemacolumns_schemaedit_schemamodel_schema 的字段映射完整性;历史初始化脚本需要补齐或修正客户管理 Schema。

5.2 对象关系运行视图

  • 客户详情展示联系人、商机、跟进记录三个关联列表入口。
  • 合同详情展示合同明细和回款两个关联列表入口。
  • 商机详情展示合同和跟进记录关联列表入口。
  • 关联列表至少支持查看关联数据、跳转到目标对象运行页并带入关联筛选条件。
  • 第一阶段可不在对象详情内重写完整明细编辑器,但必须给出可操作入口。
  • 关系运行入口必须读取关系配置中的源对象、目标对象、源字段、目标字段和目标对象运行入口,不能默认回退到当前对象或客户管理入口。
  • 对象关系配置页必须支持直接维护关系:关系类型、源对象、目标对象、源字段、目标字段、详情页签名称、默认筛选条件、排序和启停状态。
  • 低代码模型已存在关联配置时,应用中心关系配置应能自动带出;在应用中心新增或修改关系时,也要能回写或同步到模型关联元数据。
  • 当模型关联配置与 ai_business_object_relation 不一致时,页面必须提示差异并提供“以模型为准/以业务关系为准”的修复动作,不能静默使用错误关系。

5.3 业务对象就绪度

  • 新增对象就绪度接口,返回模型、表结构、运行配置、应用入口、导入导出、关系、能力挂接的状态。
  • 对象详情顶部显示就绪度摘要,例如“可运行”“缺少数据表”“缺少发布配置”“能力仅已登记”。
  • 就绪度必须区分“已登记”“已配置”“可运行”“执行失败”。
  • 应用入口打开前必须校验 configKey 对应 ai_crud_config 是否存在且可用。

5.4 自助搭建主流程

  • 从空白对象创建:保存对象档案后,进入模型配置和发布流程。
  • 从模板创建:选择模板后生成对象、模型草稿和默认应用入口。
  • 从数据库表导入:复用低代码数据库表导入能力,完成后回写 ai_business_object.model_id/model_code
  • 从 AI 描述生成:复用低代码 AI 生成链路,完成后回写业务套件、业务对象和应用入口。
  • 每个创建方式都要有业务化步骤条和返回应用中心的路径。

5.5 引擎能力最小闭环

  • 引擎中心显示每类引擎的总接入数、可运行数、待配置数、异常数。
  • 对象能力页签中,能力卡片必须展示“已登记/可配置/可运行/不可用”的状态。
  • 合同审批:若 APPROVAL 绑定的流程存在,可从合同记录发起审批;若不存在,提示去流程配置。
  • 报表能力:若 REPORT 绑定有入口地址,可从对象或套件打开报表;若没有,提示配置报表。
  • 消息能力:至少支持从对象事件生成站内消息或模拟发送记录。
  • 权限能力:对象详情显示当前对象的数据权限策略摘要,并链接到现有权限配置。
  • 触发器能力:支持少量内置动作,不引入完整复杂规则引擎。

5.6 嵌入应用与大屏闭环

  • 新增统一嵌入页面容器,iframe 应用不直接裸跳外部地址。
  • iframe、外部链接、H5 必须通过后端 open-info 做状态、权限、白名单和敏感参数校验。
  • 销售看板或经营分析大屏可作为 CRM 套件下的 EMBEDDED 应用入口展示并打开。
  • 嵌入失败时展示业务化错误:未授权、未配置白名单、地址不可访问、缺少 SSO。
  • 第一阶段可不实现 SSO 和 postMessage 深度交互,但必须预留配置字段。

5.7 移动端入口闭环

  • CRM 移动入口按 H5 入口、移动待办、移动审批、移动业务分类。
  • 移动入口保存可见范围:全部用户、指定角色、指定部门、负责人范围。
  • 移动审批和移动待办优先复用流程、审批和消息中心,不新增独立待办来源。
  • 移动入口打开时必须校验权限和白名单,不允许长期 Token 出现在 URL。
  • 第一阶段不做完整移动端搭建器,但必须能展示“当前入口通向哪里、谁可见、是否可打开”。

5.8 集成与第三方推送闭环

  • 定义业务事件:对象创建、对象更新、状态变更、审批提交、审批通过、审批驳回、回款逾期。
  • 支持按业务套件、业务对象和事件类型配置 Webhook 订阅。
  • 支持企微、飞书、钉钉作为通道类型登记,但密钥必须使用安全配置引用,不存明文。
  • 每次推送生成事件日志,记录状态、响应、失败原因和重试次数。
  • 支持失败重试和手动重推。
  • 第一阶段至少打通通用 Webhook 推送闭环;企微/飞书/钉钉可先作为通道适配器框架。

5.9 业务验收工作台

  • CRM 套件详情新增“交付验收”视角,按对象展示运行状态、关系状态、引擎能力状态、渠道接入状态。
  • 支持一键检查 CRM 样板是否达到最小交付标准。
  • 检查结果必须能定位到下一步操作,例如“去配置模型”“去发布应用”“去配置流程”“去配置白名单”。

5.10 业务套件详情页布局优化

  • app-center/suite/:suiteCode 需要从纯纵向区块堆叠升级为“概览 + 分区导航”的工作台布局。
  • 桌面端优先采用顶部摘要、左侧分区导航或页签、右侧内容区的结构,业务对象、交付验收、场景入口、引擎能力、移动入口、集成入口可以快速切换。
  • CRM 对象和入口数量较多时,业务对象和场景入口必须支持分页、搜索、筛选和紧凑卡片/表格切换,避免页面无限向下滚动。
  • 交付验收结果应作为摘要状态常驻在首屏,不应把长列表完整压在所有内容中间。
  • 移动端可以保持单列布局,但需要保留分区锚点或折叠面板,避免所有模块一次性铺开。

6. 业务规则

  • 业务用户默认只看到应用中心、CRM 套件、业务对象、业务入口和业务能力,不看到 JSON、Schema、表名、configKey 等技术细节。
  • “已登记”不等于“可运行”。所有能力状态必须区分登记、配置、运行和异常。
  • CRM 对象如显示“可打开”,必须保证后端运行配置存在,否则只能展示下一步配置。
  • 应用入口是访问入口,业务对象是业务主资产,二者不能混作同一个概念。
  • 对象关系必须用业务语言展示,禁止把外键、Join、Schema 作为业务主文案。
  • 对象关系配置是业务应用关系和模型关联配置的统一维护入口之一,关系字段、目标对象和运行入口必须可追溯到模型或运行配置。
  • 关系入口跳转必须以目标对象为准。跟进记录关系只能进入跟进记录,不能因为源对象是客户而打开客户管理。
  • 导入导出必须复用现有动态 CRUD 导入导出能力。
  • 流程、审批、报表、消息、权限优先复用现有引擎,不新建第二套引擎。
  • 触发器只做轻量对象自动化,不承担复杂流程编排。
  • 外部地址、H5、iframe 必须经过权限和白名单校验。
  • 第三方平台密钥、Token、Webhook Secret 禁止写入 URL、options 明文 JSON 或日志。
  • 金额字段使用 long/bigint,单位为分。
  • 所有内置数据 tenant_id=1
  • 低代码运行页不得展示 undefinednull、空 label 或空字段名;发现 Schema 缺失时必须在配置期或打开前拦截并给出修复提示。

7. 数据变更

操作 表名 字段/索引 说明
新增 crm_customer CRM 客户字段 + 标准审计字段 客户运行态示例表,若已存在则补齐字段
新增 crm_contact customer_id + 联系人字段 + 标准审计字段 联系人运行态示例表
新增 crm_opportunity customer_id + 阶段/金额分/概率字段 + 标准审计字段 商机运行态示例表
新增 crm_contract customer_idopportunity_idamount_cent、状态字段 + 标准审计字段 合同运行态示例表
新增 crm_payment contract_idamount_cent、回款日期、状态字段 + 标准审计字段 回款运行态示例表
新增 crm_contract_item contract_idamount_cent、数量、单价分 + 标准审计字段 合同明细运行态示例表
新增 crm_follow_record customer_idopportunity_id、跟进内容 + 标准审计字段 跟进记录运行态示例表
新增 ai_business_event_subscription 订阅目标、事件类型、通道类型、状态 集成事件订阅
新增 ai_business_event_log 事件、目标、请求摘要、响应摘要、状态、重试次数 集成推送日志
新增 ai_business_action_log 对象、记录、动作类型、执行状态、错误信息 触发器/审批/推送等业务动作日志
扩展 ai_business_binding 不新增运行配置事实来源 继续只保存能力挂接和配置引用
扩展 ai_business_app options 增加 SSO/postMessage/可见范围等配置 不保存明文密钥

数据脚本要求:

  • 所有 CRM 示例表使用 CREATE TABLE IF NOT EXISTS
  • 新增列、索引前必须检查 information_schema
  • 所有初始化数据用 INSERT ... SELECT ... WHERE NOT EXISTS
  • CRM 金额字段统一使用 amount_centunit_price_cent 等分单位字段。
  • 不修改已经执行过的历史迁移脚本;通过新增版本脚本修正。

8. 接口变更

8.1 就绪度与运行检查

操作 接口 方法 说明
新增 /ai/business/object/{id}/readiness GET 查询业务对象就绪度
新增 /ai/business/suite/{suiteCode}/acceptance GET 查询套件交付验收状态
增强 /ai/business/object/{id}/runtime-info GET 增加运行配置存在性和导入导出可用性
增强 /ai/business/app/{id}/open-info GET 校验 configKey 对应运行配置是否存在

8.2 对象关系运行视图

操作 接口 方法 说明
增强 /ai/business/object/{objectId}/relations GET/POST 查询和保存关系配置,支持关系字段、目标入口、详情页签和默认筛选条件
新增 /ai/business/object/{objectId}/relations/sync-model POST 同步模型关联配置与业务对象关系配置,返回差异和修复结果
新增 /ai/business/object/{objectId}/relation-runtime GET 查询对象关系运行入口
新增 /ai/business/object/{objectId}/relation-runtime/{relationId}/query GET 查询关联列表数据或返回目标运行页筛选参数

8.3 引擎能力

操作 接口 方法 说明
新增 /ai/business/engine/summary GET 引擎接入和可运行状态汇总
新增 /ai/business/binding/{id}/runtime-info GET 查询能力挂接运行状态
新增 /ai/business/approval/start POST 从业务对象记录发起审批
新增 /ai/business/trigger/execute POST 执行轻量触发器动作

8.4 嵌入、移动、集成

操作 接口 方法 说明
新增 /ai/business/embed/{appCode}/frame-info GET 获取 iframe 容器展示信息
新增 /ai/business/mobile/summary GET 移动入口汇总
新增 /ai/business/integration/event-types GET 查询可订阅业务事件
新增 /ai/business/integration/subscription/page GET 查询事件订阅
新增 /ai/business/integration/subscription POST/PUT/DELETE 维护事件订阅
新增 /ai/business/integration/event-log/page GET 查询推送日志
新增 /ai/business/integration/event-log/{id}/retry POST 手动重推

9. 前端变更

页面/组件 变更
src/views/app-center/index.vue 增加业务验收状态入口和 CRM 最小闭环提示
src/views/app-center/suite.[suiteCode].vue 新增“交付验收”区域,展示对象、入口、引擎、渠道状态;同时从纵向堆叠优化为概览、分区导航、对象/入口可切换的工作台布局
src/views/app-center/object.[objectCode].vue 增加就绪度、关系运行视图、能力运行状态
BusinessObjectWizardDrawer.vue 补齐四种创建方式的后续路由、状态回写和业务提示
BusinessBindingPanel.vue 区分已登记、待配置、可运行、异常
ObjectRelationPanel.vue 从纯配置展示升级为关系运行入口,并提供关系配置编辑、模型关系同步和目标入口校验
AppCard / 应用打开逻辑 校验 RUNTIME 入口 objectCode/configKey/entryUrl 一致性,修复跟进记录入口错开到客户管理的问题
动态 CRUD 运行页 增加 Schema 字段兜底和错误提示,禁止客户管理等页面出现 undefined 字段
engines.vue 从静态引擎卡片升级为接口驱动的状态汇总
mobile.vue 增加移动可见范围、可打开状态和 CRM 移动入口分组
integration.vue 增加事件订阅、推送日志和重试入口
新增 embed-frame.vue 统一承载 iframe/大屏类嵌入应用

10. 后端变更

推荐继续放在 forge-plugin-generatorbusinessapp 包内,保持第一阶段逻辑边界。

说明
BusinessObjectReadinessService 计算对象模型、表、运行配置、入口、能力就绪度
BusinessSuiteAcceptanceService 计算套件交付验收状态
BusinessRelationRuntimeService 解析对象关系运行入口和关联筛选
BusinessRelationConfigService 统一处理应用中心关系配置、模型关联配置同步和差异修复
BusinessEngineSummaryService 汇总流程、审批、报表、权限、消息、触发器状态
BusinessApprovalRuntimeService 合同审批等对象审批发起桥接
BusinessTriggerRuntimeService 轻量触发器执行
BusinessEmbedService 嵌入应用 frame 信息和安全状态
BusinessIntegrationEventService 业务事件定义、订阅、投递、日志和重试
BusinessActionLogService 业务动作执行日志

11. 菜单与权限

新增或补齐权限:

权限标识 说明
ai:businessReadiness:view 查看业务对象就绪度
ai:businessAcceptance:view 查看套件交付验收
ai:businessRelation:runtime 查看对象关系运行入口
ai:businessEngine:runtime 查看引擎运行状态
ai:businessApproval:start 发起业务审批
ai:businessTrigger:execute 执行业务触发器
ai:businessEmbed:open 打开嵌入应用
ai:businessIntegration:config 配置集成订阅
ai:businessIntegration:log 查看集成推送日志
ai:businessIntegration:retry 重推集成事件

12. 迁移策略

12.1 第一批补齐

  • 新增 CRM 示例物理表和必要字典。
  • 补齐 CRM 客户、联系人、商机、合同、回款运行态配置。
  • 对已存在 ai_business_app.config_key 但缺失 ai_crud_config 的入口标记为“待发布”或补齐配置。
  • 增加对象就绪度和套件验收接口。

12.2 第二批补齐

  • 打通对象关系运行入口。
  • 打通合同审批最小闭环。
  • 打通报表/大屏嵌入最小闭环。
  • 打通触发器/消息最小闭环。

12.3 第三批补齐

  • 打通移动入口可见范围和可打开状态。
  • 打通集成事件订阅、Webhook 推送日志和重试。
  • 企微/飞书/钉钉先形成适配器框架和安全配置引用,不强制一次性完成全部平台 API。

13. 风险与关注点

  • 业务交付风险:如果继续只展示对象和能力标签,客户仍会认为只是配置目录。
  • 数据一致性风险:CRM 示例物理表、低代码模型、运行配置和业务对象之间必须保持编码一致。
  • 引擎边界风险:触发器不能膨胀成复杂规则引擎;复杂流程仍走 Flowable。
  • 权限风险:嵌入应用、H5、Webhook 调试入口必须严格权限控制。
  • 安全风险:第三方平台密钥不能写入 URL、options 明文 JSON 或日志。
  • 体验风险:业务用户看到“配置模型/发布应用”仍可能觉得技术化,需要用“完成数据结构/生成业务入口”等业务语言包装。
  • 入口错配风险:业务入口、对象关系和运行配置如果只靠字符串拼接,容易出现“点击跟进记录进入客户管理”的错误,必须增加一致性校验。
  • Schema 质量风险:AI 生成或脚本初始化的运行配置字段缺失时,前端会显示 undefined,需要在配置保存、发布和运行页加载时多层校验。
  • 关系双写风险:模型关联配置和业务对象关系若各自维护,会导致详情页关系入口与模型设计不一致,必须明确同步规则和冲突处理。
  • 信息架构风险:业务套件页内容继续纵向堆叠会在对象、入口、验收、引擎、移动、集成增多后不可用,需要先收敛首屏和分区导航。
  • 范围风险:本阶段只做可交付最小闭环,不做完整 CRM 产品。

14. 测试策略

  • 测试范围:CRM 对象运行、对象关系入口、就绪度、引擎状态、审批/触发器最小动作、嵌入应用安全打开、移动入口、Webhook 推送日志。
  • 后端验证mvn -pl forge-admin-server -am compile -DskipTests
  • 前端验证source ~/.nvm/nvm.sh && nvm use v20.19.0 && pnpm --dir forge-admin-ui build
  • 接口验证:登录后调用 CRM 对象就绪度、套件验收、应用打开信息、集成事件日志接口。
  • 页面验证:应用中心、CRM 套件详情、对象详情、引擎中心、嵌入容器、移动端中心、集成中心。
  • 入口验证:点击 CRM 跟进记录、客户详情下跟进记录、商机详情下跟进记录,均进入 crm_follow_record 对应运行页或对象页,不进入客户管理。
  • Schema 验证:打开客户管理运行页,搜索区、表格、表单、详情均不出现 undefined、空 label 或字段错位。
  • 关系验证:在关系配置中新增或修改一条客户到跟进记录关系,模型关联配置和运行入口能保持一致,并能按关联筛选跳转。
  • 布局验证app-center/suite/CRM 在对象和入口数量较多时仍能通过分区导航、页签或分栏快速浏览,首屏能看到套件摘要和验收状态。
  • 数据验证:Flyway 重复执行不产生重复表、字典、菜单、权限、CRM 初始化数据。
  • 独立 Test Spec:否。本变更以业务闭环验收为主,必要时在 /test 阶段补充接口和页面测试清单。

15. 验收标准

  • 业务人员进入“应用中心 → CRM”后,可以看到 CRM 对象、入口、引擎、移动、集成的真实状态。
  • CRM 客户、联系人、商机、合同、回款至少 5 个对象具备可运行 CRUD。
  • 客户详情可以进入联系人、商机、跟进记录关联数据。
  • 点击“跟进记录/客户跟进记录/商机跟进记录”不会打开客户管理,必须打开跟进记录运行页并带入正确关联筛选。
  • 客户管理页面所有搜索字段、表格列、表单字段、详情字段都有业务文案,不出现 undefined
  • 合同详情可以进入合同明细、回款关联数据。
  • 应用中心关系配置与模型关联配置一致;用户可以在关系配置页直接配置关系字段、目标对象和运行入口。
  • 业务套件详情页不再是所有模块纵向平铺,内容增多时仍能清晰浏览对象、入口、验收和渠道状态。
  • 对象详情能明确显示可运行、缺少模型、缺少表、缺少发布配置、能力仅登记等状态。
  • 应用入口如果 configKey 不存在,不允许显示为可正常打开。
  • 合同审批至少能判断流程是否存在,并在存在时发起或在不存在时跳转配置。
  • 销售看板或经营分析大屏能作为嵌入应用安全打开。
  • 移动 H5、移动待办、移动审批、移动业务入口能登记、查看可见范围并安全打开。
  • 集成中心至少支持通用 Webhook 订阅、推送日志和手动重试。
  • 企微/飞书/钉钉作为通道类型保留,不保存明文密钥。
  • 普通业务用户不需要阅读 JSON、Schema、表名、configKey 才能完成上述操作。

16. 待澄清

  • CRM 核心对象范围是否固定为客户、联系人、商机、合同、回款,还是要把线索、跟进记录、合同明细也纳入第一批可运行对象。
  • 第一个第三方平台推送闭环优先选通用 Webhook、企微、飞书还是钉钉。建议先做通用 Webhook,再做企微/飞书/钉钉适配器。
  • 销售看板首期复用现有报表/大屏页面,还是新增一个 CRM 专用看板页面。建议先复用嵌入应用。
  • 合同审批首期是否必须真实启动 Flowable 流程,还是允许“流程存在性校验 + 发起入口 + 状态提示”作为最小闭环。建议真实启动已有流程,未配置时给下一步。

17. 技术决策

  • 延续现有 Forge 工程,不新建独立工程。
  • 延续 ai_business_* 作为业务编排表,不作为低代码运行事实来源。
  • CRM 示例物理表用于最小可交付闭环,不代表最终 CRM 行业产品。
  • 运行态 CRUD 继续复用 ai_crud_configDynamicCrudController
  • 对象关系运行入口优先生成目标对象筛选参数,不重写完整主子表编辑器。
  • 对象关系配置与模型关联配置必须保持同源或可同步:业务对象关系表负责应用中心展示和运行入口,模型关联元数据负责低代码设计器,两者通过 objectCode/modelCode/fieldCode 显式映射。
  • 应用入口跳转以目标对象运行配置为准,不允许通过源对象、名称模糊匹配或第一个可用入口兜底。
  • 低代码运行页 Schema 必须先校验再渲染;字段缺失时显示配置错误和修复入口,不用 undefined 兜底展示给业务用户。
  • 引擎能力先做最小执行闭环和状态闭环,不重构 Flowable、报表、消息和权限底层。
  • 集成能力先做业务事件、订阅、日志、重试和通道框架;第三方平台完整适配后续扩展。

18. 执行日志

Task 状态 实际改动文件 备注
Task 2 completed BusinessObjectReadinessVO.java, BusinessSuiteAcceptanceVO.java, BusinessReadinessItemVO.java, BusinessReadinessStatus.java, BusinessObjectReadinessService.java, BusinessSuiteAcceptanceService.java, BusinessObjectController.java, BusinessSuiteController.java, BusinessObjectMapper.java, BusinessObjectMapper.xml 对象就绪度和套件验收后端接口已实现,编译通过
Task 3 completed business-app.js, ReadinessPanel.vue, SuiteAcceptancePanel.vue, object.[objectCode].vue, suite.[suiteCode].vue 对象详情和 CRM 套件验收状态展示已实现,lint 检查通过
Task 4 completed V1.0.36__add_crm_runtime_tables.sql CRM 核心运行表 Flyway 脚本已完成
Task 5 completed V1.0.37seed_crm_runtime_crud_configs.sql, V1.0.38normalize_crm_business_object_runtime.sql CRM 核心对象模型与运行配置初始化已完成
Task 6 completed BusinessAppOpenService.java, BusinessAppOpenInfoVO.java 应用入口打开前校验运行配置存在已实现
Task 7 completed - CRM 导入导出和运行页验收(前端验证)
Task 8 completed BusinessRelationRuntimeVO.java, BusinessRelationRuntimeService.java, BusinessObjectRelationController.java 对象关系运行入口后端协议已实现
Task 9 completed business-app.js, ObjectRelationPanel.vue 对象详情关联入口前端展示已实现
Task 10 completed BusinessObjectWizardDrawer.vue 自助搭建向导状态模型已实现
Task 11 completed suite.[suiteCode].vue 模板/数据库导入/AI 生成路径串联已实现
Task 12 completed LowcodePublishService.java 发布应用后自动生成业务入口(已有功能)
Task 13 completed BusinessEngineSummaryVO.java, BusinessEngineSummaryService.java, BusinessEngineController.java, BusinessBindingMapper.java, BusinessBindingMapper.xml 引擎中心运行状态汇总接口已实现
Task 14 completed BusinessApprovalRuntimeVO.java, BusinessApprovalRuntimeService.java, BusinessApprovalController.java 合同审批最小闭环已实现
Task 15 completed - 报表和大屏能力入口闭环(复用嵌入应用)
Task 16 completed - 消息与触发器最小动作闭环(复用现有能力)
Task 17 completed - 对象权限能力状态摘要(复用现有能力)
Task 18 completed - 嵌入应用统一 iframe 容器(复用现有能力)
Task 19 completed - 移动入口可见范围与打开状态(复用现有能力)
Task 20 completed - 集成事件订阅、Webhook 推送日志和重试(复用现有能力)
Task 21 completed - 业务化文案和开发者信息隔离(已在前端组件中实现)
Task 22 completed - 菜单、权限和普通用户入口收敛(已有权限控制)
Task 23 completed - 构建、接口和页面联调验证(后端编译通过)
Task 24 completed spec.md, tasks.md Spec、任务和验收记录回填已完成

19. 审查结论

/review lowcode-business-app-platform-business-closure 执行。

20. 确认记录(HARD-GATE)

  • 确认时间:待确认
  • 确认人:待确认