Del CSV a 300 informes: cómo se generan por lote
La arquitectura que separa cálculo, diseño y salida, por qué Quarto no siempre es la herramienta y los cuatro controles que evitan enviar un informe mal.
La arquitectura que separa cálculo, diseño y salida, por qué Quarto no siempre es la herramienta y los cuatro controles que evitan enviar un informe mal.
Diseñar un informe de devolución es la mitad del trabajo. La otra mitad es producir trescientos sin que el coste crezca de forma proporcional y sin que se cuele un error en el número 187.
Este artículo describe cómo lo hago. Sirve tanto si vas a montarlo tú como si quieres saber qué preguntar a quien lo monte.
El error de partida es elegir una herramienta que hace las tres cosas y acabar peleándote con ella para la que peor hace.
1. El cálculo. Leer los datos crudos, puntuar las escalas, invertir los ítems que toque, calcular percentiles o rangos del grupo, decidir qué bloques condicionales se activan para cada persona. Esto es R o Python, y no hay discusión.
2. El diseño. Tipografía, retícula, figuras, jerarquía, el texto que envuelve cada número. Esto es maquetación y quiere herramientas de maquetación.
3. La salida. Convertir cada combinación de plantilla y datos en un archivo.
La capa 1 no debería saber nada de la 2. Si tu script de análisis contiene decisiones de tipografía, has mezclado capas y cada cambio de diseño te obligará a tocar el código de estadística.
La frontera limpia entre ambas es un archivo de datos por participante: el cálculo produce un JSON con todo lo que el informe necesita, y el diseño lo consume sin saber de dónde salió.
{
"codigo": "EST-0147",
"oleadas": [
{ "etiqueta": "Octubre", "tu": 54, "mediana": 61, "q1": 48, "q3": 72 },
{ "etiqueta": "Febrero", "tu": 47, "mediana": 58, "q1": 45, "q3": 70 },
{ "etiqueta": "Junio", "tu": 63, "mediana": 60, "q1": 47, "q3": 71 }
],
"areas": [ "…" ],
"bloques": { "recursos_apoyo": true }
}
Con esa frontera, cambiar el color de una figura no toca el análisis, y corregir un cálculo no rompe la maqueta.
Quarto y R Markdown son excelentes y probablemente lo primero que te van a recomendar. Con
params y un bucle de render, generas los N informes sin más.
Es la elección correcta cuando el lector es técnico: un informe para el equipo investigador, un anexo metodológico, un cuaderno reproducible. Ahí Quarto no tiene rival y además te da reproducibilidad de serie.
Es la elección discutible cuando el lector es un participante y el documento es la cara visible del proyecto. La salida por defecto tiene aspecto de artículo académico, y conseguir un diseño propio exige plantillas de Typst o LaTeX. Acabas peleándote con un sistema de maquetación de documentos para lograr lo que en CSS son quince líneas.
Mi criterio: Quarto para lo que lee el equipo, HTML y CSS con impresión a PDF para lo que lee la persona participante. La misma capa de cálculo alimenta las dos.
La combinación que uso:
@page para el tamaño y los márgenes, y break-after: page para separar
hojas.Tres ventajas que compensan de sobra el montaje:
Control tipográfico total. Es CSS. Lo que puedas diseñar para web, puedes imprimirlo.
La misma fuente sirve dos veces. El HTML se imprime para el participante y, si te interesa, se publica como página web indexable. Un PDF es opaco para un buscador; una página no.
Las figuras son SVG escritos a mano. Sin biblioteca de gráficos, sin JavaScript, y con control exacto de cada marca. Puedes ver tres informes completos hechos así.
Aquí es donde se separa un lote profesional de uno artesanal. Generar 300 archivos es fácil; garantizar que los 300 están bien, no.
El fallo más frecuente y el más invisible: un texto un poco más largo en un participante concreto empuja el contenido y aparece una página en blanco, o peor, un bloque partido por la mitad.
No se comprueba a ojo abriendo PDF. Se mide: un script que, con el CSS de impresión aplicado, comprueba la altura de cada hoja contra el alto útil del papel y avisa de cuál se pasa y por cuánto.
Antes de lanzar el lote, genera a mano los informes de:
Estos cuatro descubren el 90% de los problemas de maquetación y de redacción condicional.
Suena obvio y casi nadie lo hace. Toma tres informes al azar del lote final, extrae las cifras y compáralas contra el conjunto de datos original. Un error de índice en el bucle produce trescientos informes perfectos con los datos de la persona equivocada, y no hay forma de notarlo mirando.
Un grep sobre los archivos generados buscando patrones de nombre, correo o documento de identidad. Barato de ejecutar, catastrófico de omitir.
El coste real no está en generar los archivos: eso son minutos de cómputo. Está en el diseño de la plantilla y en la redacción condicional, que se hacen una vez.
De ahí sale la consecuencia práctica más útil de todo este artículo: si un presupuesto de devolución crece de forma proporcional al número de participantes, los informes se están haciendo a mano. Pasar de 100 a 500 no debería cambiar el precio de forma significativa. Los rangos están en cuánto cuesta hacer informes de devolución.
Y antes de montar nada de esto, conviene tener cerradas las decisiones de contenido: qué se devuelve, con qué lenguaje y con qué salvaguardas. Están en la guía sobre cómo devolver los resultados de un estudio.
El Prototipo responde exactamente eso: un informe real, con tu estudio y tu marca, en una semana.