关于 consumer-goods-rtr-datacloud-export-configure
用于配置 Salesforce Retailer Transactional Reporting 向 Data Cloud 导出促销指标的技能。它处理权限和同步检查、逐销售组织配置及导出状态跟踪,并在修改或同步数据流前要求确认。
主要功能
- 01配置促销指标导出
- 02检查权限和系统设置
- 03创建或复用逐组织配置
- 04触发并监控导出
- 05报告各阶段状态与阻塞项
适用场景
- 01为销售组织准备 Data Cloud 导出
- 02配置促销指标报告
- 03跟踪多个销售组织的导出完成状态
- 04发现因缺少值而受阻的设置步骤
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ forcedotcom/ sf-skills --skill consumer-goods-rtr-datacloud-export-configure安装后在 Claude Code 中输入/consumer-goods-rtr-datacloud-export-configure确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/inputs-and-namespace.mdprocedure.mdscripts/detect-namespace.jsrender-apex.jsresolve-id-by-name.jssf-rest.jssoql-escape.jsupsert-report-config.apexupsert-system-setting.apex详细介绍
设置 RTR Data Cloud 导出
配置面向 Data Cloud 的 RTR 导出:Data_Cloud_Enabled 系统设置、范围限定的 SF Data Sync、用于 Data Cloud 导出的 RTR_Report_Configuration__c 记录(含其 KPI_Set__c),以及导出触发/状态/中止 REST 调用。此流程独立且自包含:可单独运行,也可作为委派步骤由 consumer-goods-tpe-dashboard-configure 调用;调用方会传入其已收集的用户名、试运行标志和 GenieAdmin 确认结果。
这不同于同一 org 检出内容中可能存在的 CSV 导出 RTR 同级技能:该技能针对 Usage__c IN ('integrationmeta','reportmeta'),将 CSV 导出到 CGCloud Processing Services 主机。本技能针对 Data Cloud 导出。两者使用相同的底层 RTR_Report_Configuration__c 对象和 KPI_Set__c Apex 模式,但 Usage__c 值和 JSON__c 结构不同;本技能不会调用或依赖该同级技能。
目前,本技能仅支持 Usage__c = 'datacloudpromotionmeasuresmeta'(JSON__c.object = "promotionmeasures")——该值是硬编码的,不会作为输入询问。datacloudaccountplanmeasuresmeta(account-plan measures)尚未接入。
输入和命名空间检测
开始前,请阅读 references/inputs-and-namespace.md。其中介绍了:
- 第 1 阶段前必须收集(或由调用技能传入)的用户名/试运行/GenieAdmin/TPM-Admin/命名空间输入。
- 第 6 阶段按 Sales Org 收集的 Sales Org/KPI Set/度量代码/起始日期输入;仅当现有配置检查结果为空时,才会收集这些输入。
- 命名空间检测流程(
scripts/detect-namespace.js),以及下方各阶段中使用的四种派生值NS/NS_SEGMENT/NS_APEX/NS_FIELD。 scripts/render-apex.js(Apex 模板渲染)和scripts/resolve-id-by-name.js(名称到 ID 的查询)都会加载scripts/soql-escape.js,以转义替换或查询的字面值,确保 SOQL/Apex 插值安全。
阶段
各阶段的完整分步命令、查询和 Apex 模板见 references/procedure.md。请按顺序执行各阶段。
| 阶段 | 摘要 |
|---|---|
| 1 | 验证/分配 GenieAdmin 权限集;确认已分配 TPM Admin persona。 |
| 2 | 通过匿名 Apex 更新 Data_Cloud_Enabled 系统设置;确认写入成功。 |
| 3 | 记录基线 Batch_Run_Status__c ID 后,针对 System_Setting__c 触发范围限定的 SF Data Sync。 |
| 4 | 轮询/验证同步是否完成(Done/Error/Fatal/Running)。 |
| 5 | 验证 Usage__c 上是否存在 datacloudpromotionmeasuresmeta 选项值——若不存在,则停止并让用户前往 Setup(没有可通过编程方式进行的修复)。 |
| 6 | 逐个处理 Sales Org:解析 Sales Org 名称 → ID,复用现有 RTR_Report_Configuration__c,或收集 KPI Set/度量代码/起始日期并创建一条记录;如有更改则进行同步,然后询问是否添加其他 Sales Org。 |
| 7 | 第 6 阶段的循环全部完成后,通过 scripts/sf-rest.js 为每个已配置的 Sales Org 触发一次导出(绝不使用 sf api request rest);将 requestId 记录为导出 guid。 |
| 8 | 通过 scripts/sf-rest.js 轮询每个 Sales Org 的导出状态(Ready/Error/Aborted/Queued/InProgress)。 |
| 9 | 所有 Sales Org 均完成轮询后,请用户自行同步 promotionmeasures Data Cloud Data Stream,并明确确认同步已完成——本技能绝不会触发该同步。 |
| 10 | 仅当用户明确要求时,通过 scripts/sf-rest.js 中止正在进行的导出。 |
| 11 | 按阶段报告通过/受阻/待处理状态。 |
规则
- 未经用户明确同意,绝不分配权限集、写入记录或触发同步/导出。
- 绝不猜测或硬编码
Batch_Name__c——根据捕获的基线 Id,按时间新近程度识别同步的Batch_Run_Status__c行,并记录完整的行集。 - 绝不尝试以编程方式添加缺失的
Usage__c选项列表值——用户必须通过 Setup 手动添加(链接见第 5 阶段的references/procedure.md)。 - 绝不询问 Usage 类型——此技能目前将
Usage__c = 'datacloudpromotionmeasuresmeta'/JSON__c.object = "promotionmeasures"硬编码。 - 如果请求的导出类型不是推广措施(例如
datacloudaccountplanmeasuresmeta/客户计划措施),说明此限制,然后停止,或询问用户是否要为该 Sales Org 改为导出推广措施。对于不支持的路径,不要提供逐字段手动配置说明——不得建议Usage__c/JSON__c值,也不得指导用户如何添加选项列表值。为此技能拒绝支持的具体路径提供变通方案,属于越界,而非帮助。将本次运行报告为受阻,而不是部分通过。 - 绝不跳过第 6 阶段的存在性检查(以
Usage__c+Sales_Organization__c为键)——也绝不在未另行获得用户明确同意的情况下,覆盖此检查发现的现有RTR_Report_Configuration__c。 - 在第 6 阶段针对各 Sales Org 的循环全部完成前,绝不触发第 7 阶段的导出——从第 6 阶段进入第 7 阶段前,始终询问用户是否要添加另一个 Sales Org。
- 始终给用户机会提供自定义的
Internal_Name__c(第 6 阶段步骤 4)——仅当用户拒绝时,才默认使用"Data 360 Promotion Measures Export <Sales Org Name>"(不带连字符)。此值也会作为第 7 阶段导出中的metaname使用——该调用中绝不另行编造其他值。 - 第 7 阶段的导出按每个 Sales Org 执行一次,绝不针对整个运行只执行一次。
- 用户提供的 Sales Org 和 KPI Set 都是名称,通过查询解析为 Id——此技能绝不创建
Sales_Organization__c、KPI_Set__c或 KPI Set 关联行。 - 除非本次运行实际创建了某个 Sales Org 的配置,否则绝不在第 6 阶段同步该配置——原样复用现有配置属于不执行任何操作,不调用同步。
- 除非用户明确要求中止,否则绝不调用中止端点。
- 绝不只凭第 8 阶段的
Ready状态就声称第 9 阶段已完成——进入第 10 阶段前,始终获取用户的明确确认,确认整个批次的promotionmeasuresData Stream 已同步。 - 绝不在 REST 路径、Apex 代码段或 SOQL 查询中硬编码命名空间——始终使用调用方传入或自行检测到的
NS/NS_SEGMENT/NS_APEX/NS_FIELD。 - 此技能只调用
globalApex 类、REST 端点或其自身scripts/目录中的匿名 Apex 模板——绝不直接调用public/private方法,也绝不使用此技能目录之外的脚本或模板。
报告
每次运行结束时,按阶段(1-10)向用户提供结构化状态:通过/受阻/待处理,并说明具体受阻原因及适用时的补救操作路径(例如,缺失选项列表值时在 Setup 中的路径)。指出因试运行或用户拒绝确认而跳过的任何事项。
通过委派调用时(调用方技能使用 Skill 工具访问此文件,而非用户直接调用):此报告是中间结果,不是任务的最终结果。将报告返回给调用方技能,并让其继续执行自己的下一阶段——不要将此报告作为最终答复呈现给用户后停止。仅当用户单独调用此技能时,才直接向用户提供此报告。