Turnos
Shift Templates
Las plantillas de turno definen un patron de horarios reutilizable.
Modelo
interface ShiftTemplate { id: string; name: string; // "Manana 8h", "Tarde 6h", "Intensiva" code: string; daily_hours: number; // Horas por dia weekly_hours: number; // Horas por semana color: string; // Color en el calendario (hex) active: boolean;}Endpoints
GET /api/hr/shift-templatesPOST /api/hr/shift-templatesPATCH /api/hr/shift-templates/:idDELETE /api/hr/shift-templates/:idEjemplos
[ { "name": "Manana", "daily_hours": 8, "weekly_hours": 40, "color": "#10B981" }, { "name": "Tarde", "daily_hours": 6, "weekly_hours": 30, "color": "#F59E0B" }, { "name": "Noche", "daily_hours": 8, "weekly_hours": 40, "color": "#6366F1" }]Shift Patterns
Los patrones de turno definen que horario se trabaja cada dia de la semana.
Modelo
interface ShiftPattern { id: string; template_id: string; name: string; week_schedule: { monday: { start: string; end: string; break_minutes: number }[]; tuesday: { start: string; end: string; break_minutes: number }[]; wednesday: { start: string; end: string; break_minutes: number }[]; thursday: { start: string; end: string; break_minutes: number }[]; friday: { start: string; end: string; break_minutes: number }[]; saturday: { start?: string; end?: string }[]; sunday: { start?: string; end?: string }[]; }; valid_from?: string; valid_until?: string;}Ejemplo de pattern
{ "name": "Manana 09:00-18:00 + 30min descanso", "week_schedule": { "monday": [{ "start": "09:00", "end": "18:00", "break_minutes": 30 }], "tuesday": [{ "start": "09:00", "end": "18:00", "break_minutes": 30 }], "wednesday": [{ "start": "09:00", "end": "18:00", "break_minutes": 30 }], "thursday": [{ "start": "09:00", "end": "18:00", "break_minutes": 30 }], "friday": [{ "start": "09:00", "end": "18:00", "break_minutes": 30 }], "saturday": [], "sunday": [] }}Endpoints
GET /api/hr/shift-patternsPOST /api/hr/shift-patternsGET /api/hr/shift-patterns/:idPATCH /api/hr/shift-patterns/:idDELETE /api/hr/shift-patterns/:idAsignacion de turnos
Asignar un turno a un empleado
POST /api/hr/shift-assignmentsAuthorization: Bearer <token>Content-Type: application/json
{ "employee_id": "emp_001", "pattern_id": "sp_manana", "start_date": "2026-05-01", "end_date": "2026-05-31"}Listar asignaciones
GET /api/hr/shift-assignments?employee_id=emp_001&from=2026-05-01&to=2026-05-31Resumen de endpoints
| Metodo | Ruta | Descripcion |
|---|---|---|
| GET | /api/hr/shift-templates | Listar plantillas de turno |
| POST | /api/hr/shift-templates | Crear plantilla |
| PATCH | /api/hr/shift-templates/:id | Editar plantilla |
| DELETE | /api/hr/shift-templates/:id | Eliminar plantilla |
| GET | /api/hr/shift-patterns | Listar patrones de turno |
| POST | /api/hr/shift-patterns | Crear patron |
| PATCH | /api/hr/shift-patterns/:id | Editar patron |
| DELETE | /api/hr/shift-patterns/:id | Eliminar patron |
| GET | /api/hr/shift-assignments | Listar asignaciones |
| POST | /api/hr/shift-assignments | Asignar turno a empleado |
| DELETE | /api/hr/shift-assignments/:id | Eliminar asignacion |