# F-148 — Architect ## Feature Admin: sales dashboard and channel views. ## Background F-146 implementó ReportingService (summary + sales endpoints). F-147 creó la shell admin (filters, KPI grid, dataAvailability). F-148 presenta los datos reales en un dashboard con tendencias, desglose por canal y ranking de tiendas/terminales. ## Objetivo - Dashboard `/reporting/dashboard` con: - Tendencias de ventas (bar chart por día/semana) - Desglose por canal (ecommerce vs POS vs admin) - Top tiendas por ventas - Top terminales POS - Reusar: DateRangePicker de F-147, reporting-client.ts ## Diseño ### Tendencias (bar chart SVG) - Fetch `/api/reporting/sales?groupBy=day&pageSize=90` (últimos 90 días) - Render barras SVG con altura proporcional al grossSalesCents - Tooltip on hover (día + importe) - Período configurable (7d / 30d / 90d) ### Desglose por canal - Fetch con `groupBy=channel` - Mostrar 3 cards: ecommerce / POS / admin - Cada una con: importe total, % del total, número de pedidos ### Top tiendas - Fetch con `groupBy=store&pageSize=10` - Tabla: tienda, pedidos, importe, % del total - Solo se muestra si el usuario tiene acceso a múltiples tiendas ### Top terminales - Fetch con `groupBy=terminal&pageSize=10` - Tabla: terminal, tienda, pedidos, importe ## Acceptance Criteria AC1: Dashboard muestra tendencias con barra SVG. AC2: Desglose por canal muestra ecommerce/POS/admin con %. AC3: Top tiendas con tabla ordenada por importe. AC4: Filtros de rango de fechas y canal (reutiliza DateRangePicker de F-147). AC5: Estados loading/empty/error explícitos. AC6: tsc 0, verify.sh verde.