mcpField
I
integration-capability-analysis

integration-capability-analysis

github.com/factorialco开发1103 次安装2 周前更新
代码仓库

关于 integration-capability-analysis

integration-capability-analysis 是一项技能,用于评估外部系统规范如何对应 Factorial 的薪资或财务集成能力。它依据文档证据整理端点、字段转换、缺口和支持结论,供决策者与实施人员使用。

主要功能

  1. 01按集成领域分类外部系统
  2. 02盘点文档中记录的供应商端点和字段
  3. 03按指定的数据方向映射能力
  4. 04基于证据记录字段映射和转换
  5. 05评估各项能力的缺口与支持程度

适用场景

  1. 01评估供应商 API 是否支持 Factorial 集成
  2. 02为实施团队整理端点调用顺序
  3. 03规划前发现未映射字段并列出待询问题
  4. 04比较薪资和财务能力的支持情况

安装

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

$npx skills add https://github.com/factorialco/factorial-code-skills --skill integration-capability-analysis

安装后在 Claude Code 中输入/integration-capability-analysis确认已加载。

附带文件assets/report-template.md

详细介绍

集成能力分析

Factorial 的集成框架按领域划分——目前包括薪资和财务——每个领域都定义了一组能力,每项能力都注明方向以及背后的 Factorial 端点。本技能会分析一个外部系统的规范,逐项梳理由哪些供应商端点实现这些能力,以及两个 API 之间的每个字段如何映射。

输出是一份集成映射文档,可同时供两类读者使用:负责判断是否值得构建此集成的人,以及随后负责构建的人。前者需要结论,后者需要端点调用顺序和字段映射。两者都遵循同一条规则——有据可引,否则降级表述:如果映射行、端点或结论无法在供应商规范中找到依据,就不能在文档中将其作为事实陈述。

目录即公开文档

Factorial 的 API 文档按领域分别列出能力,每个领域一页:

每次分析开始时,都要阅读相关领域的页面。每页都会列出该领域的能力、每项能力的方向、覆盖范围,以及相关 Factorial 端点的链接。这些页面是事实依据:分析其中列出的每项能力,采用页面注明的方向,并从链接的端点参考文档中获取 Factorial 字段名称。不要凭记忆推断薪资或财务集成通常包含什么——实际清单与直觉上的清单并不相同;基于错误能力集构建的映射,看起来可能和正确映射一样可信。

这些 URL 都带有版本号。使用请求者指定的版本;若未指定,则使用上方列出的版本,并在文档标题中记录所用版本,因为字段名称和能力可能随版本变化。

如果无法获取页面,请停止并说明情况,不要自行编造能力清单。

第 1 步 — 判定领域

判断供应商所属的领域:薪资引擎属于薪资;会计系统或 ERP 属于财务。有些系统横跨两个领域——例如带有薪资模块的 ERP——这种情况下,应分别分析每个领域,并为每个领域生成一份文档。如果系统不属于任何一个领域,请说明并停止;强行归入某个领域会导致映射无法使用。

在文档顶部用一行说明分类和理由。不要等待请求者确认;如果这是基于判断作出的分类,请说明这一点并继续分析。

第 2 步 — 加载领域的能力

根据领域页面整理工作清单:列出每项能力、其方向,以及页面链接到的 Factorial 端点。然后跟进这些端点链接以查看字段——未读过的字段无法进行映射。按能力逐项阅读端点文档,而不是一开始全部读完;领域页面链接的端点很多,其中大多数只服务于一项能力。

还要记录页面中对整个领域有约束作用的信息:顺序或设置流程(哪些记录必须先存在才能创建其他记录)、Factorial 写入时要求的标识符(例如,写入 Factorial 的记录必须包含 external_id),以及增量同步参数。这些信息会影响文档中的端点调用顺序,而不仅仅是单独的映射行。

第 3 步 — 清点供应商规范

在进行任何映射之前,先建立事实清单。从能力出发意味着寻找你预期存在的端点,并找到与之相近的内容。

