Plataforma técnica · Sevastopol
Asistencia en Sevastopol
Islands Remuneraciones Asistencia
Propósito
Section titled “Propósito”AttendanceViewIsland registra la asistencia diaria del trabajador para un mes. Es uno de los insumos críticos del cálculo mensual: PayrollService lee días trabajados, horas extra y ausencias para escalar el sueldo y aplicar descuentos por inasistencia.
La grilla se carga por empleado + mes para evitar volúmenes innecesarios — el operador trabaja sobre una persona a la vez.
Decisiones de UX
Section titled “Decisiones de UX”| Decisión | Motivo |
|---|---|
| Empleado + mes como filtros primarios | El registro de asistencia es por persona. Mostrar la grilla de todo el tenant es ruidoso. |
isoMonth(today) como default | Al abrir la island se asume el mes en curso; el operador cambia si revisa históricos. |
| Cálculo de stats en cliente | Días trabajados, horas totales y ausencias se computan localmente sobre el listado cargado. Evita ida al servidor para totales. |
| Tabla editable por fila | Cada día permite edición inline; al guardar se envía PUT con el delta. |
| Catálogo de empleados precargado | loadEmployees(tenantId) se ejecuta al cambiar tenant para que el select de empleado responda al instante. |
Datos visibles
Section titled “Datos visibles”| Grupo | Campos esperados |
|---|---|
| Día | Fecha, día de la semana. |
| Asistencia | Asistió sí/no, horas trabajadas, horas extra. |
| Ausencia | Tipo (licencia, falta, vacación, permiso), observación. |
Endpoints
Section titled “Endpoints”| Método + ruta | Uso |
|---|---|
GET /api/attendance?tenant_id=&empleado_id=&mes=YYYY-MM | Grilla del empleado para el mes. |
POST /api/attendance?tenant_id= | Alta de día. |
PUT /api/attendance/:id?tenant_id= | Edición de día. |
DELETE /api/attendance/:id?tenant_id= | Eliminación de día. |
GET /api/employees?tenant_id= | Catálogo del select. |
Backend de referencia
Section titled “Backend de referencia”AttendanceService — CRUD de asistencia diaria con validación de fechas dentro del mes y reglas de horas extra.