{
  "type": "object",
  "properties": {
    "alertId": { "type": "string" },
    "lineId": { "type": "string" },
    "factoryId": { "type": "string" },
    "operationArea": { "type": "string" },
    "processLine": { "type": "string" },
    "severity": { "type": "string", "enum": ["WARNING", "CRITICAL"] },
    "ruleId": { "type": "string" },
    "ruleName": { "type": "string" },
    "message": { "type": "string" },
    "rawMetric": { "type": "string" },
    "rawCurrentValue": { "type": "number", "format": "double" },
    "rawThreshold": { "type": "number", "format": "double" },
    "reasonCode": { "type": ["string", "null"] },
    "shiftProduced": { "type": "integer" },
    "shiftScrapped": { "type": "integer" },
    "shiftReworked": { "type": "integer" },
    "shiftTargetPieces": { "type": "integer" },
    "hoursRemaining": { "type": "number", "format": "double" },
    "timestamp": { "type": "integer", "format": "int64" },
    "generatedBy": { "type": "string", "enum": ["LLM", "FALLBACK_TEMPLATE"] }
  },
  "required": ["alertId", "lineId", "factoryId", "severity", "ruleId", "ruleName", "message", "rawMetric", "rawCurrentValue", "rawThreshold", "generatedBy", "timestamp"]
}