对于 API 规范——OpenAPI/Swagger、开发者门户、PDF 指南——每个操作记录一行:方法、路径、功能、请求和响应字段及其必填标记,以及每项信息的来源(operationId、章节、页面)。这些引用将成为依据。

既要阅读字段文档,也要查看示例。 描述会说明字段的含义;示例往往会告诉你字段实际接受什么——日期格式、真实的枚举值、嵌套对象的结构、哪些字段会一起填充,以及示例中出现但架构从未记录的字段。示例往往能补全架构未明确规定的行为,因此要加以利用。如果示例与架构矛盾,应报告矛盾,而不是默默选其一。

在架构中,仔细检查 allOf 组合(实际的 required 列表是所有分支的并集),以及指向自身祖先的 $ref(这种关系被建模为嵌套对象而非 id——通常无法使用,值得在规范质量方面提出说明)。

对于文件规范,同样要按文件形式建立清单:每种记录类型或布局相当于一个端点,每一列相当于一个字段——并记录必填标记、类型、长度、代码列表、用于关联不同文件中记录的键、交付机制,以及任何确认文件或错误文件。

整份文档检查

以下是关于规范未包含哪些内容的判断;它们对能力的判断与规范实际包含的内容同样重要。要对照整份文件逐项核实,而不是凭印象判断——文件较长时,可进行计数或使用 grep。

  • 按方法统计操作数量——GET、POST、PUT、PATCH、DELETE 各有多少个。
  • 实际应用的身份验证(根级或每个操作中的 security 块),而非仅在 securitySchemes 下声明。
  • 是否有操作声明错误响应。
  • 不返回响应正文的操作——创建操作如果不返回任何内容,我们就没有 id 可存储。
  • 分页(page、limit、offset、cursor)和列表端点上的增量筛选条件(updated_since、modified_since、since)。
  • 速率限制——429、Retry-After、X-RateLimit-*、文档中说明的配额。
  • 每一个 enum,因为每一个都是需要映射的代码列表。
  • 能力所依赖端点上的 deprecated: true。

报告返回的内容,包括不返回任何内容的情况:“没有列表端点支持增量筛选”也是一项发现,而不是空白。

第 4 步 — 匹配每项能力

方向决定了要在供应商一侧查找什么:

出站——Factorial 是数据源。我们从 Factorial 的端点读取数据,并写入供应商,因此供应商需要写入端点(用于创建的 POST、用于更新的 PUT/PATCH),并且这些端点必须接受 Factorial 读取端点返回的数据。

入站——供应商是数据源。我们从供应商读取数据并写入 Factorial,因此供应商需要读取端点(GET,最好支持分页和按修改日期筛选),并返回 Factorial 写入端点所需的数据。

丰富的读取 API 对出站能力毫无帮助,丰富的写入 API 对入站能力也毫无帮助。供应商看起来覆盖全面,却最终无法满足需求,最常见的原因就是这种不匹配。

针对每项能力,找出实现它的供应商端点,并按照实现中调用它们的顺序列出——包括让主要调用成为可能的辅助调用:创建前解析法律实体或成本中心 id,创建后读回供应商的标识符,以及查询代码列表。然后检查字段,而不只是端点:几乎所有 HR API 都有 POST /employees,但它能否携带 Factorial 新员工的数据,完全取决于它的字段。

步骤 5 — 映射字段

这是文档的核心。对于每项能力,按照数据流动的方向,映射两个系统之间传递数据的每个字段。

对于每一行,记录:源字段和目标字段,使用完整路径(GET /employees → birth_on;POST /workers → person.date_of_birth);目标字段是否为必填;是否存在转换;以及证据——架构、文档说明或示例。

