110 lines
4.1 KiB
JSON
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 }
|
|
]
|
|
}
|
|
]
|
|
}
|