169 lines
3.8 KiB
JSON
169 lines
3.8 KiB
JSON
{
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"$id": "https://schemas.bakery-ia.com/demo/production/equipment/v1",
|
|
"type": "object",
|
|
"title": "Equipment",
|
|
"description": "Production equipment for demo cloning",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string",
|
|
"format": "uuid",
|
|
"description": "Unique equipment identifier"
|
|
},
|
|
"tenant_id": {
|
|
"type": "string",
|
|
"format": "uuid",
|
|
"description": "Tenant owner (replaced during cloning)"
|
|
},
|
|
"name": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 255
|
|
},
|
|
"type": {
|
|
"type": "string",
|
|
"enum": ["oven", "mixer", "proofer", "freezer", "packaging", "other"]
|
|
},
|
|
"model": {
|
|
"type": ["string", "null"],
|
|
"maxLength": 100
|
|
},
|
|
"serial_number": {
|
|
"type": ["string", "null"],
|
|
"maxLength": 100
|
|
},
|
|
"location": {
|
|
"type": ["string", "null"],
|
|
"maxLength": 255
|
|
},
|
|
"manufacturer": {
|
|
"type": ["string", "null"],
|
|
"maxLength": 100
|
|
},
|
|
"firmware_version": {
|
|
"type": ["string", "null"],
|
|
"maxLength": 50
|
|
},
|
|
"status": {
|
|
"type": "string",
|
|
"enum": ["OPERATIONAL", "MAINTENANCE", "DOWN", "WARNING"],
|
|
"default": "OPERATIONAL"
|
|
},
|
|
"install_date": {
|
|
"type": ["string", "null"],
|
|
"format": "date-time"
|
|
},
|
|
"last_maintenance_date": {
|
|
"type": ["string", "null"],
|
|
"format": "date-time"
|
|
},
|
|
"next_maintenance_date": {
|
|
"type": ["string", "null"],
|
|
"format": "date-time"
|
|
},
|
|
"maintenance_interval_days": {
|
|
"type": ["integer", "null"],
|
|
"minimum": 1
|
|
},
|
|
"efficiency_percentage": {
|
|
"type": ["number", "null"],
|
|
"minimum": 0,
|
|
"maximum": 100
|
|
},
|
|
"uptime_percentage": {
|
|
"type": ["number", "null"],
|
|
"minimum": 0,
|
|
"maximum": 100
|
|
},
|
|
"energy_usage_kwh": {
|
|
"type": ["number", "null"],
|
|
"minimum": 0
|
|
},
|
|
"power_kw": {
|
|
"type": ["number", "null"],
|
|
"minimum": 0
|
|
},
|
|
"capacity": {
|
|
"type": ["number", "null"],
|
|
"minimum": 0
|
|
},
|
|
"weight_kg": {
|
|
"type": ["number", "null"],
|
|
"minimum": 0
|
|
},
|
|
"current_temperature": {
|
|
"type": ["number", "null"]
|
|
},
|
|
"target_temperature": {
|
|
"type": ["number", "null"]
|
|
},
|
|
"iot_enabled": {
|
|
"type": "boolean",
|
|
"default": false
|
|
},
|
|
"iot_protocol": {
|
|
"type": ["string", "null"],
|
|
"enum": ["rest_api", "opc_ua", "mqtt", "modbus", "custom"]
|
|
},
|
|
"iot_endpoint": {
|
|
"type": ["string", "null"],
|
|
"maxLength": 500
|
|
},
|
|
"iot_port": {
|
|
"type": ["integer", "null"],
|
|
"minimum": 1,
|
|
"maximum": 65535
|
|
},
|
|
"iot_connection_status": {
|
|
"type": ["string", "null"],
|
|
"enum": ["connected", "disconnected", "error", "unknown"]
|
|
},
|
|
"iot_last_connected": {
|
|
"type": ["string", "null"],
|
|
"format": "date-time"
|
|
},
|
|
"supports_realtime": {
|
|
"type": "boolean",
|
|
"default": false
|
|
},
|
|
"poll_interval_seconds": {
|
|
"type": ["integer", "null"],
|
|
"minimum": 1
|
|
},
|
|
"temperature_zones": {
|
|
"type": ["integer", "null"],
|
|
"minimum": 1
|
|
},
|
|
"supports_humidity": {
|
|
"type": "boolean",
|
|
"default": false
|
|
},
|
|
"supports_energy_monitoring": {
|
|
"type": "boolean",
|
|
"default": false
|
|
},
|
|
"supports_remote_control": {
|
|
"type": "boolean",
|
|
"default": false
|
|
},
|
|
"is_active": {
|
|
"type": "boolean",
|
|
"default": true
|
|
},
|
|
"notes": {
|
|
"type": ["string", "null"]
|
|
},
|
|
"created_at": {
|
|
"type": ["string", "null"],
|
|
"format": "date-time"
|
|
},
|
|
"updated_at": {
|
|
"type": ["string", "null"],
|
|
"format": "date-time"
|
|
}
|
|
},
|
|
"required": [
|
|
"id", "tenant_id", "name", "type", "status", "is_active"
|
|
],
|
|
"additionalProperties": false
|
|
} |