Skip to main content
La generación de informes tiene dos mitades. El manager acepta tu solicitud, la revisa y la entrega a una cola. El worker extrae los datos, renderiza la plantilla y escribe el archivo. Reporter responde a tu solicitud en cuanto termina la primera mitad, así que consultas el estado o escuchas la segunda. Ambas mitades se distribuyen en un solo binario. Un despliegue ejecuta la superficie de la API, la superficie del worker o ambas, y una cola lleva el trabajo entre ellas.

El recorrido de principio a fin


1

Solicitud

Llamas a Crear un informe con un identificador de plantilla y los filtros de fila que quieres. Reporter valida la solicitud y guarda el informe como Processing.
2

Extracción

El worker consulta cada fuente de datos que nombra la plantilla, una sección por fuente de datos, y conserva solo los campos que están en el mapa de campos de la plantilla.
3

Renderizado

Las filas extraídas se convierten en el contexto de la plantilla. Reporter renderiza el documento en el formato de salida de la plantilla.
4

Almacenamiento

Reporter escribe el archivo renderizado en el bucket de almacenamiento de objetos configurado y registra el estado final del informe.
5

Descarga

Llamas a Descargar un informe y recibes el archivo con su tipo de contenido y su nombre de archivo.

Qué hace el manager


El manager es responsable de todo lo que ocurre antes de la cola. Ejecuta cuatro verificaciones en orden, y cualquiera de ellas puede rechazar la solicitud directamente. Aplica idempotencia. Envía un encabezado X-Idempotency para nombrar la solicitud tú mismo. Si no envías uno, Reporter deriva la clave a partir del cuerpo de la solicitud. Reporter rechaza como duplicado la repetición de una solicitud en curso. La repetición de una solicitud completada devuelve el informe original y marca la respuesta con X-Idempotency-Replayed: true. La ventana es de 30 segundos. Resuelve la plantilla. Reporter carga el mapa de campos, el formato de salida y la descripción que pertenecen al identificador de la plantilla. Un identificador desconocido falla en este punto. Valida tus filtros. Cada campo por el que filtras se revisa contra el esquema activo de su fuente de datos. Un nombre de campo incorrecto hace fallar la solicitud en lugar de producir un informe vacío. Registra el informe y encola el trabajo. El informe se guarda como Processing y la respuesta regresa de inmediato con ese estado. Luego Reporter publica el comando de generación para el worker. El informe conserva su propia copia del formato de salida y la descripción de la plantilla. Esa instantánea es lo que hace que un informe antiguo sea reproducible después de que la plantilla cambie.

Qué hace el worker


El worker consume el comando y es responsable del resto del recorrido. Una cola puede entregar el mismo comando dos veces. Por eso el worker lee el informe antes de iniciar una ejecución: un informe que ya quedó resuelto como Finished o Error se deja como está, en lugar de generarse de nuevo. Luego carga el archivo de la plantilla desde el almacenamiento de objetos y extrae los datos. Cada fuente de datos es una sección. Una sección que falla no detiene a las demás. El worker recopila el resultado de cada sección y solo entonces decide el estado del informe. Cuando todas las secciones fallan, Reporter registra el fallo y omite el renderizado. Ningún archivo engañoso llega al bucket. El paso de renderizado convierte las secciones que sobrevivieron en el documento. Cuando el formato de salida es PDF, Reporter renderiza primero HTML y lo convierte mediante un pool de navegadores headless. Los bytes finales van al bucket, el estado final va al registro del informe y un evento final va al flujo de eventos.

Estados del informe


Un informe llega a uno de cuatro estados. Consulta Verificar el estado de un informe o consume el evento final. Un informe Partial lleva un resultado por sección en sus metadatos, que nombra las fuentes de datos que no respondieron: corrige esas fuentes de datos y luego genera el informe de nuevo. Descargar un informe entrega el artefacto una vez que el informe está Finished.

Límites de tiempo en el recorrido


Cada etapa lleva su propio límite, y un operador los configura por despliegue. Los límites de volumen acotan la misma ejecución: 10 fuentes de datos, 50 tablas por fuente de datos, 200 campos por tabla y 100 MiB de resultado extraído. Consulta Variables de entorno para conocer los ajustes detrás de cada uno.

Dónde encajan los plazos


Un plazo es una fecha de vencimiento con una regla de recurrencia, y puede nombrar la plantilla que lo satisface. Está junto al recorrido de generación, no dentro de él. Un plazo nunca inicia un informe. Generas el informe mediante el recorrido de solicitud anterior y luego marcas el plazo como entregado. Reporter recalcula un plazo al leerlo. Una obligación recurrente que lleva una marca de entrega avanza a su siguiente fecha de vencimiento en la primera lectura después de que pasa la fecha actual, y ese avance borra la marca. La operación de notificaciones devuelve los plazos dentro de su ventana de alerta cuando los solicitas. Consulta Gestión de plazos.

Almacenamiento y descarga


Los archivos renderizados viven en un bucket compatible con S3, bajo el prefijo reports/. Reporter almacena cada archivo bajo el identificador de la plantilla y lo nombra según el informe, de modo que los archivos permanecen agrupados por la plantilla que los produjo. La descarga devuelve los bytes con el tipo de contenido del formato de salida y un nombre de archivo construido a partir del identificador del informe. La descarga funciona después de que se elimina la plantilla, porque el informe conserva su propia instantánea del formato. Un informe se crea una vez y luego se conserva. Sus filtros, su estado y su archivo describen exactamente la solicitud que los produjo.
Reporter conserva los archivos renderizados en el bucket. Configura la retención con una política de ciclo de vida en el propio bucket.

Próximos pasos


Motor de plantillas de Reporter

El mapa de campos, el contexto de datos y los dos tipos de filtro.

Usar Reporter

Sube una plantilla, genera un informe y descarga el resultado.

Gestión de plazos

Rastrea una obligación regulatoria y márcala como entregada.

Arquitectura de Reporter

Un binario, dos superficies y los almacenes que comparten.