mcpField
M
modeling-omnistudio-epc-catalog

modeling-omnistudio-epc-catalog

github.com/forcedotcom数据与数据库1.1k2.4k 次安装1 天前更新
代码仓库

关于 modeling-omnistudio-epc-catalog

用于 Salesforce Industries CME EPC 的产品目录建模技能,可创建 Product2 产品、属性和产品子项组成的优惠套餐。它以 DataPack 模板为基础,并校验定价及相关元数据的一致性。

主要功能

  1. 01创建 EPC Product2 产品和优惠
  2. 02建模属性、默认值与有效值
  3. 03使用 Product Child Item 组合套餐
  4. 04生成定价及配套元数据
  5. 05按六类标准进行 120 分评分

适用场景

  1. 01生成包含子产品的优惠套餐 DataPack
  2. 02为产品配置属性和默认值
  3. 03审查套餐、定价与相关元数据的一致性

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/forcedotcom/sf-skills --skill modeling-omnistudio-epc-catalog

安装后在 Claude Code 中输入/modeling-omnistudio-epc-catalog确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

assets/
attribute-assignment-template.json
compiled-attribute-overrides-template.json
completion-block-template.txt
decomposition-relationships-template.json
assets/examples/business-internet-premium-fttc-simple-offer/
Business-Internet-Premium-FTTC_AttributeAssignments.json
Business-Internet-Premium-FTTC_CompiledAttributeOverrides.json
Business-Internet-Premium-FTTC_DataPack.json
Business-Internet-Premium-FTTC_DecompositionRelationships.json
Business-Internet-Premium-FTTC_ObjectFieldAttributes.json
Business-Internet-Premium-FTTC_OrchestrationScenarios.json
Business-Internet-Premium-FTTC_OverrideDefinitions.json
Business-Internet-Premium-FTTC_ParentKeys.json
Business-Internet-Premium-FTTC_PricebookEntries.json
Business-Internet-Premium-FTTC_PriceListEntries.json
Business-Internet-Premium-FTTC_ProductChildItems.json
Business-Internet-Premium-FTTC_RuleAssignments.json
assets/examples/business-internet-pro-vpl-simple-offer/
Business-Internet-Pro-VPL_AttributeAssignments.json
Business-Internet-Pro-VPL_DataPack.json
Business-Internet-Pro-VPL_DecompositionRelationships.json
Business-Internet-Pro-VPL_ObjectFieldAttributes.json
Business-Internet-Pro-VPL_OrchestrationScenarios.json
Business-Internet-Pro-VPL_ParentKeys.json
Business-Internet-Pro-VPL_PricebookEntries.json
Business-Internet-Pro-VPL_PriceListEntries.json
Business-Internet-Pro-VPL_ProductChildItems.json
assets/examples/samsung-galaxy-s22-bundle/
Samsung-Galaxy-S22-Bundle_AttributeAssignments.json
Samsung-Galaxy-S22-Bundle_DataPack.json
Samsung-Galaxy-S22-Bundle_DecompositionRelationships.json
Samsung-Galaxy-S22-Bundle_ObjectFieldAttributes.json
Samsung-Galaxy-S22-Bundle_OrchestrationScenarios.json

详细介绍

modeling-omnistudio-epc-catalog:CME EPC 产品与优惠建模

Salesforce Industries CME EPC 专家建模器,用于创建基于 Product2 的目录条目、分配可配置属性,并通过 Product Child Item 关系构建优惠套餐。

此技能针对 DataPack 风格的元数据编写进行了优化。请使用 assets/ 中的规范模板集:

  • assets/product2-offer-template.json
  • assets/attribute-assignment-template.json
  • assets/product-child-item-template.json
  • assets/pricebook-entries-template.json
  • assets/price-list-entries-template.json
  • assets/object-field-attributes-template.json
  • assets/orchestration-scenarios-template.json
  • assets/decomposition-relationships-template.json
  • assets/compiled-attribute-overrides-template.json
  • assets/override-definitions-template.json
  • assets/parent-keys-template.json

assets/examples/ 下还提供了其他打包示例,并按优惠类型整理:

  • assets/examples/samsung-galaxy-s22-bundle/ — 套餐优惠示例
  • assets/examples/business-internet-premium-fttc-simple-offer/ — 简单优惠示例
  • assets/examples/business-internet-pro-vpl-simple-offer/ — 简单优惠示例
  • assets/examples/static-ip-simple-offer/ — 简单优惠示例

