# EPICA: EPIC-MGN-015 - Proyectos Genericos

## Metadata

| Campo | Valor |
|-------|-------|
| **ID** | EPIC-MGN-015 |
| **Nombre** | Proyectos Genericos |
| **Modulo** | projects |
| **Fase** | Fase 3 - Extended |
| **Prioridad** | P2 |
| **Estado** | Backlog |
| **Story Points** | 26 |
| **Sprint(s)** | Sprint 17-18 |

---

## Descripcion

Sistema de gestion de proyectos generico que incluye proyectos, tareas con subtareas, asignacion de recursos, registro de tiempo (timesheets), estados/etapas configurables y vista Kanban. Es la base que se extiende en verticales especificas como construccion.

---

## Objetivo de Negocio

Proveer gestion de proyectos que:
- Organice trabajo en proyectos y tareas estructuradas
- Asigne recursos de forma eficiente
- Rastree tiempo dedicado para facturacion y analisis
- Visualice progreso en tiempo real
- Sea extensible para verticales especificas

---

## Stakeholders

| Rol | Nombre/Equipo | Responsabilidad |
|-----|---------------|-----------------|
| Product Owner | Equipo Producto | Definicion de funcionalidades PM |
| Tech Lead | Equipo Backend | Arquitectura extensible |
| Project Managers | Usuarios finales | Uso diario, feedback |
| Gerentes | Management | Reportes de productividad |

---

## Historias de Usuario

| ID | Historia | Prioridad | SP | Estado |
|----|----------|-----------|-----|--------|
| US-MGN015-001 | Como PM, quiero crear proyectos con fechas y responsables para organizar el trabajo | P0 | 3 | Backlog |
| US-MGN015-002 | Como PM, quiero crear y asignar tareas para distribuir el trabajo | P0 | 5 | Backlog |
| US-MGN015-003 | Como usuario, quiero registrar tiempo en tareas para reportar avance | P0 | 5 | Backlog |
| US-MGN015-004 | Como PM, quiero ver progreso en vista Kanban para visualizar estado del proyecto | P0 | 5 | Backlog |
| US-MGN015-005 | Como PM, quiero definir etapas del proyecto para personalizar el flujo | P1 | 3 | Backlog |
| US-MGN015-006 | Como gerente, quiero ver reportes de proyectos para analizar productividad | P1 | 5 | Backlog |

**Total Story Points:** 26 SP

---

## Criterios de Aceptacion de la Epica

**Funcionales:**
- [ ] CRUD de proyectos con fechas inicio/fin y responsables
- [ ] Tareas con subtareas ilimitadas y dependencias
- [ ] Asignacion multiple de usuarios a tareas
- [ ] Timesheets por tarea con descripcion de actividad
- [ ] Vista Kanban drag & drop por etapas
- [ ] Etapas configurables por tenant
- [ ] Reportes de horas por proyecto/usuario/periodo
- [ ] Alertas de tareas vencidas

**No Funcionales:**
- [ ] Performance: Kanban carga en < 1s con 200+ tareas
- [ ] UX: Drag & drop fluido
- [ ] Extensibilidad: Facil de extender para verticales

**Tecnicos:**
- [ ] Cobertura de tests > 80%
- [ ] Modelo de datos extensible
- [ ] API documentada para verticales

---

## Dependencias

**Esta epica depende de:**
| Epica/Modulo | Estado | Bloqueante |
|--------------|--------|------------|
| EPIC-MGN-002 Users | Ready | Si |
| EPIC-MGN-005 Catalogs | Backlog | No |

**Esta epica bloquea:**
| Epica/Modulo | Razon |
|--------------|-------|
| Vertical Construccion | Extiende proyectos con obras y avances |
| Vertical Servicios | Extiende proyectos con ticketing |

---

## Desglose Tecnico

**Database:**
- [ ] Schema: `core_projects`
- [ ] Tablas: 6 (projects, tasks, task_assignments, timesheets, stages, task_dependencies)
- [ ] Funciones: calcular_horas_proyecto, obtener_tareas_vencidas
- [ ] RLS Policies: Si (por tenant, por asignacion)

**Backend:**
- [ ] Modulo: `projects`
- [ ] Entities: 6 (Project, Task, TaskAssignment, Timesheet, Stage, TaskDependency)
- [ ] Services: ProjectService, TaskService, TimesheetService
- [ ] Endpoints: 18 (CRUD projects, tasks, timesheets, stages)
- [ ] Tests: 25+

**Frontend:**
- [ ] Paginas: 5 (Projects, ProjectDetail, Kanban, Timesheets, Reports)
- [ ] Componentes: ProjectCard, TaskForm, KanbanBoard, TimesheetEntry, GanttChart (opcional)
- [ ] Stores: 1 (projectsStore)

---

## Riesgos

| Riesgo | Probabilidad | Impacto | Mitigacion |
|--------|--------------|---------|------------|
| Complejidad de dependencias entre tareas | Media | Medio | Validaciones, alertas de ciclos |
| Performance con muchas subtareas | Media | Medio | Lazy loading, paginacion |
| Conflictos con verticales | Baja | Alto | Arquitectura extensible documentada |

---

## Definition of Ready (DoR)

- [x] Historias de usuario definidas
- [x] Criterios de aceptacion claros
- [x] Dependencias identificadas
- [x] Estimacion completada
- [ ] Etapas default definidas
- [ ] Modelo de extension para verticales aprobado
- [x] Sin bloqueadores activos

## Definition of Done (DoD)

- [ ] Codigo implementado y revisado
- [ ] Tests pasando (unit, integration, e2e)
- [ ] Kanban funcional con drag & drop
- [ ] Timesheets registrando correctamente
- [ ] Reportes basicos funcionando
- [ ] Documentacion actualizada
- [ ] Inventarios actualizados
- [ ] Trazas registradas
- [ ] Demo realizada
- [ ] Product Owner aprobo

---

## Documentacion Relacionada

- Requerimientos: `docs/03-requerimientos/RF-projects/`
- User Stories: `docs/05-user-stories/mgn-015/`
- DDL Spec: `docs/04-modelado/database-design/DDL-SPEC-core_projects.md`
- Modelo de Extension: `docs/95-guias-desarrollo/extension-projects.md`

---

## Historial

| Fecha | Cambio | Autor |
|-------|--------|-------|
| 2025-12-05 | Creacion de epica | Requirements-Analyst |
| 2025-12-05 | Completado con Stakeholders, Riesgos, DoR/DoD | Requirements-Analyst |

---

**Creada por:** Requirements-Analyst
**Fecha:** 2025-12-05
**Ultima actualizacion:** 2025-12-05