集成往往正是在转换环节出问题,因此请具体说明:

  • 格式 — 日期、时间戳和时区、小数分隔符、货币使用代码还是符号、金额采用主单位还是次单位。
  • 代码列表 — 映射具体取值,而不只是字段。如果双方都公布了枚举值,请提供取值映射表;如果供应商的列表按客户配置,请说明映射需要按客户配置。
  • 结构 — 一个字段拆分成多个字段(完整地址拆分为街道、门牌号和邮政编码)、多个字段合并为一个字段、扁平字段转换为嵌套对象、必须展平的列表。
  • 单位 — 工作时间使用小时还是百分比、薪资按月还是按年、缺勤按天还是按小时。
  • 标识符 — 一侧的 ID 存储在何处,以及下次同步时如何匹配记录。

然后分别列出两类缺口,因为它们的含义不同:

  • 供应商要求但 Factorial 无对应源数据的字段。 这些字段会阻碍该能力,或迫使流程使用默认值或手动步骤。每项都需要明确的解决方案:常量、按客户配置的值、推导值,或缺口。
  • Factorial 中存在但供应商没有对应目标字段的数据。 通常只是供应商不持有的数据;值得列出,以免有人误以为这些数据会同步。

绝不要为了补全一行而臆造供应商字段。未映射的行是一项发现;规格中不存在但听起来合理的字段名,则是文档缺陷。

步骤 6 — 分类

每项能力给出三种判定之一。

完全支持 — 供应商提供了该能力所需的所有操作,方向正确;目标端要求的每个字段都有源数据;并且下次同步时能够再次识别该记录。只有在规格明确说明所有这些内容时,才能判定为完全支持。

部分支持 — 操作存在,但缺少某项必要条件:目标端必填字段没有源数据、没有更新或更正途径、下次同步时无法匹配记录、时间相关数据没有生效日期,或代码列表没有公布取值。每项部分支持的判定都要说明限制,并给出可行性判断——可直接发布,或须先弥补缺口,以及弥补缺口所需的工作。

不支持 — 规格未涵盖该能力:缺少相应操作或实体、规格对此保持沉默,或唯一途径是通过供应商的 UI 手动操作。未涵盖和未说明归为同一类,因为结果相同——我们只能基于文档中记载的内容进行开发。在能力部分注明规格是明确排除了该功能,还是仅未作说明,因为未说明的问题可以向供应商确认,从而改变判定。

最后两种判定的界线:缺少字段会使能力变为部分支持;缺少操作或实体则意味着不支持。对于其他方面均可正常工作的能力,如果只有一项细节未说明——例如重新发送会替换数据还是累积数据——应判为部分支持,并明确指出这项细节是限制所在。

步骤 7 — 撰写文档

遵循 assets/report-template.md。填写每个部分;如果没有内容,请写“无”,而不是省略该部分,这样读者就能分清“没有内容可报告”和“尚未分析”。

首先写能力摘要,因为决策者会先看这一部分。然后为每项能力各写一个章节——包括领域页面列出的所有能力,即使是不受支持的能力,也要列出,以表明每项能力都经过了评估。每个章节都应包含端点调用顺序、字段映射、缺口和判定。字段映射是工程师实际实施的依据,因此必须完整覆盖范围内的字段,并准确说明路径和转换方式。

最后列出供应商问题,按每个答案对计划影响的大小排序,并合并可通过一次交流解决的问题。

保存为 <vendor>-<domain>-integration-mapping.md。

常见错误

  • 凭记忆而不是依据领域页面开展工作。 实际能力列表更长,有时也出乎意料——其中包括方向。每次都要阅读该页面。
  • 只匹配端点,不匹配字段。 端点名称正确但字段不符,最多只能算部分匹配。
  • 忽略示例。 格式、枚举值和未记录的字段往往只出现在示例中。
  • 臆造字段。 只映射供应商规范中出现的字段。
  • 映射字段,却不映射取值。 两个 status 字段的枚举不同,在取值也映射之前,就不能算完成映射。
  • 凭印象断言缺失。 “没有更新端点”会影响判定。请进行计数或 grep,然后再说明。

评论

支持 Markdown