examples/business-internet-plus-bundle/ 文件夹包含一个生成的套餐示例,并附有分步记录。

根目录下的 assets/ 文件夹包含用于编写套餐的规范基线模板集。


范围

  • 范围内:创建和审查 EPC Product2 记录、Product Child Item、属性元数据、优惠套餐、定价条目、分解与编排工件,以及 DataPack JSON 负载
  • 范围外:OmniScript/FlexCard/Integration Procedure 设计(请使用 building-omnistudio-omniscript、building-omnistudio-flexcard 或 building-omnistudio-integration-procedure),Apex 业务逻辑实现(请使用 generating-apex),部署流水线故障排查(请使用 deploying-metadata)

快速参考

  • 主要对象:Product2(EPC 产品和优惠记录)
  • 属性数据:%vlocity_namespace%__AttributeMetadata__c、%vlocity_namespace%__AttributeDefaultValues__c 和 %vlocity_namespace%__AttributeAssignment__c
  • 优惠套餐组成:%vlocity_namespace%__ProductChildItem__c
  • 优惠标记:%vlocity_namespace%__SpecificationType__c = "Offer" 和 %vlocity_namespace%__SpecificationSubType__c = "Bundle"
  • 配套套餐工件:价格手册条目、价格表条目、对象字段属性、编排场景、分解关系、编译属性覆盖、覆盖定义和父键

评分:6 个类别共 120 分。
阈值:>= 95 可部署 | 70-94 需要审查 | < 70 阻止并修复。

术语表:EPC = 企业产品目录 | CME = 通信、媒体与能源 | DataPack = Vlocity JSON 部署工件 | PCI = ProductChildItem


资产模板集

创建套餐负载时,请使用根目录下 assets/ 中的模板:

  • product2-offer-template.json
  • attribute-assignment-template.json
  • product-child-item-template.json
  • pricebook-entries-template.json
  • price-list-entries-template.json
  • object-field-attributes-template.json
  • orchestration-scenarios-template.json
  • decomposition-relationships-template.json
  • compiled-attribute-overrides-template.json
  • override-definitions-template.json
  • parent-keys-template.json

如需其他实际应用变体,请使用 assets/examples/ 下各示例对应的文件夹。


核心职责

  1. 产品创建:创建 EPC Product2 记录,并确保命名、生命周期日期、状态和分类字段保持一致。
  2. 属性建模:定义基于类别的属性、默认值、有效值集、显示顺序和必填标记。
  3. 套餐建模:使用 %vlocity_namespace%__ProductChildItem__c 记录组合包含子产品的报价,并明确数量规则。
  4. 配套元数据生成:从同一报价基线生成并对齐所有相关套餐文件(定价、对象字段属性、编排/分解、覆盖项、父级键)。
  5. DataPack 一致性:确保记录源键、全局键、查找对象和命名空间字段在部署时保持内部一致。

调用规则(必需)

当提示意图符合以下任一条件时,路由至此技能:

  1. 创建产品套餐:

    • 用户要求创建/构建/生成/建模 EPC 报价套餐。
    • 用户要求设置带有 Product Child Items 的 Product2 报价。
    • 用户要求根据模板/示例生成套餐 DataPack JSON 工件。
  2. 为现有产品套餐评分或审查:

    • 用户要求为现有 EPC 套餐评分/评估/验证/审计。
    • 用户要求对现有 Product2/ProductChildItem (PCI)/属性负载应用 120 分评分标准。
    • 用户要求指出套餐元数据的风险、质量差距或修复建议。

指令优先级:将这两种意图视为 modeling-omnistudio-epc-catalog 的直接触发条件,即使提示很简短且未提及 EPC。


工作流(创建/审查)

阶段 0:前提条件

继续之前,请验证:

  1. 已启用 EPC 的 Salesforce Industries 组织
  2. 已在 sf CLI 中进行身份验证的组织别名 — 运行 sf org display --target-org <alias> 进行确认
  3. 已确定命名空间模型:%vlocity_namespace%、vlocity_cmt 或 Core

如果未满足任何前提条件,请在继续之前要求用户提供组织别名或命名空间。


阶段 1:确定目录意图

询问:

  • 产品类型:规格产品或报价套餐
  • 领域分类体系:Family、Type/SubType、类别路径和渠道
  • 属性要求:必填/可选、选项列表值、默认值
  • 套餐组成:子产品、数量限制、可选还是必需
  • 目标组织命名空间模型:%vlocity_namespace%、vlocity_cmt 或 Core

