🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
6.3 KiB
6.3 KiB
EPICA: EPIC-MGN-009 - Reportes
Metadata
| Campo | Valor |
|---|---|
| ID | EPIC-MGN-009 |
| Nombre | Reportes y Analytics |
| Modulo | reports |
| Fase | Fase 2 - Core Business |
| Prioridad | P1 |
| Estado | En Progreso |
| Story Points | 26 |
| Sprint(s) | Sprint 8 |
Descripcion
Sistema de reportes genericos que permite definir reportes personalizados con drag & drop, exportar a PDF/Excel, programar reportes automaticos por email, y crear dashboards con KPIs y graficas interactivas.
Objetivo de Negocio
Proveer reportes que:
- Faciliten toma de decisiones basadas en datos
- Soporten multiples formatos de exportacion
- Permitan automatizacion con programacion
- Sean personalizables sin desarrollo
- Ofrezcan visualizacion interactiva
Stakeholders
| Rol | Nombre/Equipo | Responsabilidad |
|---|---|---|
| Product Owner | Equipo Producto | Definicion de reportes base |
| Tech Lead | Equipo Backend | Arquitectura de query builder |
| Business Analysts | Operaciones | Definicion de KPIs |
| Gerentes | Usuarios finales | Consumo de dashboards |
Historias de Usuario
| ID | Historia | Prioridad | SP | Estado |
|---|---|---|---|---|
| US-MGN009-001 | Como usuario, quiero generar reportes predefinidos para analizar datos operativos | P0 | 5 | Backlog |
| US-MGN009-002 | Como usuario, quiero exportar reportes a PDF para compartir formalmente | P0 | 5 | Backlog |
| US-MGN009-003 | Como usuario, quiero exportar reportes a Excel para analisis detallado | P0 | 3 | Backlog |
| US-MGN009-004 | Como admin, quiero crear reportes personalizados para necesidades especificas | P1 | 8 | Backlog |
| US-MGN009-005 | Como usuario, quiero programar reportes automaticos para recibir informacion periodica | P1 | 5 | Backlog |
| US-MGN009-006 | Como gerente, quiero ver dashboards con KPIs para monitorear el negocio | P1 | 5 | Backlog |
Total Story Points: 31 SP (ajustado a 26)
Criterios de Aceptacion de la Epica
Funcionales:
- Reportes predefinidos por modulo (ventas, compras, inventario, etc.)
- Exportacion PDF con formato profesional y logo de empresa
- Exportacion Excel con datos estructurados y formulas
- Constructor de reportes visual (campos, filtros, agrupaciones)
- Scheduler de reportes (diario, semanal, mensual) con envio por email
- Dashboards con graficas interactivas (Bar, Line, Pie, Gauge)
- Filtros dinamicos por fecha, entidad, etc.
No Funcionales:
- Performance: Reportes de hasta 10k registros en < 5s
- PDF: Generacion en background para reportes grandes
- Escalabilidad: Cache de reportes frecuentes
Tecnicos:
- Cobertura de tests > 80%
- Query builder seguro contra SQL injection
- Documentacion de reportes disponibles
Dependencias
Esta epica depende de:
| Epica/Modulo | Estado | Bloqueante |
|---|---|---|
| EPIC-MGN-004 Tenants | Ready | Si |
| EPIC-MGN-008 Notifications | Backlog | Parcial (para envio programado) |
| Modulos de datos (Financial, Sales, etc.) | Variable | No (datos disponibles) |
Esta epica bloquea:
| Epica/Modulo | Razon |
|---|---|
| Ninguno | Modulo complementario |
Desglose Tecnico
Database: ✅ COMPLETADO
- Schema:
reports(14-reports.sql) - Tablas: 12 (report_definitions, report_executions, report_schedules, report_recipients, schedule_executions, custom_reports, dashboards, dashboard_widgets, widget_queries, data_model_entities, data_model_fields, data_model_relationships)
- ENUMs: 7 (report_type, execution_status, export_format, delivery_method, widget_type, param_type, filter_operator)
- RLS Policies: 7 (tenant isolation en todas las tablas)
Backend: 🔄 EN PROGRESO (Sprint 8)
- Modulo:
reports - Services: DashboardsService (~500 LOC), ExportService (~350 LOC)
- Controller: DashboardsController (~400 LOC)
- Routes: 13 endpoints para dashboards
- Services pendientes: ReportBuilderService (BE-024), SchedulerService (BE-025)
- Tests: DashboardsService tests (TEST-003)
Frontend: ⏳ PENDIENTE
- Paginas: 5 (ReportsList, ReportViewer, ReportBuilder, ScheduleManager, Dashboards)
- Componentes: Charts (Bar, Line, Pie, Gauge), KPICard, FilterPanel, DragDropFields
- Stores: 1 (reportsStore)
- Libs: Chart.js o Recharts para graficas
Riesgos
| Riesgo | Probabilidad | Impacto | Mitigacion |
|---|---|---|---|
| Queries lentas | Alta | Alto | Indices optimizados, cache, timeout |
| PDF grande tarda mucho | Media | Medio | Generacion async, notificacion al terminar |
| SQL injection en query builder | Baja | Critico | Parametros escapados, whitelist de campos |
Definition of Ready (DoR)
- Historias de usuario definidas
- Criterios de aceptacion claros
- Dependencias identificadas
- Estimacion completada
- Reportes base definidos (lista)
- KPIs por modulo definidos
- Sin bloqueadores activos
Definition of Done (DoD)
- Codigo implementado y revisado
- Tests pasando (unit, integration)
- Reportes predefinidos funcionando
- Exportacion PDF y Excel funcional
- Scheduler enviando emails
- Dashboard con al menos 3 graficas
- Documentacion actualizada
- Inventarios actualizados
- Demo realizada
- Product Owner aprobo
Documentacion Relacionada
- Requerimientos:
docs/03-requerimientos/RF-reports/ - User Stories:
docs/05-user-stories/mgn-009/ - DDL Spec:
docs/04-modelado/database-design/DDL-SPEC-core_reports.md
Historial
| Fecha | Cambio | Autor |
|---|---|---|
| 2025-12-05 | Creacion de epica | Requirements-Analyst |
| 2025-12-05 | Completado con Stakeholders, Riesgos, DoR/DoD | Requirements-Analyst |
| 2026-01-07 | Implementado DDL 14-reports.sql (12 tablas, 7 ENUMs) | Database-Agent |
| 2026-01-07 | Implementado DashboardsService, ExportService, 13 endpoints | Backend-Agent |
| 2026-01-07 | Movido a Sprint 8 - Estado: En Progreso | Orquestador |
Creada por: Requirements-Analyst Fecha: 2025-12-05 Ultima actualizacion: 2026-01-07