跳至文档正文
文档目录 · Parts / BOM

Developers / Robotics World

Parts、组成与 BOM

部件身份、带证据的规格、机器人组成关系与约束匹配;识别 Unknown,核对当前关闭的 BOM 写入能力。

Reality · 部件、安装关系与工程方案

传感器、执行器、计算模组等部件有自己的身份与规格。同系列不代表相同 SKU,宣称兼容不代表已被某台机器人采用。BOM 表达具体配置与数量,不能从一条营销描述推导完整物料清单。

Model · Identity → Spec → Evidence

Part 的有 MPN 身份以规范厂商与 normalized_mpn 约束;原始 MPN、型号、变体和 Series 分别保留。规格逐条关联 Evidence,包含值、单位、有效时间和 supersedesId 修订链,摘要不能代替规格主张。

relationshipType含义能否表述为默认安装
installed实际安装仍需核对证据、配置与有效期
optional选配不计入默认配置
compatible工程兼容 / 可适配不能
replacement替换 / 维修关系不能据此推定原装配置
reference_design参考设计不能

Interface · 先探测,再读取

先读取 Parts capability。当前实现逐表探测 schema,返回 schemaVersion: parts-bom-v1,且 write.partswrite.robotPartUsageswrite.bom 均为 false,blockedBySchema 为 true。该阻塞标志目前固定返回,不能从它单独断言所有读取表都不存在,也不能因表存在就解锁写入。

读取任务入口与参数
部件列表/api/partsq/manufacturer/mpn/category/subtype/status/limit/offset;limit 默认 50、上限 200
详情/api/parts/{id}:Part UUID;逐条规格、证据与关联机器人
系列矩阵/api/parts/series/{id}:Series UUID;字段和变体比较
机器人组成/api/robots/{id}/parts:使用机器人规范 ID;status 默认 approved
约束匹配/api/parts/match?category=…&spec=…&limit=…

列表 status 支持 approved(默认)、pendingany。公共可读不代表每一条均已批准,尤其是详情中的候选规格。列表按系列筛选存在参数命名差异,见 REST 当前限制。当前没有公开 BOM 写入 API,也没有 MCP 部件工具。

curl -fsS https://www.aiman.world/api/parts/capability
curl -fsS -G https://www.aiman.world/api/parts/match \
  --data-urlencode 'category=actuator' \
  --data-urlencode 'spec=peak_torque:gte:25:Nm,interface:contains:CAN' \
  --data-urlencode 'limit=10'

这是查询语法示例,不保证有匹配记录。字段应从实际部件规格确认。约束格式为 field:op:value[:unit],多个条件用逗号分隔;操作符为 eq/gte/lte/contains,当前值内不支持逗号。前三种操作符比较数值,contains 比较文本。

Agent behavior · 匹配不等于可交付

匹配使用 approved、未被修订替代的规格主张。明确不满足的候选会被排除;返回候选分为 matchedpartialmissing,必须继续检查每条约束的 outcome、证据、unknownCountmissingCount。当前总类 missing 也可能包含全部无法比较的 unknown,不能只看总类猜原因。

已支持且同族的单位可换算;未知单位或不同量纲可能得到 unknown。当前一侧没有单位时仍可能按数值比较,因此客户端必须额外核对单位、精度与测试条件。匹配结果不验证供货、价格、库存或现场性能,也不处理所有时间冲突。

缺失规格保持缺失;同字段未解决的冲突与不同版本请回到 Evidence 核对。compatible 不能变成“这台机器人采用了该部件”。

实现依据:emibot-rs/src/routes/parts.rsdocs/adr/0005-parts-bom-domain-schema.md