Files
mercadodevida/work/artifacts/F-150/architect.md
2026-08-22 13:08:16 +02:00

1.2 KiB

F-150 — Architect

Feature

Reporting: CSV export.

Objetivo

Exportar datasets filtrados a CSV con permisos, metadatos y paginación/servidor streaming.

Diseño

Ruta backend

GET /reporting/export/:report?from=&to=&...

  • :report ∈ {summary, sales, products}
  • Requiere REPORTING_EXPORT (admin y editor).
  • Filtros iguales que los endpoints de reporting existentes.
  • Content-Type: text/csv; charset=utf-8.
  • Content-Disposition: attachment; filename="<report>-<from>-<to>.csv".
  • Streaming: Fetch por páginas (500 rows por página) y escribir cada página al stream raw.
  • CSV headers: filas de metadatos (primera línea # report:..., from:..., to:..., exported_at:...).

Admin

  • Componente <ExportButton report="sales" filters={...} />.
  • Botón que abre el CSV en nueva pestaña.

Acceptance Criteria

AC1: GET /reporting/export/{summary|sales|products} devuelve CSV válido. AC2: Permiso REPORTING_EXPORT requerido (admin y editor). AC3: Streaming: respuesta grande no carga todo en memoria. AC4: CSV con headers de metadatos (# report, from, to, exported_at). AC5: Admin ExportButton en las páginas de reporting. AC6: tsc 0, verify.sh verde.