Ir al contenido

Turnos

Las plantillas de turno definen un patron de horarios reutilizable.

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;
}
GET /api/hr/shift-templates
POST /api/hr/shift-templates
PATCH /api/hr/shift-templates/:id
DELETE /api/hr/shift-templates/:id
[
{ "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" }
]

Los patrones de turno definen que horario se trabaja cada día de la semana.

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;
}
{
"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": []
}
}
GET /api/hr/shift-patterns
POST /api/hr/shift-patterns
GET /api/hr/shift-patterns/:id
PATCH /api/hr/shift-patterns/:id
DELETE /api/hr/shift-patterns/:id

POST /api/hr/shift-assignments
Authorization: Bearer <token>
Content-Type: application/json
{
"employee_id": "emp_001",
"pattern_id": "sp_manana",
"start_date": "2026-05-01",
"end_date": "2026-05-31"
}
GET /api/hr/shift-assignments?employee_id=emp_001&from=2026-05-01&to=2026-05-31

Método Ruta Descripción
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 asignación