# US-MGN-010-004-001: Gestionar Jerarquía de Departamentos

**RF Asociado:** [RF-MGN-010-002](../../02-modelado/requerimientos-funcionales/mgn-010/RF-MGN-010-002-departamentos-y-puestos.md)
**Módulo:** MGN-010 - RRHH Básico
**Epic:** Estructura Organizacional
**Prioridad:** P1
**Story Points:** 3
**Sprint:** Sprint 23
**Estado:** Ready for Development
**Fecha:** 2025-11-24

---

## User Story
**Como** gerente de RRHH, **Quiero** gestionar jerarquía de departamentos, **Para** reflejar estructura organizacional.

## Criterios de Aceptación

### Escenario 1: Crear departamento
**Dado que** soy hr_manager,
**Cuando** creo departamento: name="IT", manager_id=5,
**Entonces** sistema crea departamento.

### Escenario 2: Departamento con padre
**Dado que** departamento "IT" existe,
**Cuando** creo sub-departamento "Desarrollo" con parent_id=IT,
**Entonces** sistema crea jerarquía padre-hijo.

### Escenario 3: Organigrama visual
**Dado que** hay 10 departamentos con jerarquía,
**Cuando** accedo a /hr/org-chart,
**Entonces** veo árbol visual de departamentos.

## Reglas de Negocio
- **RN-1:** parent_id opcional (puede ser raíz).
- **RN-2:** manager_id debe ser empleado activo.
- **RN-3:** No ciclos en jerarquía.

## Tareas Técnicas
### Backend
- [ ] Endpoint: POST/GET/PUT/DELETE `/api/v1/hr/departments`
- [ ] Validar no ciclos

### Frontend
- [ ] Página: `DepartmentsPage.tsx`
- [ ] Componente: `OrgChartTree.tsx` (árbol visual)

### Database
- [ ] Tabla: `hr.departments` (name, parent_id, manager_id)
- [ ] Self-FK: parent_id

## Estimación Detallada
| Tarea | Horas | Backend | 1 | Frontend | 1.5 | Testing | 1 |
**TOTAL** | **3.5 horas = 3 SP** |

## Definition of Done
- [ ] Jerarquía funciona
- [ ] Organigrama visual
- [ ] QA/PO aprobado

## Referencias
- [RF-MGN-010-002](../../02-modelado/requerimientos-funcionales/mgn-010/RF-MGN-010-002-departamentos-y-puestos.md)