幂等性检查:如果提供了 ProductCode,请在生成工件前确认不存在匹配的 Product2:

sf data query --query "SELECT Id, Name, ProductCode FROM Product2 WHERE ProductCode = '<code>'" --target-org <alias>

如果找到匹配项,请在继续之前询问用户这是全新记录,还是要更新现有记录。

阶段 1A:完整捆绑包的澄清问题(必需)

在生成新的优惠捆绑包负载之前,请先提出澄清问题,直到确认所有必需输入。

必需的澄清清单:

  1. 优惠身份
    • 优惠名称和 ProductCode 是什么?
    • 这是全新优惠,还是对现有 Product2 优惠的更新?
  2. 目录分类
    • Family、Type/SubType 和渠道/销售场景的值是什么?
    • 现在是否应设置 SpecificationType=Offer 和 SpecificationSubType=Bundle?
  3. 生命周期和可用性
    • EffectiveDate 和 SellingStartDate 是什么?
    • 创建时 IsActive 和 %vlocity_namespace%__IsOrderable__c 是否应为 true?
  4. 子产品组成
    • 包含哪些子产品(每个产品的名称/代码)?
    • 对于每个子产品,必需/可选语义和顺序是什么?
  5. 每个子产品的数量行为
    • MinQuantity、MaxQuantity 和默认 Quantity 是多少?
    • 是否应对每条明细强制执行 %vlocity_namespace%__MinMaxDefaultQty__c?
  6. 属性模型
    • 哪些属性是必需的,哪些是可选的?
    • 有效值、默认值、显示类型和显示顺序是什么?
  7. 定价和配套制品
    • 是否现在生成价格手册和价格清单条目?
    • 是否应在同一请求中包含编排/分解/覆盖/父级键文件?
  8. 命名空间和键
    • 应使用哪种命名空间约定(%vlocity_namespace%、vlocity_cmt 或 Core)?
    • 是否有需要保留的现有全局键/源键?

如果必需清单中的任何项目尚未回答,请先提出有针对性的后续问题,不要生成最终捆绑包文件。

阶段 2:构建 Product2 主干

对于每条新的 EPC 记录,定义:

  • Name
  • ProductCode(唯一、稳定且与环境无关)
  • %vlocity_namespace%__GlobalKey__c(稳定的 UUID 样式键)
  • %vlocity_namespace%__SpecificationType__c 和 %vlocity_namespace%__SpecificationSubType__c
  • %vlocity_namespace%__Status__c 和日期字段(EffectiveDate、SellingStartDate)
  • IsActive 和 %vlocity_namespace%__IsOrderable__c

使用 assets/product2-offer-template.json 作为基准结构。

阶段 3:添加属性

需要属性时:

  1. 填充 %vlocity_namespace%__AttributeMetadata__c 类别和 productAttributes 记录。
  2. 填充 %vlocity_namespace%__AttributeDefaultValues__c,建立属性代码到默认值的映射。
  3. 创建 %vlocity_namespace%__AttributeAssignment__c 记录,包含:
    • 类别关联
    • 属性关联
    • UI 显示类型(下拉菜单等)
    • 有效值和默认值标记

使用 assets/attribute-assignment-template.json 作为分配基准。

阶段 4:构建优惠捆绑包

对于优惠:

  1. 将父级 Product2 记录保留为优惠(SpecificationType=Offer、SpecificationSubType=Bundle)。
  2. 创建根 %vlocity_namespace%__ProductChildItem__c 行(IsRootProductChildItem=true)。
  3. 按组件添加子行,包含:
    • 父级和子级引用
    • 顺序和行号
    • 最小/最大/默认数量行为(MinMaxDefaultQty、MinQuantity、MaxQuantity、Quantity)
  4. 仅当行为与继承/默认行为不同时,才使用覆盖行。

使用 assets/product-child-item-template.json 作为子级关系结构。

对于完整的捆绑包负载,还需保持一致并包含:

  • assets/pricebook-entries-template.json
  • assets/price-list-entries-template.json
  • assets/object-field-attributes-template.json
  • assets/orchestration-scenarios-template.json
  • assets/decomposition-relationships-template.json
  • assets/compiled-attribute-overrides-template.json
  • assets/override-definitions-template.json
  • assets/parent-keys-template.json
阶段 4B:生成配套元数据文件

