用途
该技能用于把 TPM Accruals Data Kit 及其 DMO 映射部署到 Salesforce 组织,专门满足 Trade Promotion Effectiveness(TPE)仪表盘所需的组件。它既可以独立运行,也可以作为 consumer-goods-tpe-dashboard-configure 第 7 步的委派步骤被调用;被委派时,调用方会传入已收集的用户名和 dry-run 标志,本技能不再自行推导。
主要能力
- 部署 TPM Accruals Data Kit 及其 DMO 映射到 Salesforce 组织。
- 在部署前执行预检,包括下载并解压 CGCloudAddons 静态资源、记录 DataKitDeploymentLog 基线。
- 从下载的包中提取 CRM 流字段权限,并以只增不改的方式更新 Data Cloud Salesforce Connector 权限集下的字段级与对象级权限。
- 准备并部署数据套件元数据(替换占位符 SF_ORG_ID 为组织 15 位 Id)。
- 部署 DMO 映射并运行部署脚本 deploy-tpm-tpe.js。
- 通过 DataKitDeploymentLog 验证部署结果,并生成通过/阻塞/待定报告。
使用方式
技能要求先收集以下输入,除非调用方已提供,否则不得猜测:
- TPM System Admin 用户名:需已通过 sf CLI 认证。使用 node ./scripts/sf-rest.js org-status --target-org <username> 验证,输出 {"username","alias","connectedStatus","orgId"}。非零退出或 connectedStatus != "Connected" 时停止,要求用户自行登录。
- 是否 dry-run:默认提供。dry-run 下,阶段 1(预检)和阶段 2 的读取/差异步骤仍运行;阶段 2 的 FieldPermissions 写入和阶段 3-5(部署)跳过并记录为 pending — not run (dry-run)。
- TPM Data Connector 已安装且处于活动状态:无法程序化验证,需用户按指定导航步骤确认。缺失或未激活时停止,并区分生产组织与沙盒组织的不同处理路径。
- Salesforce CRM Home 组织连接处于活动状态:无法程序化验证,需用户按指定导航步骤确认。缺失或未激活时停止。
- TPM Admin 角色所需权限集 + GenieAdmin 权限集已分配:被委派时复用调用方已确认的结果;独立运行时逐一确认。GenieAdmin 需先解析 Label,再检查分配,缺失时询问是否分配。
- 命名空间(NS):被委派时复用调用方已检测的 NS;独立运行时使用 node ./scripts/detect-namespace.js --target-org <username> 检测一次,输出 {"NS","NS_SEGMENT","NS_APEX","NS_FIELD"} 并全程复用。
随后按阶段执行:
- 阶段 1 — 预检:记录 DataKitDeploymentLog 最新 Id 作为 LAST_ID_BEFORE_DEPLOY;下载并解压 CGCloudAddons,捕获 STATIC_RESOURCE_PATH 作为 addons_root。
- 阶段 2 — CRM 流字段权限:使用 extract-crm-field-permissions.js 提取 {sobject, fields[]} 列表;使用 update-field-permissions.js --dry-run 获取差异;仅在 wouldGrant 或 objectWouldGrant 非空时向用户展示该差异并获得明确同意后,才真正运行写入。
- 阶段 3 — 准备并部署数据套件元数据:在 <addons_root>/TPM/Accruals/TPM Accruals Data Kit 中把 SF_ORG_ID 替换为组织 15 位 Id,然后执行 sf project deploy start --target-org <username>。
- 阶段 4 — 部署 DMO 映射并运行部署脚本:从 <addons_root>/TPM/Accruals/DmoMappings 执行 sf project deploy start --target-org <username>;从 <addons_root>/TPM/Accruals/Accruals Data Kit Deployment Scripts 执行 SF_ORG_ALIAS=<username> node deploy-tpm-tpe.js。
- 阶段 5 — 验证:查询 DataKitDeploymentLog,要求本次运行每一行的 DeploymentStatus = 'Successful' 且 DeploymentError 为空。也可通过 Data Cloud Setup → Data Kits → TPM Accruals → Local Deployment History 检查状态。
适用场景
- 客户或管理员需要为 TPE 仪表盘部署 TPM Accruals Data Kit 组件时。
- 作为 consumer-goods-tpe-dashboard-configure 第 7 步的委派步骤执行时。
限制
- TPM Data Connector 与 Salesforce CRM Home 组织连接状态无法程序化验证,必须由用户确认。
- TPM Admin 角色对应的权限集名称与分配无法程序化验证,必须由用户确认。
- 不得探测 FlowDefinition 或 sfdatakit__DeployDataKitComponents ApexClass 来判断就绪状态,应直接探测 DataKitDeploymentLog。
- 不得查阅 CGCloudAddons 内附带的 README.md 或其他包内文档作为部署指南。
- 若下载的文件夹中缺少脚本或文件夹,不得猜测或修改脚本(例如不得修改 deploy-tpm-tpe.js)。
- update-field-permissions.js 只能新增或把已有行的关闭标志翻转为 true,不得删除行、削弱已有授权或触碰 PermissionsCreate/Edit/Delete/ModifyAllRecords。
- 当 sfdc_a360_sfcrm_data_extract(Data Cloud Salesforce Connector)权限集缺失,或字段/对象出现在 failed[]/objectFailed[] 中时,不得猜测变通方法,应停止并提示用户通过 Setup 手动授予。
- 任何 DataKitDeploymentLog 行出现 Failure 或非空 DeploymentError 时,不得声称成功。
- 被委派调用时,本报告是中间结果,应返回给调用方继续其下一阶段,不得作为最终答案呈现给用户并停止。