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.

