7.1 KiB
US-PROJ-008: Calendario de Hitos del Proyecto
Épica: MAI-002 - Proyectos y Estructura de Obra Sprint: Sprint 6 Story Points: 3 SP Prioridad: P1 (Alta) Estimación: 1-2 días
Historia de Usuario
Como Director de Proyectos Quiero definir y dar seguimiento a los hitos clave del proyecto Para controlar el avance contra el calendario planificado y detectar retrasos
Criterios de Aceptación
✅ AC1: Timeline de Hitos
Dado que accedo a tab "Calendario" del proyecto Entonces veo timeline visual:
┌────────────────────────────────────────────────────────────┐
│ Hitos del Proyecto [+ Nuevo Hito]│
├────────────────────────────────────────────────────────────┤
│ │
│ ●─────────────────────────────────────────────────────● │
│ │ │ │
│ ✅ Arranque 🔵 Permisos ⏱️ Cimiento│
│ 01/09/25 15/10/25 01/12/25 │
│ Completado En progreso Próximo (12d)│
│ │
│ ⏱️ Estructura ⏸️ Instalaciones ⏸️ Acabados │
│ 15/01/26 01/03/26 15/05/26 │
│ Próximo (45d) Pendiente Pendiente │
│ │
│ ⏸️ Primera Entrega ⏸️ Entrega Final ⏸️ Cierre │
│ 01/08/26 15/10/26 30/11/26 │
│ Pendiente Pendiente Pendiente │
│ │
└────────────────────────────────────────────────────────────┘
Estados:
- ✅ Completado (verde)
- 🔵 En progreso (azul)
- ⏱️ Próximo (amarillo, <30 días)
- ⏸️ Pendiente (gris)
- ⚠️ Retrasado (rojo, fecha pasada)
✅ AC2: Crear Hito
Formulario:
- Nombre: "Obtención de licencias"
- Tipo: Permisos obtenidos / Inicio construcción / Estructura completa / etc.
- Fecha planificada: [15/10/2025]
- Responsable: [Juan Pérez ▼]
- Depende de: [Hito anterior ▼] (opcional)
- Entregables:
- ☑ Licencia de construcción
- ☑ Permisos municipales
- ☑ Póliza de seguro
- Alerta (días antes): [7]
Tipos predefinidos:
- Arranque del proyecto
- Permisos obtenidos
- Inicio de construcción
- Cimentación completa
- Estructura completa
- Instalaciones completas
- Acabados completos
- Primera entrega
- Entrega final
- Cierre del proyecto
- Otro (personalizado)
✅ AC3: Marcar Hito como Completado
Dado hito "Permisos obtenidos" en estado pendiente Cuando hago clic "Marcar como Completado" Entonces veo modal:
┌──────────────────────────────────────────────┐
│ Completar Hito │
├──────────────────────────────────────────────┤
│ │
│ Hito: Permisos obtenidos │
│ Planificado: 15/10/2025 │
│ │
│ Fecha real de completación: │
│ [📅 18/10/2025] │
│ │
│ ⚠️ Retraso: 3 días │
│ │
│ Notas de completación: │
│ ┌──────────────────────────────────────────┐│
│ │ Se obtuvieron todos los permisos. ││
│ │ Retraso menor por trámite de MIA. ││
│ └──────────────────────────────────────────┘│
│ │
│ [Cancelar] [Marcar Completado]│
└──────────────────────────────────────────────┘
Al completar:
- Status = "completed"
- actualDate = fecha seleccionada
- Si fecha > planificada: calcular días de retraso
- Desbloquear hitos dependientes
✅ AC4: Validación de Dependencias
Dado hito B depende de hito A Cuando intento completar hito B Y hito A aún está pendiente Entonces sistema muestra:
⚠️ No se puede completar
Este hito depende de:
• Permisos obtenidos (pendiente)
Completa las dependencias primero.
✅ AC5: Alertas de Hitos Próximos
Dado hito "Cimentación completa" planificado para 01/12/2025 Y alerta configurada a 7 días antes Cuando llega 24/11/2025 Entonces sistema envía notificación:
- Email al responsable
- Notificación in-app
- Mensaje: "El hito 'Cimentación completa' vence en 7 días"
Frecuencia de alertas:
- 1 alerta diaria (no spam)
- Hasta que se complete el hito
Escenarios de Prueba
Escenario 1: Crear 11 hitos del proyecto Given proyecto "Fraccionamiento Los Pinos" When creo 11 hitos desde arranque hasta cierre Then timeline muestra todos en orden cronológico And primer hito no tiene dependencias And cada hito siguiente depende del anterior
Escenario 2: Completar hito con retraso Given hito planificado para 15/10/2025 When lo marco completado el 18/10/2025 Then sistema calcula 3 días de retraso And muestra badge "⚠️ +3 días de retraso"
Escenario 3: Intentar completar con dependencia pendiente Given hito B depende de hito A (pendiente) When intento completar hito B Then sistema bloquea con mensaje de error
Definición de Done
- Timeline visual funcional
- CRUD de hitos completo
- Validación de dependencias
- Marcar como completado con notas
- Cálculo de días de retraso/adelanto
- Alertas automáticas (cron job)
- 11 tipos de hitos predefinidos
- Tests de validación de dependencias
- Notificaciones funcionando
Notas Técnicas
Endpoints:
POST /api/projects/:projectId/milestones
GET /api/projects/:projectId/milestones
GET /api/projects/:projectId/milestones/timeline
PUT /api/milestones/:id/complete
DELETE /api/milestones/:id
Cron Job (diario 9:00 AM):
@Cron('0 9 * * *')
async checkMilestoneAlerts() {
// Buscar hitos próximos
// Enviar notificaciones
}
Estado: ✅ Ready for Development