Buscar en la documentación

Exportar a CSV

Exportar exactamente lo filtrado en el listado, con su tope, su registro en la auditoría y la protección contra fórmulas en Excel.

Módulo incidents1 min de lecturaVer en GitHub

“Exportar” descarga los incidentes del listado tal como están filtrados y ordenados. Usa los mismos parámetros, la misma validación, la misma visibilidad y la misma consulta del listado, así que el archivo nunca trae algo que la persona no podría ver en pantalla.

Diagrama4 carriles · 10 pasos · 3 salidas de error
SíNoSíNoSíNoPulsa Exportar1Pide confirmarcuántos saldrán2Pide GET/incidents/exportcon los filtros3¿Menos de 5exportacionesen el minuto?4Responde 429¿Tieneincidents.export(y restore sipideeliminados)?5Responde 403¿Son 50.000filas o menos?6Responde 422 contotal y topeRegistra laexportación en laauditoría7Lee por tandas de1.0008Escribe el CSVmientras lee9Guardaincidentes-AAAA-MM-DD-HHMM.csv10
Los números coinciden con el paso a paso. En pantallas pequeñas el diagrama se desliza de lado.

Paso a paso

  1. PersonaPulsa Exportar

    Monitor con texto; portátil solo el ícono; celular y tablet en el menú "Más opciones del listado".

  2. NavegadorPide confirmar cuántos saldrán

    "Se exportarán N con los filtros y el orden actuales, en un archivo CSV que se abre con Excel."

  3. NavegadorPide GET /incidents/export con los filtros
  4. API¿Menos de 5 exportaciones en el minuto?
  5. API¿Tiene incidents.export (y restore si pide eliminados)?
  6. Base de datos¿Son 50.000 filas o menos?

    Cuenta antes de leer. El tope es EXPORT_MAX_ROWS (50.000 por defecto).

  7. Base de datosRegistra la exportación en la auditoría

    Antes de enviar el archivo, porque una descarga cortada a mitad igual dejó salir datos. En admin_actions, tipo incidents_exported, con el número de filas y los filtros (estados y prioridades con código y nombre, personas por ULID).

  8. Base de datosLee por tandas de 1.000

    Con el orden del listado. Medido: 50.000 filas son 7,9 MB en 2,1 s y la memoria se mantiene en unos 28 MB.

  9. APIEscribe el CSV mientras lee

    Con BOM y ; para que Excel lo abra bien en español; fechas en la zona del negocio con el desfase en el encabezado; "Vencido" calculado. Una celda que empieza por =, +, -, @, tabulación o salto de línea lleva un apóstrofo delante, para que Excel no la ejecute como fórmula. Sin caché (no-store).

  10. NavegadorGuarda incidentes-AAAA-MM-DD-HHMM.csv

Qué ve la persona en cada error

CódigoHTTPCuándoMensaje en pantalla
EXPORT_TOO_LARGE422Más de 50.000 incidentes con esos filtrosCon estos filtros salen {total} incidentes y el máximo por archivo es {max}. Acota los filtros, por ejemplo con un rango de fechas, y vuelve a exportar.
TOO_MANY_REQUESTS429Más de 5 exportaciones en un minutoHiciste demasiados intentos seguidos. Espera {wait} y vuelve a intentarlo.
FORBIDDEN_ACTION403Sin permiso de exportarNo tienes permiso para hacer esta acción. Si crees que deberías tenerlo, habla con un administrador.

Como la descarga llega como archivo, el cliente HTTP lee el error dentro del blob para poder mostrar el mensaje correcto.

Dónde está en el código