erp-core/docs/05-user-stories/mgn-010/US-MGN-010-003-001-registro-check-in-check-out-asistencias.md

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

Referencias