mcpField
O
omnistudio-epc-catalog-generate

omnistudio-epc-catalog-generate

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

关于 omnistudio-epc-catalog-generate

面向 Salesforce Industries CME EPC 建模人员,用于创建或审查 Product2 目录记录与 Offer 套餐。技能以标准 DataPack 模板为基础,并检查产品、属性、定价和套餐元数据的一致性。

主要功能

  1. 01编写 Product2 目录记录
  2. 02建模属性与默认值
  3. 03通过子项构建 Offer 套餐
  4. 04生成配套定价与元数据文件
  5. 05检查 DataPack 一致性

适用场景

  1. 01生成 EPC Offer 套餐负载
  2. 02设置产品属性与有效值
  3. 03审查套餐元数据风险
  4. 04协调定价与编排产物

安装

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

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

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

包含的文件

除 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

详细介绍

omnistudio-epc-catalog-generate: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 设计(请使用 omnistudio-omniscript-generate、omnistudio-flexcard-generate 或 omnistudio-integration-procedure-generate)、Apex 业务逻辑实现(请使用 platform-apex-generate)、部署流水线故障排查(请使用 platform-metadata-deploy)

快速参考

  • 主要对象: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 套餐评分/评估/验证/审计。
    • 用户要求将 120 分制评分标准应用于现有 Product2/ProductChildItem (PCI)/属性负载。
    • 用户要求指出套餐元数据的风险、质量差距或修复建议。

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


工作流(创建/审查)

阶段 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 — 简单产品报价(Static 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 — 用于在 org 中验证 EPC 产物的 sf CLI 查询
scripts/sample-invocations.sh开始时 — 常见 EPC 任务的参考调用示例

跨技能集成

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

外部参考资料

本地参考资料:


说明

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

评论

支持 Markdown