Files
shd.build/tools/game-data-capture/contracts/screenshot-classification.schema.json
T
jb f48cc878aa
Validate and deploy production / validate (push) Successful in 24s
Validate and deploy staging / validate (push) Successful in 44s
Validate and deploy production / deploy (push) Failing after 29s
Validate and deploy staging / deploy (push) Failing after 6s
feat: classify gear and weapon mods
2026-07-31 21:54:47 -04:00

91 lines
3.8 KiB
JSON

{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://shd.build/schemas/game-data-capture/screenshot-classification-v1.json",
"title": "Screenshot classification v1",
"type": "object",
"additionalProperties": false,
"required": ["family", "view", "gear_slot", "record_types", "confidence", "abstention_reason"],
"properties": {
"family": {"enum": ["weapon", "gear", "skill_chip", "os_protocol", "specialization", "weapon_mod", "gear_mod", "unknown"]},
"view": {"type": "string"},
"gear_slot": {"type": ["string", "null"]},
"record_types": {"type": "array", "uniqueItems": true, "maxItems": 8, "items": {"type": "string"}},
"confidence": {"type": "number", "minimum": 0, "maximum": 1},
"abstention_reason": {"type": ["string", "null"]}
},
"oneOf": [
{
"properties": {
"family": {"const": "weapon"},
"view": {"enum": ["detail", "blueprint", "crafting", "stat_range", "talent_grid", "augmentation"]},
"gear_slot": {"const": null},
"record_types": {"minItems": 1, "items": {"enum": ["weapon", "weapon_talent", "weapon_augmentation_profile"]}},
"abstention_reason": {"const": null}
}
},
{
"properties": {
"family": {"const": "gear"},
"view": {"enum": ["detail", "blueprint", "talent", "augmentation"]},
"gear_slot": {"enum": ["Mask", "Gloves", "Backpack", "Body Armor", "Holster", "Knee Pads"]},
"record_types": {"minItems": 1, "items": {"enum": ["gear", "brand_set", "gear_talent", "gear_augmentation_profile"]}},
"abstention_reason": {"const": null}
}
},
{
"properties": {
"family": {"const": "skill_chip"},
"view": {"enum": ["detail", "set_bonus", "talent"]},
"gear_slot": {"const": null},
"record_types": {"minItems": 1, "items": {"enum": ["skill_chip_set", "skill_chip_set_bonus", "skill_chip_roll_pool", "skill_chip_talent"]}},
"abstention_reason": {"const": null}
}
},
{
"properties": {
"family": {"const": "os_protocol"},
"view": {"enum": ["detail", "secondary_profile", "talent"]},
"gear_slot": {"const": null},
"record_types": {"minItems": 1, "items": {"enum": ["os_protocol", "os_protocol_secondary_profile", "os_protocol_talent"]}},
"abstention_reason": {"const": null}
}
},
{
"properties": {
"family": {"const": "specialization"},
"view": {"enum": ["overview", "details", "ability", "focus_details", "focus_tree", "rank_details"]},
"gear_slot": {"const": null},
"record_types": {"minItems": 1, "items": {"enum": ["specialization", "specialization_focus", "specialization_ability", "specialization_tree_node", "specialization_tree_rank"]}},
"abstention_reason": {"const": null}
}
},
{
"properties": {
"family": {"const": "weapon_mod"},
"view": {"const": "detail"},
"gear_slot": {"const": null},
"record_types": {"minItems": 1, "maxItems": 1, "items": {"const": "weapon_mod"}},
"abstention_reason": {"const": null}
}
},
{
"properties": {
"family": {"const": "gear_mod"},
"view": {"const": "detail"},
"gear_slot": {"const": null},
"record_types": {"minItems": 1, "maxItems": 1, "items": {"const": "gear_mod"}},
"abstention_reason": {"const": null}
}
},
{
"properties": {
"family": {"const": "unknown"},
"view": {"const": "unknown"},
"gear_slot": {"const": null},
"record_types": {"maxItems": 0},
"abstention_reason": {"enum": ["low_confidence", "ambiguous_family", "ambiguous_view", "unsupported_family", "unsupported_view", "insufficient_visual_evidence", "occluded", "corrupt_image", "resource_limit", "cancelled"]}
}
}
]
}