# US-MGN-010-002-002: Renovación Automática de Contratos

**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:** P1
**Story Points:** 3
**Sprint:** Sprint 22
**Estado:** Ready for Development
**Fecha:** 2025-11-24

---

## User Story
**Como** gerente de RRHH, **Quiero** alertas de contratos próximos a vencer, **Para** renovar oportunamente.

## Criterios de Aceptación

### Escenario 1: Alerta 30 días antes
**Dado que** contrato vence en 30 días,
**Cuando** cron job ejecuta,
**Entonces** sistema envía email a hr_manager.

### Escenario 2: Dashboard de vencimientos
**Dado que** 5 contratos vencen en próximos 60 días,
**Cuando** accedo a dashboard RRHH,
**Entonces** widget "Contratos por Vencer" muestra los 5.

## Reglas de Negocio
- **RN-1:** Alertas a 30 y 15 días antes de vencimiento.
- **RN-2:** Solo contratos temporales alertan.

## Tareas Técnicas
### Backend
- [ ] Cron job: Verificar contratos por vencer
- [ ] Service: `ContractAlertService.checkExpirations()`

### Frontend
- [ ] Widget: `ContractsExpiringWidget.tsx`

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

## Definition of Done
- [ ] Alertas funcionan
- [ ] Widget muestra contratos por vencer
- [ ] QA/PO aprobado

## Referencias
- [RF-MGN-010-003](../../02-modelado/requerimientos-funcionales/mgn-010/RF-MGN-010-003-contratos-laborales.md)
