You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
4.1 KiB
4.1 KiB
08 方案推送规则模块(crm-rule 全缺码补齐)
Type: task Status: resolved(2026-09-07) Blocked by: 06
Question
按 gap-report 拍板 P0,新建方案推送规则模块(素材 matrix-a7-3-upper.md §推送规则,端点族同构 OpportunityStageTemplate):
/api/rule/opp-push-rule下 8 端点:page / detail / save-draft / publish / copy / disable / delete / versions——版本化状态机复用既有实现模式(同族唯一草稿+唯一发布中、发布后原版转停用、复制=独立新编码 V1.0 草稿、仅草稿可删)。- DTO 字段(截图提取):ruleCode PUSH_RULE_XX / ruleName / versionNo / status / applyScope(两档+条件式档可选)/ ruleDesc + 4 步骤配置 JSON:
- ①基础推送信息:推送节点名称、方案卡模板引用(锁定模板版本)
- ②字段校验:规则列表[{字段名称/字段来源/字段类型/校验规则/失败处理方式}]
- ③字段映射:[{字段名称/对应字段/推送方式}]
- ④创建/关联项目:创建方式(自动/交互/关联已有)、重复规则引用(引用查重规则并锁定版本,为票 09 的引用来源)、名称规则、备注变量
- Controller tag 直接写对:「A7 后台管理/业务规则/商机规则/方案推送规则」。
- bruno-sync.config.json 不需加 sourceRoots(crm-rule 已含);确认 menuBindings。
Answer
resolved(2026-09-07)。8 端点全落地,V-CONFIG 第四实例(extends {@link VersionedConfigSupport} 同款状态机)。
落地清单(crm-rule,10 文件):
- 实体
OpportunityPushRule(表 opportunity_push_rule:rule_code/rule_name/version_no/status/apply_scope/condition_type/condition_value/is_default/rule_desc/push_config text)+ Mapper - DTO(内嵌
PushConfig4 步骤结构化对象:BasicInfo/FieldValidationItem/FieldMappingItem/ProjectCreation)/ VersionDTO(D-22 剥审计)/ PageParam IOpportunityPushRuleService+ Impl(无运行时查询缝:执行侧未建)- Controller
/api/rule/opp-push-rule8 端点(page/detail/save-draft/publish/copy/disable/delete/versions)+ 深 tag「A7 后台管理/业务规则/商机规则/方案推送规则」 OpportunityPushRulePermissionInitializer(@Order(21) 仅菜单,「商机管理/方案推送规则」)OpportunityRuleConstants追加:前缀 PUSH_RULE_ / 适用范围 1,2 / 创建方式三值 / 错误码 64025–64030
关键裁决与语义偏差存证:
- 适用范围两档 = 1全部商机 / 2条件式(非阶段模板的部门档语义):条件式档必填 conditionType+conditionValue(原型示例「项目阶段='投标阶段'」存 condition_value;条件字段值域归前端配置器,服务层不强校验字典)。
- 推送配置 4 步骤单 push_config JSON 列(无子表):DTO 结构化出入参 ⇄ 服务层 ObjectMapper 序列化;序列化失败拒绝保存、反序列化失败防御为空不阻塞浏览;page 不回显(大 JSON 不进列表,明细走 detail);方案卡引用锁版本行 id(V-CONFIG 11 同款)、查重规则引用 dedupRuleId 为票 09 引用来源(票 09 落地后补存在性校验)。
- 发布校验:步骤①必配 + 方案卡模板引用版本行存在 + 同名称发布中唯一(跨规则编码族——原型「同族同名单版本间不可重复」的落地解读,64029)+ 创建方式三值域(64030)。
- 默认顶替分组收敛:同 applyScope(条件式含同 conditionType+conditionValue)内发布中默认唯一,异于阶段模板全局唯一(原型「同适用范围中设默认」)。
- 执行次数不出参:按版本累计、执行侧归商机域未建(同构票 06「绑定商机」列已知裁决),执行侧落地后补统计源与运行时查询缝。
- bruno-sync:crm-rule 已在 sourceRoots(未动);menuBindings 无商机规则条目(同阶段模板/方案卡模板口径,未加)。
- 验收:BOM 117 文件 0 / compile EXIT=0 / crm-rule 175 测试全绿(新增
OpportunityPushRuleServiceImplTest23 个规格验证)/ 未提交 git。