# US-MGN-006-005-001: Dashboard de Compras

**RF Asociado:** [RF-MGN-006-006](../../02-modelado/requerimientos-funcionales/mgn-006/RF-MGN-006-006-reportes-de-compras.md)
**Módulo:** MGN-006 - Compras Básico
**Epic:** Reportes de Compras
**Prioridad:** P1
**Story Points:** 3
**Sprint:** Sprint 15
**Estado:** Ready for Development
**Fecha:** 2025-11-24

---

## User Story
**Como** gerente de compras,
**Quiero** visualizar dashboard con métricas clave de compras,
**Para** monitorear KPIs y tomar decisiones informadas.

---

## Descripción Detallada
Dashboard muestra:
- Total de PO por estado (draft, purchase, done, cancelled)
- Monto total de compras (mes actual, acumulado año)
- Top 10 proveedores por volumen
- PO próximas a vencer
- Recepciones pendientes
- Tasa de devoluciones

Gráficos: barras, líneas, pie charts.

---

## Criterios de Aceptación

### Escenario 1: Visualizar dashboard con métricas (Camino Feliz)
**Dado que** hay PO y recepciones en el sistema,
**Cuando** accedo al dashboard,
**Entonces** veo: total PO por estado, monto compras mes, top proveedores, gráficos.

### Escenario 2: Filtrar por rango de fechas
**Dado que** selecciono rango 2024-01-01 a 2024-03-31,
**Cuando** aplico filtro,
**Entonces** dashboard muestra métricas solo de ese período.

### Escenario 3: Drill-down en métricas
**Dado que** hago clic en "PO en estado draft (5)",
**Cuando** sistema procesa,
**Entonces** navego a lista de PO filtradas por estado draft.

---

## Reglas de Negocio
- **RN-1:** Métricas en tiempo real.
- **RN-2:** Filtros: fecha, proveedor, estado.
- **RN-3:** Drill-down a detalle.

---

## Tareas Técnicas

### Backend
- [ ] Endpoint: GET /api/v1/purchase/reports/dashboard
- [ ] Service: PurchaseReportService.getDashboard(filters)
- [ ] Queries agregadas optimizadas
- [ ] Caché de métricas (5 min)
- [ ] Unit tests
- [ ] Integration tests
- [ ] Swagger docs

### Frontend
- [ ] Página: PurchaseDashboardPage.tsx
- [ ] Componentes: MetricCard, Chart (recharts)
- [ ] Filtros: fecha, proveedor
- [ ] API client: purchaseReportApi.getDashboard()
- [ ] Component tests
- [ ] E2E test

### Database
- [ ] Views materializadas para métricas
- [ ] Índices optimizados

---

## Estimación Detallada
| Tarea | Horas |
|-------|-------|
| Backend | 2 |
| Frontend | 2.5 |
| Testing | 1 |
| Code Review | 0.5 |
| **TOTAL** | **6 horas = 3 SP** |

---

## Definition of Done
- [ ] Código implementado según ET
- [ ] Tests pasando (>80%)
- [ ] Code review aprobado
- [ ] Métricas correctas
- [ ] Gráficos funcionan
- [ ] QA validado
- [ ] PO aprobado

---

## Referencias
- [RF-MGN-006-006](../../02-modelado/requerimientos-funcionales/mgn-006/RF-MGN-006-006-reportes-de-compras.md)
- [Traceability](../../02-modelado/trazabilidad/TRACEABILITY-MGN-006.yaml)
