# US-MGN-010-002-001: CRUD Contratos Laborales **RF Asociado:** [RF-MGN-010-003](../../02-modelado/requerimientos-funcionales/mgn-010/RF-MGN-010-003-contratos-laborales.md) **Módulo:** MGN-010 - RRHH Básico **Epic:** Contratos **Prioridad:** P0 **Story Points:** 5 **Sprint:** Sprint 22 **Estado:** Ready for Development **Fecha:** 2025-11-24 --- ## User Story **Como** gerente de RRHH, **Quiero** gestionar contratos laborales de empleados, **Para** controlar vigencia y términos contractuales. ## Criterios de Aceptación ### Escenario 1: Crear contrato **Dado que** empleado existe, **Cuando** creo contrato: employee_id=1, type="indefinido", start_date="2024-01-01", salary=50000, **Entonces** sistema crea contrato con state=active. ### Escenario 2: Un solo contrato activo por empleado **Dado que** empleado ya tiene contrato active, **Cuando** intento crear otro active, **Entonces** error 400 "Empleado ya tiene contrato activo. Debe finalizar el anterior primero". ### Escenario 3: Finalizar contrato **Dado que** contrato está active, **Cuando** lo finalizo con end_date="2024-12-31", **Entonces** state=terminated, permite crear nuevo contrato. ## Reglas de Negocio - **RN-1:** Un solo contrato activo por empleado. - **RN-2:** Tipo: indefinido, temporal, practicante. - **RN-3:** Salario obligatorio > 0. ## Tareas Técnicas ### Backend - [ ] Endpoint: POST/GET/PUT/DELETE `/api/v1/hr/contracts` - [ ] Validar un solo contrato activo - [ ] Unit tests ### Frontend - [ ] Página: `ContractsPage.tsx` - [ ] Formulario contrato - [ ] Lista de contratos del empleado ### Database - [ ] Tabla: `hr.contracts` (employee_id, type, start_date, end_date, salary, state) - [ ] Enum: contract_type, contract_state ## Estimación Detallada | Tarea | Horas | Backend | 2 | Frontend | 2.5 | Testing | 1.5 | **TOTAL** | **6 horas = 5 SP** | ## Definition of Done - [ ] CRUD completo - [ ] Validación un solo activo - [ ] Tests >80% - [ ] QA/PO aprobado ## Referencias - [RF-MGN-010-003](../../02-modelado/requerimientos-funcionales/mgn-010/RF-MGN-010-003-contratos-laborales.md)