2.2 KiB
US-MGN-010-003-001: Registro Check-in/Check-out de Asistencias
RF Asociado: RF-MGN-010-004 Módulo: MGN-010 - RRHH Básico Epic: Asistencias Prioridad: P0 Story Points: 5 Sprint: Sprint 23 Estado: Ready for Development Fecha: 2025-11-24
User Story
Como empleado, Quiero registrar mi check-in y check-out diario, Para llevar control de horario de trabajo.
Criterios de Aceptación
Escenario 1: Check-in
Dado que es inicio de jornada, Cuando hago check-in, Entonces sistema registra timestamp, ubicación (IP/GPS opcional).
Escenario 2: Check-out
Dado que hice check-in hoy, Cuando hago check-out, Entonces sistema registra timestamp salida, calcula horas trabajadas.
Escenario 3: Check-in duplicado
Dado que ya hice check-in hoy, Cuando intento otro check-in, Entonces error 400 "Ya registró check-in hoy".
Escenario 4: Reporte de asistencias
Dado que soy hr_manager, Cuando genero reporte mensual, Entonces veo tabla: empleado, días presentes, total horas.
Reglas de Negocio
- RN-1: Un check-in/check-out por día.
- RN-2: Check-out calcula horas: check_out - check_in.
- RN-3: Registro incluye IP/ubicación opcional.
Tareas Técnicas
Backend
- Endpoint: POST
/api/v1/hr/attendances/check-in - Endpoint: POST
/api/v1/hr/attendances/check-out - Calcular horas trabajadas
- Unit tests
Frontend
- Componente:
CheckInButton.tsx - Componente:
CheckOutButton.tsx - Página:
MyAttendancesPage.tsx - Reporte para hr_manager
Database
- Tabla:
hr.attendances(employee_id, date, check_in, check_out, worked_hours, ip_address) - Constraint: unique(employee_id, date)
Estimación Detallada
| Tarea | Horas | Backend | 2 | Frontend | 2 | Testing | 1.5 | TOTAL | 5.5 horas = 5 SP |
Definition of Done
- Check-in/out funciona
- Horas calculadas correctamente
- Reporte funcional
- QA/PO aprobado