automation-sandbox-post-copy-config-generate

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Automation: Sandbox Post-Copy Config Generate

自动化:沙箱复制后配置生成

Convert a customer's sandbox-refresh / post-copy SOP into a structured JSON array that the post-copy automation tool consumes. Each entry is a declarative instruction: which Salesforce configuration to update, which fields are involved, whether it is active, and what order it runs in.
将客户的沙箱刷新/复制后SOP转换为复制后自动化工具可读取的结构化JSON数组。每个条目都是一条声明式指令:指定要更新的Salesforce配置、涉及的字段、是否启用以及执行顺序。

STOP — do this before writing any JSON

注意——在编写任何JSON之前请执行此操作

Do not compose the output from memory. Before you write the file, you MUST open and read
assets/config_template.json
and copy an entry from it for each action. Every output entry is exactly one of these two shapes — five top-level keys, no others, no wrapper object:
json
[
  {
    "ConfigurationName": "OutboundMessages",
    "Label": "IR_Account_OBM_PROD",
    "Fields": { "EndpointUrl": "https://uat.example.com/services/account", "Object": "Account" },
    "IsActive": true,
    "ExecutionOrder": 1
  },
  {
    "ConfigurationName": "RemoteSiteSettings",
    "Label": "R12_Remote_Site",
    "Fields": { "RemoteSiteUrl": "https://uat.example.com" },
    "IsActive": true,
    "ExecutionOrder": 2
  }
]
  • ConfigurationName
    : exactly
    OutboundMessages
    or
    RemoteSiteSettings
    — never
    Type
    ,
    Name
    , or
    Operation
    .
  • OBM
    Fields
    :
    EndpointUrl
    +
    Object
    (both required). RemoteSite
    Fields
    :
    RemoteSiteUrl
    only — never
    Url
    /
    RemoteSiteURL
    .
  • Top level is a JSON array. No
    steps
    /
    actions
    /
    records
    wrapper. No
    <…>
    or
    REPLACE_WITH_…
    placeholder ever survives into the output.
If you announce "I will now write …" without having read the template and catalog, stop and read them first — a from-memory guess produces the wrong keys and fails at runtime.
请勿凭记忆编写输出内容。在编写文件之前,您必须打开并读取
assets/config_template.json
,并为每个操作复制其中的一个条目。每个输出条目必须完全符合以下两种格式之一——包含五个顶级键,不得有其他键,也不得有包装对象:
json
[
  {
    "ConfigurationName": "OutboundMessages",
    "Label": "IR_Account_OBM_PROD",
    "Fields": { "EndpointUrl": "https://uat.example.com/services/account", "Object": "Account" },
    "IsActive": true,
    "ExecutionOrder": 1
  },
  {
    "ConfigurationName": "RemoteSiteSettings",
    "Label": "R12_Remote_Site",
    "Fields": { "RemoteSiteUrl": "https://uat.example.com" },
    "IsActive": true,
    "ExecutionOrder": 2
  }
]
  • ConfigurationName
    :必须为
    OutboundMessages
    RemoteSiteSettings
    ——绝对不能是
    Type
    Name
    Operation
  • OBM的
    Fields
    :必须包含
    EndpointUrl
    Object
    (两者均为必填项)。RemoteSite的
    Fields
    :只能包含
    RemoteSiteUrl
    ——绝对不能是
    Url
    /
    RemoteSiteURL
  • 顶级结构为JSON数组。不得使用
    steps
    /
    actions
    /
    records
    作为包装键。输出内容中不得保留任何
    <…>
    REPLACE_WITH_…
    占位符。
如果您在未读取模板和目录的情况下就宣称“我现在将编写……”,请立即停止并先读取这些文件——凭记忆猜测会导致键名错误,进而在运行时失败。

Scope

