Files
step-parse/skill.src/schemas/parts_mapping_schema.json
T
Jason Stedwell c1abe36822 phase 0
2026-06-17 16:03:26 -05:00

110 lines
4.1 KiB
JSON

{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "mpmedia/step-processor/parts-mapping/v1",
"title": "PartsMapping",
"description": "Mapping file that classifies parts from a STEP assembly tree. Used by the external diagram generator to determine geometry scope and labels. Supports Chinese-to-English normalization. One file per product model, stored alongside the STEP file or in a shared product data directory.",
"type": "object",
"required": ["model_number", "parts"],
"properties": {
"model_number": {
"type": "string",
"description": "Product model number this mapping applies to. e.g. 'MR28UW'"
},
"parts": {
"type": "object",
"description": "Keyed by original part name from STEP file (may be Chinese). Value is a classification object.",
"additionalProperties": {
"type": "object",
"required": ["english_name", "category"],
"properties": {
"english_name": {
"type": "string",
"description": "Translated/normalized English name. Used in diagrams and BOM."
},
"category": {
"type": "string",
"enum": ["enclosure", "mounting", "internal", "fastener", "display_panel", "cable", "other"],
"description": "Classification drives inclusion/exclusion logic per diagram mode."
},
"include_in_diagram": {
"type": "boolean",
"default": true,
"description": "Override flag. False = always exclude from diagrams regardless of mode."
},
"diagram_label": {
"type": ["string", "null"],
"description": "Optional custom label shown on the diagram for this part. If null, english_name is used."
},
"mounting_variant": {
"type": ["string", "null"],
"description": "If this part belongs to a specific mounting variant, name it here. e.g. 'Wall Mount VESA 200x200'. Parts with the same variant_name are shown/hidden together."
},
"notes": {
"type": "string",
"description": "Free-text notes for documentation or translator flags."
}
}
}
},
"mounting_variants": {
"type": ["array", "null"],
"description": "Named mounting configurations available in this STEP file. Each variant is a named group of mounting parts that should be shown together.",
"items": {
"type": "object",
"required": ["name"],
"properties": {
"name": { "type": "string" },
"description": { "type": "string" },
"default": { "type": "boolean", "description": "True = use this variant when mode is enclosure_plus_mounting and no variant is specified." }
}
}
}
},
"examples": [
{
"model_number": "MR28UW",
"parts": {
"前面板": {
"english_name": "Front Panel",
"category": "enclosure",
"include_in_diagram": true,
"diagram_label": null,
"mounting_variant": null
},
"安装支架": {
"english_name": "Mounting Bracket",
"category": "mounting",
"include_in_diagram": true,
"diagram_label": "Wall Mount Bracket",
"mounting_variant": "Wall Mount"
},
"VESA板": {
"english_name": "VESA Plate 200x200",
"category": "mounting",
"include_in_diagram": true,
"diagram_label": "VESA 200x200 Plate",
"mounting_variant": "VESA Mount"
},
"螺钉M4": {
"english_name": "M4 Screw",
"category": "fastener",
"include_in_diagram": false,
"notes": "Internal fastener - exclude from all diagrams"
},
"主板": {
"english_name": "Main Board",
"category": "internal",
"include_in_diagram": false
}
},
"mounting_variants": [
{ "name": "Wall Mount", "description": "Standard wall mount bracket", "default": true },
{ "name": "VESA Mount", "description": "VESA 200x200 compatible plate", "default": false }
]
}
]
}