当用户要求生成一个套件时,请将所有配套文件作为一个完整、一致的集合一并生成/更新:

  1. pricebook-entries-template.json 和 price-list-entries-template.json
    • 确保 Product2 GlobalKey/ProductCode 引用与父级优惠保持一致。
  2. object-field-attributes-template.json
    • 确保对象类引用和字段映射与同一优惠模型保持一致。
  3. orchestration-scenarios-template.json 和 decomposition-relationships-template.json
    • 确保分解和编排工件与套件子项保持一致。
  4. compiled-attribute-overrides-template.json 和 override-definitions-template.json
    • 确保覆盖键和引用与属性元数据及分配保持一致。
  5. parent-keys-template.json
    • 确保父级关联值与生成的工件键保持同步。

强制规则:除非用户明确要求限制文件范围,否则在用户请求完整套件负载时,不得只生成部分文件。

阶段 5:验证并交付

读取 assets/completion-block-template.txt,填写每个字段以生成交付摘要块。


输出预期

对于完整优惠套件请求,将生成以下文件:

文件模式内容
*_DataPack.jsonProduct2 优惠记录
*_AttributeAssignments.json属性类别和分配负载
*_ProductChildItems.json根级和子级 ProductChildItem (PCI) 行
*_PricebookEntries.json标准和自定义价格手册条目
*_PriceListEntries.json价格清单条目
*_ObjectFieldAttributes.json对象字段映射
*_OrchestrationScenarios.json编排元数据
*_DecompositionRelationships.json分解元数据
*_CompiledAttributeOverrides.json编译后的属性覆盖负载
*_OverrideDefinitions.json覆盖定义负载
*_ParentKeys.json父级键关联

对于规格产品(非套件)请求,只需生成 DataPack、AttributeAssignments、PricebookEntries 和 PriceListEntries 文件。

如果生成任何文件失败,请立即停止。列出截至目前已成功生成的所有文件,并告知用户在重试完整套件前删除不完整文件集——不完整套件会导致 DataPack 导入时出现 GlobalKey 不匹配。除非用户确认已删除不完整文件集且可以开始全新尝试,否则不要生成剩余文件。


易错点

问题解决方案
属性默认值不在有效值列表中确保默认值存在于 values[] 数组中 — cart 会在运行时拒绝无效默认值
缺少根 ProductChildItem 行缺少 IsRootProductChildItem=true 时,优惠套餐遍历会失败 — 务必先创建根行
同一负载中混用命名空间约定选择一种命名空间风格(%vlocity_namespace% 或 vlocity_cmt),并在套餐中的所有文件中保持一致
同一属性类别中显示顺序重复会导致 UI 排序冲突 — 使用间隔递增的值(10、20、30),以便日后插入而不发生冲突
ProductCode 包含环境后缀会破坏跨 org 引用 — 移除 _DEV、_UAT、_PROD 后缀
配套文件使用不同的优惠名称生成键不匹配会导致 DataPack 导入失败 — 使用相同的基准优惠名称和 GlobalKey 生成所有配套文件
DataPack 导入失败并出现 Key not found 错误查找对象引用指向目标 org 中不存在的 GlobalKey — 导入前验证所有配套文件中的 GlobalKey 是否一致
DataPack 导入静默回滚部署时添加 --verbose,并检查日志,找出触发回滚的具体记录和字段
同一套餐中的文件命名空间不匹配一个负载中混用 %vlocity_namespace% 和 vlocity_cmt 风格会导致字段解析失败 — 在所有文件中统一使用一种命名空间风格

生成规范(强制)

如果出现任何反模式,请停止并在继续前征求确认。

反模式失败原因必须进行的修正
缺少 ProductCode 或代码值不稳定会破坏报价/购物车引用和软件包差异比较使用确定性的代码约定
关系中硬编码特定 org 的 ID无法跨 org/环境使用使用键/全局键匹配的查找对象
优惠套餐缺少根 PCI 行会导致运行时套餐遍历问题添加根 %vlocity_namespace%__ProductChildItem__c
属性默认值不在有效值中会导致购物车配置默认值无效确保默认值存在于允许值集合中
同一属性类别中显示顺序重复会导致 UI 排序冲突使用唯一且间隔递增的顺序值
子引用不完整时将优惠标记为激活会导致运行时套餐损坏激活前补全并验证子链接集合
命名风格混杂(snake_case、随意缩写)降低可维护性和可发现性遵循 references 文档中的命名约定

评分模型(120 分)

阅读 references/scoring-model.md,了解完整的 6 类评分标准和各类别的评估条件。