适用范围

  • In scope: Reading a customer SOP in any of the supported formats (PDF, xlsx, csv, JSON, docx, Markdown, plain text, pasted excerpt, or images containing data tables — e.g., a screenshot of an Outbound Messages list with endpoint URLs), identifying post-copy / post-refresh actions, mapping each action to a supported
    ConfigurationName
    , emitting the canonical JSON array.
  • Out of scope: Generating Salesforce metadata XML (delegate to
    generating-*
    skills), deploying anything to an org, running the post-copy tool, inferring or fabricating values not present in the SOP — if the SOP does not give a concrete URL/value for an action, skip the action.
Every emitted entry must have every Field populated with a real value from the customer source. No empty strings, no
null
, no
<from-backup>
/
TBD
/
TODO
placeholders. Customers should never see an unpopulated field in the output — if a value cannot be located, skip the entry and surface it. See the corresponding rule below.

  • 适用场景:读取任意支持格式的客户SOP(PDF、xlsx、csv、JSON、docx、Markdown、纯文本、粘贴的摘录或包含数据表的图片——例如,带有端点URL的出站消息列表截图),识别复制后/刷新后操作,将每个操作映射到受支持的
    ConfigurationName
    ,生成标准JSON数组。
  • 不适用场景:生成Salesforce元数据XML(请委托给
    generating-*
    类技能)、将任何内容部署到组织、运行复制后工具、推断或编造SOP中未包含的值——如果SOP未提供操作的具体URL/值,请跳过该操作。
每个生成的条目必须包含从客户源获取的真实值。不得有空字符串、
null
<from-backup>
/
TBD
/
TODO
等占位符。客户在输出内容中绝不能看到未填充的字段——如果无法找到某个值,请跳过该条目并告知用户。请参阅下方对应的规则。

Required Inputs

必填输入项

Gather or infer before generating:
  • SOP source(s): One or more paths (or pasted content) in any of: PDF, xlsx, csv, JSON, docx, Markdown, plain text, or images (.png/.jpg/.jpeg/.tiff/.bmp). Multiple files are common — the action list and the endpoint table sometimes live in different files. Read every file the user supplies.
  • Target output path: Where the JSON config should be written. Default to
    post-copy-config.json
    in the current directory unless specified.
  • Scope filter (optional): If the SOP covers many environments (e.g., fcQA, fcUAT, multiple sandboxes), confirm which subset the user wants in the output.
If the user provides a clear SOP and target, generate immediately without asking unnecessary questions.

生成前需收集或推断以下信息:
  • SOP源文件:一个或多个路径(或粘贴的内容),格式包括:PDF、xlsx、csv、JSON、docx、Markdown、纯文本或图片(.png/.jpg/.jpeg/.tiff/.bmp)。多文件情况很常见——操作列表和端点表格有时会存放在不同文件中。请读取用户提供的所有文件。
  • 目标输出路径:JSON配置文件的写入位置。除非另有指定,默认写入当前目录下的
    post-copy-config.json
  • 范围筛选器(可选):如果SOP涵盖多个环境(如fcQA、fcUAT、多个沙箱),请确认用户希望输出的子集范围。
如果用户提供了清晰的SOP和目标路径,请立即生成,无需询问不必要的问题。

Workflow

工作流程

