{ "name": "WorkerAvailability", "type": "object", "properties": { "staff_id": { "type": "string", "description": "Reference to Staff entity" }, "staff_name": { "type": "string", "description": "Staff member name" }, "availability_status": { "type": "string", "enum": [ "CONFIRMED_AVAILABLE", "UNKNOWN", "BLOCKED" ], "default": "UNKNOWN", "description": "Current availability status" }, "predicted_availability_score": { "type": "number", "minimum": 0, "maximum": 100, "default": 50, "description": "ML/rules-based prediction of availability (0-100)" }, "need_work_index": { "type": "number", "minimum": 0, "maximum": 100, "default": 0, "description": "How much worker needs hours (0-100)" }, "scheduled_hours_this_period": { "type": "number", "default": 0, "description": "Hours scheduled in current period" }, "desired_hours_this_period": { "type": "number", "default": 40, "description": "Hours worker wants in current period" }, "last_shift_date": { "type": "string", "format": "date", "description": "Date of last completed shift" }, "acceptance_rate": { "type": "number", "minimum": 0, "maximum": 100, "default": 0, "description": "Historical acceptance rate percentage" }, "utilization_percentage": { "type": "number", "minimum": 0, "maximum": 100, "default": 0, "description": "Scheduled hours / desired hours * 100" }, "days_since_last_shift": { "type": "number", "default": 0, "description": "Days since last shift" }, "total_shifts_this_period": { "type": "number", "default": 0, "description": "Number of shifts in current period" }, "available_dates": { "type": "array", "description": "Dates worker is confirmed available", "items": { "type": "string", "format": "date" } }, "blocked_dates": { "type": "array", "description": "Dates worker is blocked/unavailable", "items": { "type": "string", "format": "date" } }, "preferences": { "type": "object", "description": "Worker preferences", "properties": { "preferred_days": { "type": "array", "items": { "type": "string" } }, "preferred_shift_types": { "type": "array", "items": { "type": "string", "enum": [ "Morning", "Day", "Evening", "Night", "Overnight" ] } }, "max_commute_miles": { "type": "number" }, "wants_more_hours": { "type": "boolean", "default": false } } } }, "required": [ "staff_id", "staff_name" ] }