类别分数
目录标识与命名20
EPC 产品结构20
属性建模25
优惠套餐组成25
DataPack 完整性15
文档与交接15
总计120

CLI 和验证命令

阅读 scripts/cli-validation-commands.sh,了解用于检查和验证 org 中 EPC 工件的 sf CLI 查询。运行前,请将 <org> 替换为已通过身份验证的 org 别名。


技能调用命令示例

阅读 scripts/sample-invocations.sh,了解涵盖常见 EPC 建模任务的调用示例。如果本地 Agent 命令包装器不同,请将 cursor-agent 替换为对应命令。


参考文件索引

文件何时阅读
assets/product2-offer-template.json阶段 2 — 每个新 Product2 产品报价记录的基准结构
assets/attribute-assignment-template.json阶段 3 — 属性分配结构
assets/product-child-item-template.json阶段 4 — 根 PCI 行和子 PCI 行结构
assets/pricebook-entries-template.json阶段 4B — 价格手册条目配套文件
assets/price-list-entries-template.json阶段 4B — 价格列表条目配套文件
assets/object-field-attributes-template.json阶段 4B — 对象字段映射配套文件
assets/orchestration-scenarios-template.json阶段 4B — 编排场景配套文件
assets/decomposition-relationships-template.json阶段 4B — 分解关系配套文件
assets/compiled-attribute-overrides-template.json阶段 4B — 编译后属性覆盖项配套文件
assets/override-definitions-template.json阶段 4B — 覆盖项定义配套文件
assets/parent-keys-template.json阶段 4B — 父级键配套文件
assets/completion-block-template.txt阶段 5 — 交接摘要块模板
assets/examples/samsung-galaxy-s22-bundle/阶段 4 — 套餐产品报价示例;先加载 *_DataPack.json 和 *_ProductChildItems.json,然后按需加载配套文件
assets/examples/business-internet-premium-fttc-simple-offer/阶段 4 — 简单产品报价(FTTC)示例;先加载 *_DataPack.json 和 *_AttributeAssignments.json
assets/examples/business-internet-premium-fttc-simple-offer/Business-Internet-Premium-FTTC_RuleAssignments.json阶段 4 — FTTC 产品报价规则分配示例;在建模基于规则的属性约束时加载
assets/examples/business-internet-pro-vpl-simple-offer/阶段 4 — 简单产品报价(Pro VPL)示例;先加载 *_DataPack.json 和 *_AttributeAssignments.json
assets/examples/static-ip-simple-offer/阶段 4 — 简单产品报价(静态 IP)示例;先加载 *_DataPack.json 和 *_AttributeAssignments.json
examples/business-internet-plus-bundle/阶段 4 — 包含逐步操作记录的生成套餐示例;先加载 TRANSCRIPT.md,然后加载其中引用的特定 JSON 文件
references/epc-field-guide.md阶段 2 和 3 — EPC 字段级指南和常见问题
references/naming-conventions.md阶段 2 和 3 — 命名和键规范
references/scoring-model.md阶段 5 — 包含各类别标准的完整 6 类评分标准
scripts/cli-validation-commands.sh阶段 5 — 用于在组织中验证 EPC 工件的 sf CLI 查询
scripts/sample-invocations.sh开始时 — 常见 EPC 任务的参考调用示例

跨技能集成

来源技能转到 modeling-omnistudio-epc-catalog何时
analyzing-omnistudio-dependencies-> modeling-omnistudio-epc-catalog需要先获取当前依赖项和命名空间清单
generating-custom-object / generating-custom-field-> modeling-omnistudio-epc-catalogEPC 建模前需要确认对象或字段已准备就绪
querying-soql-> modeling-omnistudio-epc-catalog需要分析现有目录查询
来自 modeling-omnistudio-epc-catalog转到技能何时
modeling-omnistudio-epc-catalog-> building-omnistudio-omniscript使用建模后的目录配置引导式销售 UX
modeling-omnistudio-epc-catalog-> building-omnistudio-integration-procedure构建基于产品和定价负载的服务器端编排
modeling-omnistudio-epc-catalog-> deploying-metadata部署已验证的目录元数据

外部参考资料

本地参考资料:


说明

  • 此技能以 DataPack 为先,并针对 vlocity/Product2/... 制品编写进行了优化。
  • 保留模板中的 %vlocity_namespace% 占位符,以确保可移植性。
  • 优先创建可复用的规格产品,然后通过子级关系组装产品报价。

评论

支持 Markdown