All steps are sequential. Steps 1–5 (reading the SOP, the catalog, the template, and the schema) are prerequisites to writing — you may not skip to the write step. If you catch yourself about to emit JSON without having read
assets/config_template.json
and
references/configuration_catalog.md
, go back and read them first.
  1. Locate and read every supplied SOP source — read
    references/source_format_handling.md
    for the exact extraction recipe per format (PDF, xlsx, csv, JSON, docx, image). At a glance:
    • PDF: extract text with
      pypdf
      (text layer) and OCR image-based pages with
      pytesseract
      if the text layer is empty.
    • xlsx: read every sheet with
      openpyxl
      (
      data_only=True
      ), scan all columns including ones outside the visible default range, check cell comments and embedded media.
    • csv / JSON / Markdown / text: read directly.
    • docx: extract paragraphs and tables with
      python-docx
      .
    • Images (.png/.jpg/...): use the
      Read
      tool to view, then decide if the image carries data (a table of endpoint URLs, a setup screenshot showing values to capture) or is purely illustrative (architecture diagram, flow chart). Extract values only from data-bearing images. See the image-handling rules in
      references/source_format_handling.md
      .
    • For very large SOPs (>50 pages / >20 sheets), focus on sections or sheets titled "Post Refresh", "Post-Copy", "Post-Refresh Steps", "Update …", or equivalent.
  2. Identify post-copy actions — read
    references/sop_parsing_patterns.md
    for the heuristics that turn prose instructions ("Update Outbound Message endpoint X to URL Y") into structured action records.
  3. Map each action to a
    ConfigurationName
    — load
    references/configuration_catalog.md
    . The catalog currently supports only
    OutboundMessages
    and
    RemoteSiteSettings
    . Any action that targets a different configuration type is out of scope: skip it and list it in the response so the user can extend the catalog later.
  4. Read the JSON template — load
    assets/config_template.json
    . It shows the exact required shape of one
    OutboundMessages
    entry and one
    RemoteSiteSettings
    entry, with
    <…>
    placeholder slots. Copy an entry, replace every
    <…>
    slot with the concrete SOP value, and keep the exact top-level keys (
    ConfigurationName
    ,
    Label
    ,
    Fields
    ,
    IsActive
    ,
    ExecutionOrder
    ) — never rename them to
    Type
    ,
    Name
    ,
    Operation
    , etc. Never emit an entry that still contains a
    <…>
    placeholder; if you cannot fill a slot, skip the entry (see Rules).
  5. Validate against the schema — load
    assets/json_schema.json
    . Every entry must conform:
    ConfigurationName
    is one of the catalog values,
    Fields
    is an object,
    IsActive
    is boolean,
    ExecutionOrder
    is a positive integer.
  6. Group entries by phase, then assign
    ExecutionOrder
    ExecutionOrder
    is a phase number, not a per-row counter. Entries that can run in parallel (no dependency between them) share the same value. Different
    ConfigurationName
    types typically get different phases; all entries within one phase share its number. See the ordering heuristic in
    references/sop_parsing_patterns.md
    .
  7. Compare against the example — verify the output shape against
    examples/sample_sop_to_config.json
    before writing.
  8. Write the JSON file — emit pretty-printed JSON (2-space indent).

