Saltearse al contenido

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-templates
POST /api/hr/shift-templates
PATCH /api/hr/shift-templates/:id
DELETE /api/hr/shift-templates/:id

Ejemplos

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

Asignacion de turnos

Asignar un turno a un empleado

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"
}

Listar asignaciones

GET /api/hr/shift-assignments?employee_id=emp_001&from=2026-05-01&to=2026-05-31

Resumen de endpoints

MetodoRutaDescripcion
GET/api/hr/shift-templatesListar plantillas de turno
POST/api/hr/shift-templatesCrear plantilla
PATCH/api/hr/shift-templates/:idEditar plantilla
DELETE/api/hr/shift-templates/:idEliminar plantilla
GET/api/hr/shift-patternsListar patrones de turno
POST/api/hr/shift-patternsCrear patron
PATCH/api/hr/shift-patterns/:idEditar patron
DELETE/api/hr/shift-patterns/:idEliminar patron
GET/api/hr/shift-assignmentsListar asignaciones
POST/api/hr/shift-assignmentsAsignar turno a empleado
DELETE/api/hr/shift-assignments/:idEliminar asignacion