3.1 KiB
US-MGN-010-001-001: CRUD Empleados
RF Asociado: RF-MGN-010-001 Módulo: MGN-010 - RRHH Básico Epic: Empleados Prioridad: P0 Story Points: 5 Sprint: Sprint 22 Estado: Ready for Development Fecha: 2025-11-24
User Story
Como gerente de RRHH, Quiero gestionar información de empleados, Para mantener un registro centralizado del personal.
Descripción Detallada
Empleado incluye:
- Datos personales (nombre, email, teléfono, dirección, fecha nacimiento)
- Datos laborales (puesto, departamento, manager, fecha ingreso, salario)
- Documentos (identificación, CV, foto)
- Estado (active, inactive, terminated)
Criterios de Aceptación
Escenario 1: Crear empleado
Dado que soy hr_manager, Cuando creo empleado: name="Juan Pérez", email="juan.perez@company.com", job_id=1, department_id=1, hire_date="2024-01-15", Entonces sistema crea empleado con state=active, genera employee_number único.
Escenario 2: Email único
Dado que ya existe empleado con email="juan.perez@company.com", Cuando intento crear otro con mismo email, Entonces error 400 "Email ya registrado".
Escenario 3: Actualizar datos
Dado que empleado existe, Cuando actualizo job_id=5, manager_id=10, Entonces sistema actualiza y registra cambio en audit_log.
Escenario 4: Desactivar empleado
Dado que empleado está active, Cuando cambio state=inactive, termination_date="2024-06-30", termination_reason="Renuncia", Entonces empleado se desactiva, no aparece en selectores por defecto.
Reglas de Negocio
- RN-1: Email único por empresa.
- RN-2: employee_number auto-generado secuencial.
- RN-3: state=terminated requiere termination_reason.
- RN-4: RLS filtra por empresa.
- RN-5: Permisos: hr_user (lectura), hr_manager (escritura).
Tareas Técnicas
Backend
- Endpoint: POST/GET/PUT/DELETE
/api/v1/hr/employees - Service:
EmployeeService(CRUD) - Generar employee_number único
- Validar email único
- Unit tests
Frontend
- Página:
EmployeesPage.tsx - Formulario:
EmployeeForm.tsx(multi-step) - Vista: Foto, datos personales, laborales
- Filtros: Departamento, Puesto, Estado
- Component tests
Database
- Tabla:
hr.employees(name, email, phone, job_id, department_id, manager_id, hire_date, termination_date, state) - Constraint: unique(company_id, email)
- Enum: employee_state
- Índices: idx_employees_department_id, idx_employees_manager_id
Estimación Detallada
| Tarea | Horas |
|---|---|
| Backend | 2.5 |
| Frontend | 3 |
| Testing | 2 |
| TOTAL | 7.5 horas = 5 SP |
Definition of Done
- CRUD completo
- Validaciones aplicadas
- employee_number generado
- Tests >80%
- QA/PO aprobado