# US-MGN-010-003-001: Registro Check-in/Check-out de Asistencias

**RF Asociado:** [RF-MGN-010-004](../../02-modelado/requerimientos-funcionales/mgn-010/RF-MGN-010-004-asistencias-check-in-check-out.md)
**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
- [RF-MGN-010-004](../../02-modelado/requerimientos-funcionales/mgn-010/RF-MGN-010-004-asistencias-check-in-check-out.md)