所有步骤按顺序执行。步骤1-5(读取SOP、目录、模板和 schema)是编写前的先决条件——不得直接跳至编写步骤。如果发现自己在未读取
assets/config_template.json
references/configuration_catalog.md
的情况下就要生成JSON,请返回并先读取这些文件。
  1. 定位并读取所有提供的SOP源文件——请阅读
    references/source_format_handling.md
    ,了解针对每种格式(PDF、xlsx、csv、JSON、docx、图片)的具体提取方法。简要说明:
    • PDF:使用
      pypdf
      提取文本层内容;如果文本层为空,使用
      pytesseract
      对基于图片的页面进行OCR识别。
    • xlsx:使用
      openpyxl
      读取所有工作表(
      data_only=True
      ),扫描包括默认可见范围之外的所有列,检查单元格注释和嵌入媒体。
    • csv / JSON / Markdown / 纯文本:直接读取。
    • docx:使用
      python-docx
      提取段落和表格。
    • 图片(.png/.jpg/...):使用
      Read
      工具查看,判断图片是否包含数据(如端点URL表格、显示需捕获值的设置截图)或仅为说明性内容(架构图、流程图)。仅从承载数据的图片中提取值。请参阅
      references/source_format_handling.md
      中的图片处理规则。
    • 对于非常大的SOP(超过50页/20个工作表),重点关注标题为“Post Refresh”、“Post-Copy”、“Post-Refresh Steps”、“Update …”或类似名称的章节或工作表。
  2. 识别复制后操作——请阅读
    references/sop_parsing_patterns.md
    ,了解将文字说明(如“将出站消息端点X更新为URL Y”)转换为结构化操作记录的启发式方法。
  3. 将每个操作映射到
    ConfigurationName
    ——加载
    references/configuration_catalog.md
    。目前目录仅支持
    OutboundMessages
    RemoteSiteSettings
    。任何针对其他配置类型的操作均不适用:请跳过该操作并在响应中列出,以便用户日后扩展目录。
  4. 读取JSON模板——加载
    assets/config_template.json
    。该模板展示了
    OutboundMessages
    条目和
    RemoteSiteSettings
    条目的精确必填格式,包含
    <…>
    占位符槽位。复制一个条目,将每个
    <…>
    槽位替换为SOP中的具体值,并保留精确的顶级键(
    ConfigurationName
    Label
    Fields
    IsActive
    ExecutionOrder
    )——绝不能将其重命名为
    Type
    Name
    Operation
    等。输出内容中绝不能保留包含
    <…>
    占位符的条目;如果无法填充某个槽位,请跳过该条目(请参阅规则)。
  5. 根据schema验证——加载
    assets/json_schema.json
    。每个条目必须符合要求:
    ConfigurationName
    为目录中的值之一,
    Fields
    为对象,
    IsActive
    为布尔值,
    ExecutionOrder
    为正整数。
  6. 按阶段分组条目,然后分配
    ExecutionOrder
    ——
    ExecutionOrder
    是阶段编号,而非每行计数器。可并行运行的条目(彼此无依赖)共享相同的值。不同的
    ConfigurationName
    类型通常分配不同的阶段;同一阶段内的所有条目共享该阶段编号。请参阅
    references/sop_parsing_patterns.md
    中的排序启发式方法。
  7. 与示例对比——在写入前,验证输出格式是否与
    examples/sample_sop_to_config.json
    一致。
  8. 写入JSON文件——生成格式化的JSON(2空格缩进)。

Rules / Constraints

规则/约束

ConstraintRationale
Output is a JSON array at the top level (not an object with a wrapper key)The post-copy tool consumes an array directly
Every entry has all five required keys:
ConfigurationName
,
Label
,
Fields
,
IsActive
,
ExecutionOrder
The tool fails fast on missing keys; partial entries are not silently accepted
ConfigurationName
is one of the catalog values
Unknown values cause the runtime mapper to error out — never invent a new type without updating the catalog
Fields
keys are the actual API field names on the target metadata
Wrong key names mean the tool can't locate the field at runtime
Fields
values are the concrete values from the SOP (literal URLs, names, etc.)
The post-copy tool applies the value as-is; placeholders are not resolved at runtime
If the SOP names an action but no concrete value (URL, etc.) is provided, skip the entry entirely and list it in the responseGenerating an entry without a real value would produce a silent no-op or a deployment error at runtime
Every Field in every emitted entry must be a real value sourced from the customer's SOP or a supplemental sheet they provided. Never emit
""
,
null
, or placeholder markers like
<from-backup>
/
TBD
/
TODO
Customers consume the JSON directly — empty / placeholder fields surface to them as broken output and would also fail at runtime
Before skipping an OBM / RemoteSite for missing values, search every tab / sheet of the supplied workbook (and every supplied file) for an endpoint table keyed by that nameCustomer SOPs frequently split the action list and the URL table across different sheets (e.g., the Michelin UAT Refresh Planner lists OBMs in the Integration tab but the URL table lives in the Evolution SFA tab)
Information already captured by another field is not repeated in
Fields
(e.g.,
RemoteSiteName
lives in
Label
,
IsActive
lives at the top level — neither belongs in
Fields
)
Duplicate keys make the entry ambiguous and waste bytes the tool then has to reconcile
For
OutboundMessages
,
Fields
MUST include both
EndpointUrl
and
Object
(the target SObject —
Account
,
Contact
,
Asset
,
Lead
, etc.)
Same Label can apply to multiple OBMs differing only by entity;
Object
disambiguates them at runtime
For
RemoteSiteSettings
, the URL key MUST be spelled exactly
RemoteSiteUrl
— never
Url
,
RemoteSiteURL
,
SiteUrl
, or
EndpointUrl
The post-copy tool matches the field by exact API name; any other spelling means it can't locate the field and the entry silently no-ops at runtime
ExecutionOrder
is a phase number — entries with no dependency on each other share the same value
The post-copy tool runs all entries with the same
ExecutionOrder
in parallel; sequencing is only needed where one action depends on another
IsActive: false
entries remain in the output (do not delete them)
The customer toggles them on per-environment; deleting loses traceability
Default
IsActive
to
true
when the SOP marks an action as required
Most SOP steps are required; explicit opt-out is the exception
约束条件原因
输出顶级结构为JSON数组(而非带有包装键的对象)复制后工具直接读取数组
每个条目包含所有五个必填键:
ConfigurationName
Label
Fields
IsActive
ExecutionOrder
工具会因缺少键而快速失败;不接受部分条目
ConfigurationName
为目录中的值之一
未知值会导致运行时映射器出错——在未更新目录的情况下绝不能创建新类型
Fields
的键为目标元数据的实际API字段名
错误的键名会导致工具在运行时无法定位字段
Fields
的值为SOP中的具体值(如字面URL、名称等)
复制后工具会按原样应用该值;占位符不会在运行时解析
如果SOP指定了操作但未提供具体值(如URL等),请完全跳过该条目并在响应中列出生成无真实值的条目会导致运行时无操作或部署错误
每个生成条目中的每个字段必须是从客户SOP或其提供的补充表格中获取的真实值。绝不能输出
""
null
<from-backup>
/
TBD
/
TODO
等占位符标记
客户会直接使用该JSON;空/占位符字段会被视为损坏的输出,且在运行时也会失败
在因缺少值而跳过OBM/RemoteSite之前,请搜索提供的工作簿的所有标签/工作表(以及所有提供的文件),查找以该名称为键的端点表格客户SOP经常将操作列表和URL表格拆分到不同工作表中(例如,Michelin UAT刷新规划器在Integration标签中列出OBM,但URL表格位于Evolution SFA标签中)
已由其他字段捕获的信息不得
Fields
中重复(例如,
RemoteSiteName
位于
Label
中,
IsActive
位于顶级结构中——两者均不属于
Fields
重复键会导致条目歧义,且会增加工具需要协调的字节数
对于
OutboundMessages
Fields
必须同时包含
EndpointUrl
Object
(目标SObject——
Account
Contact
Asset
Lead
等)
相同Label可应用于多个仅实体不同的OBM;
Object
会在运行时消除歧义
对于
RemoteSiteSettings
,URL键必须精确拼写为
RemoteSiteUrl
——绝不能是
Url
RemoteSiteURL
SiteUrl
EndpointUrl
复制后工具通过精确API名称匹配字段;任何其他拼写都会导致工具无法定位字段,进而在运行时无操作
ExecutionOrder
是阶段编号——彼此无依赖的条目共享相同的值
复制后工具会并行运行所有具有相同
ExecutionOrder
的条目;仅当一个操作依赖于另一个操作时才需要排序
IsActive: false
的条目保留在输出中(不得删除)
客户会根据环境切换启用状态;删除会丢失可追溯性
当SOP标记某个操作为必填项时,默认
IsActive
true
大多数SOP步骤为必填项;明确选择退出是例外情况

Canonical entry shape

标准条目格式

See the entry shapes shown in the STOP section above, or copy directly from
assets/config_template.json
. Do not rename the five top-level keys (
ConfigurationName
,
Label
,
Fields
,
IsActive
,
ExecutionOrder
) to
Type
,
Name
,
Operation
,
apiName
, etc., and do not wrap the array in an object with a
steps
/
actions
/
records
key.

请参阅上方“注意”部分所示的条目格式,或直接从
assets/config_template.json
中复制。请勿将五个顶级键(
ConfigurationName
Label
Fields
IsActive
ExecutionOrder
)重命名为
Type
Name
Operation
apiName
等,请勿将数组包装在带有
steps
/
actions
/
records
键的对象中。

Gotchas

常见问题

IssueResolution
SOP step says "delete all endpoints" rather than "update X to Y"Emit an entry with
ConfigurationName: "OutboundMessages"
,
Label
describing the deletion target, and a note in
Fields
(
{"Action": "Delete"}
); the catalog documents the Delete pattern
Same Label appears for multiple environments (fcQA + fcUAT)Emit one entry per environment; suffix the Label or use the environment-specific Label as it appears in the SOP
For OutboundMessages, the same Label can legitimately apply to multiple entries when each targets a different
Object
(e.g., one OBM for Account, one for Contact).
Do not collapse them — emit one entry per Object. The
Object
value (inferred from the OBM name like
IR_Account_OBM_PROD
Account
) is what distinguishes them, not the Label.
SOP groups many Custom Labels together in a single tableOne entry per row of the table — do not collapse into a single bulk entry
Action targets a setting outside the catalog (CustomLabels, ConnectedApps, NamedCredentials, SSO, CustomSettings, etc.)Skip the action, do NOT invent a new
ConfigurationName
; list every skipped action in the response so the user knows what to add to the catalog later
SOP includes pre-refresh steps interleaved with post-refreshFilter out pre-refresh — only post-refresh / post-copy actions belong in the output
SOP names an outbound message / remote site to update but does not include the new URLSkip the entry. List the skipped item in the response so the user can supply the URL or amend the SOP
SOP includes secrets in URLs (e.g.,
https://USER:TOKEN@host/...
)
Embed them verbatim — the tool consumes the value as-is — but flag in the response so the user is aware the JSON now contains a secret and should be stored / shared accordingly
User's SOP is in a non-English language or has heavy formatting (tables, callouts)Extract the prose first, normalize whitespace, then parse — formatting artifacts do not need to survive into the JSON
The SOP includes screenshots / images. Some are illustrative (architecture diagrams, flow charts, "this is what the setup screen looks like" examples); others are data-bearing (a screenshot of a real Outbound Messages list, a captured Remote Site table).Treat illustrative images as out-of-scope — do NOT extract values from them. For data-bearing images (the surrounding text refers to "the values shown below" / "as captured in the screenshot above" / a real Endpoint URL is visible), OCR them and use the values. See
references/source_format_handling.md
for the heuristic.
The SOP is supplied as multiple files (e.g., a PDF + a companion xlsx + a screenshot folder), or values are split across tabs / pagesRead every supplied file end-to-end before skipping any entry. The action list and the URL table are frequently in different files — see the rule above about multi-sheet sources.

问题解决方案
SOP步骤要求“删除所有端点”而非“将X更新为Y”生成一个
ConfigurationName: "OutboundMessages"
的条目,
Label
描述删除目标,并在
Fields
中添加注释(
{"Action": "Delete"}
);目录中记录了删除模式
同一Label出现在多个环境中(fcQA + fcUAT)为每个环境生成一个条目;在Label后添加后缀,或使用SOP中显示的特定环境Label
对于OutboundMessages,当每个条目针对不同的
Object
时,同一Label可合法应用于多个条目(例如,一个针对Account的OBM,一个针对Contact的OBM)
请勿合并——为每个Object生成一个条目。
Object
值(从OBM名称如
IR_Account_OBM_PROD
推断为
Account
)是区分它们的依据,而非Label
SOP在单个表格中分组了多个Custom Label为表格中的每一行生成一个条目——请勿合并为单个批量条目
操作针对目录外的设置(CustomLabels、ConnectedApps、NamedCredentials、SSO、CustomSettings等)跳过该操作,请勿创建新的
ConfigurationName
;在响应中列出所有跳过的操作,以便用户日后了解需添加到目录中的内容
SOP中包含刷新前步骤和刷新后步骤混合的情况过滤掉刷新前步骤——仅保留刷新后/复制后操作在输出中
SOP指定了要更新的出站消息/远程站点,但未包含新URL跳过该条目。在响应中列出跳过的项,以便用户提供URL或修改SOP
SOP的URL中包含密钥(如
https://USER:TOKEN@host/...
按原样嵌入——工具会按原样使用该值——但需在响应中标记,以便用户知晓该JSON现在包含密钥,应妥善存储/共享
用户的SOP为非英语语言或包含复杂格式(表格、标注)先提取文字内容,标准化空格,再进行解析——格式伪影无需保留在JSON中
SOP包含截图/图片。部分为说明性内容(架构图、流程图、“设置界面如下所示”示例);部分为承载数据的内容(真实出站消息列表截图、捕获的远程站点表格)将说明性图片视为不适用场景——请勿从中提取值。对于承载数据的图片(周围文字提及“如下所示的值”/“如上方截图所示”/可见真实端点URL),对其进行OCR识别并使用提取的值。请参阅
references/source_format_handling.md
中的启发式方法。
SOP以多个文件形式提供(如PDF + 配套xlsx + 截图文件夹),或值拆分到不同标签/页面中在跳过任何条目之前,请完整读取所有提供的文件。操作列表和URL表格经常存放在不同文件中——请参阅上方关于多工作表源的规则。

Output Expectations

输出预期

Deliverables:
  • A single JSON file (default
    post-copy-config.json
    ) containing a top-level array of post-copy action entries.
  • A short summary in your response listing: total entries, count per
    ConfigurationName
    , actions skipped because they did not map to the catalog, and actions skipped because the SOP did not include a concrete value.
The output file structure conforms to
assets/json_schema.json
.

交付成果:
  • 单个JSON文件(默认
    post-copy-config.json
    ),包含顶级数组形式的复制后操作条目。
  • 响应中的简短摘要,列出:条目总数、每种
    ConfigurationName
    的数量、因无法映射到目录而跳过的操作、因SOP未包含具体值而跳过的操作。
输出文件结构符合
assets/json_schema.json
的要求。

Cross-Skill Integration

跨技能集成

NeedDelegate to
Generate the actual Salesforce metadata XML for a Custom Label / Named Credential / Remote Site / etc.The matching
generating-*
skill
Deploy generated metadata or run the post-copy tool against an org
deploying-metadata
skill
Compare an SOP against entities defined in UDD
udd:research-entities

需求委托给
为Custom Label / Named Credential / Remote Site等生成实际的Salesforce元数据XML对应的
generating-*
技能
将生成的元数据部署到组织或针对组织运行复制后工具
deploying-metadata
技能
将SOP与UDD中定义的实体进行对比
udd:research-entities

Reference File Index

参考文件索引

FileWhen to read
assets/config_template.json
Step 4 — starting structure for the JSON output
assets/json_schema.json
Step 5 — validate every emitted entry
references/configuration_catalog.md
Step 3 — to map an SOP action to a
ConfigurationName
and get the canonical Field keys
references/sop_parsing_patterns.md
Step 2 and step 6 — heuristics for extracting actions from prose and ordering them
references/source_format_handling.md
Step 1 — exact extraction recipe per input format (PDF / xlsx / csv / JSON / docx / image) and the data-bearing-vs-illustrative image heuristic
examples/sample_sop_to_config.json
Step 7 — verify output shape matches expected format
examples/sample_sop_excerpt.md
Step 7 — see a representative SOP excerpt that produced the sample JSON
文件读取时机
assets/config_template.json
步骤4——JSON输出的起始结构
assets/json_schema.json
步骤5——验证每个生成的条目
references/configuration_catalog.md
步骤3——将SOP操作映射到
ConfigurationName
并获取标准字段键
references/sop_parsing_patterns.md
步骤2和步骤6——从文字内容提取操作和排序的启发式方法
references/source_format_handling.md
步骤1——针对每种输入格式(PDF / xlsx / csv / JSON / docx / 图片)的具体提取方法,以及承载数据vs说明性图片的启发式方法
examples/sample_sop_to_config.json
步骤7——验证输出格式是否符合预期
examples/sample_sop_excerpt.md
步骤7——查看生成示例JSON的代表性SOP摘录