egutierrez
048781df3f
feat(eda): portada — tamaño grande + descripción/granularidad reales
...
El capítulo PORTADA ahora muestra SIEMPRE el tamaño del dataset (N filas ×
M columnas) en grande, como heading junto al nombre y agrupado con él
(Group keep-together), en lugar de enterrarlo en la tabla de metadatos.
La Descripción y la Granularidad ya no salen vacías ni con placeholders:
se resuelven por cascada — ctx explícito > bloque LLM (profile['llm'].summary
/ row_meaning de eda_llm_insights) > derivación del propio perfil (forma,
mezcla de tipos y score de calidad para la descripción; columnas
key_candidates o la forma de la tabla para una frase 'Cada fila es…').
Las derivaciones son honestas (declaran que vienen del perfil) y nunca
inventan significado de negocio.
Añade chapters/portada_test.py: golden (tamaño grande + textos del LLM,
sin fila 'Tamaño' duplicada), fallbacks sin LLM (keys / forma), prioridad
de ctx, edge de perfil vacío sin lanzar, y render a PDF + PPTX.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-30 18:04:05 +02:00
..
2026-06-30 18:04:05 +02:00
2026-06-29 06:37:47 +02:00
2026-06-30 17:35:19 +02:00
2026-06-29 03:51:11 +02:00
2026-06-29 03:34:01 +02:00
2026-06-29 03:34:01 +02:00
2026-06-30 17:35:19 +02:00
2026-06-30 17:35:19 +02:00
2026-06-30 17:35:19 +02:00
2026-06-29 03:51:11 +02:00
2026-06-29 03:34:01 +02:00
2026-06-29 03:34:01 +02:00
2026-04-05 17:11:32 +02:00
2026-05-16 16:33:22 +02:00
2026-04-05 17:11:32 +02:00
2026-05-16 16:33:22 +02:00
2026-05-04 23:35:22 +02:00
2026-05-14 00:28:20 +02:00
2026-05-04 23:35:22 +02:00
2026-06-30 15:29:33 +02:00
2026-06-30 15:29:33 +02:00
2026-06-30 15:29:33 +02:00
2026-06-29 06:37:47 +02:00
2026-06-29 03:34:01 +02:00
2026-06-29 06:37:47 +02:00
2026-05-14 00:28:20 +02:00
2026-05-14 00:28:20 +02:00
2026-05-04 23:35:22 +02:00
2026-06-30 14:54:49 +02:00
2026-06-30 14:54:49 +02:00
2026-06-30 14:54:49 +02:00
2026-06-20 18:22:23 +02:00
2026-06-20 18:22:23 +02:00
2026-06-20 18:22:23 +02:00
2026-06-30 16:08:41 +02:00
2026-06-30 16:08:41 +02:00
2026-06-30 16:08:41 +02:00
2026-04-05 17:11:32 +02:00
2026-04-05 18:45:16 +02:00
2026-04-05 17:11:32 +02:00
2026-06-30 15:29:33 +02:00
2026-06-30 15:29:33 +02:00
2026-06-30 15:29:33 +02:00
2026-06-20 18:22:23 +02:00
2026-06-20 18:22:23 +02:00
2026-06-20 18:22:23 +02:00
2026-04-05 17:11:32 +02:00
2026-04-05 18:45:16 +02:00
2026-04-05 17:11:32 +02:00
2026-06-30 15:04:10 +02:00
2026-06-30 15:04:10 +02:00
2026-06-30 15:04:10 +02:00
2026-06-30 15:04:10 +02:00
2026-06-30 15:04:10 +02:00
2026-06-30 15:04:10 +02:00
2026-06-14 23:55:16 +02:00
2026-05-16 16:33:22 +02:00
2026-06-20 18:22:23 +02:00
2026-06-20 18:22:23 +02:00
2026-06-20 18:22:23 +02:00
2026-06-20 18:22:23 +02:00
2026-06-20 18:22:23 +02:00
2026-06-20 18:22:23 +02:00
2026-06-20 18:22:23 +02:00
2026-06-20 18:22:23 +02:00
2026-06-20 18:22:23 +02:00
2026-06-20 18:22:23 +02:00
2026-06-20 18:22:23 +02:00
2026-06-20 18:22:23 +02:00
2026-04-05 17:11:32 +02:00
2026-06-28 18:16:24 +02:00
2026-04-05 17:11:32 +02:00
2026-05-16 16:33:22 +02:00
2026-04-05 17:11:32 +02:00
2026-04-05 17:11:32 +02:00
2026-05-16 16:33:22 +02:00
2026-04-05 17:11:32 +02:00
2026-06-21 21:43:08 +02:00
2026-06-21 21:43:08 +02:00
2026-06-30 14:57:27 +02:00
2026-06-30 14:57:27 +02:00
2026-06-30 14:57:27 +02:00
2026-06-20 18:22:23 +02:00
2026-06-20 18:22:23 +02:00
2026-06-20 18:22:23 +02:00
2026-06-29 06:37:47 +02:00
2026-06-29 06:37:47 +02:00
2026-04-05 17:11:32 +02:00
2026-05-16 16:33:22 +02:00
2026-04-05 17:11:32 +02:00
2026-06-30 15:29:33 +02:00
2026-06-30 15:29:33 +02:00
2026-06-30 15:29:33 +02:00
2026-05-16 16:33:22 +02:00
2026-06-30 15:35:42 +02:00
2026-06-30 15:35:42 +02:00
2026-06-30 15:35:42 +02:00
2026-04-05 17:11:32 +02:00
2026-05-16 16:33:22 +02:00
2026-04-05 17:11:32 +02:00
2026-04-05 17:11:32 +02:00
2026-05-16 16:33:22 +02:00
2026-04-05 17:11:32 +02:00
2026-06-21 14:22:55 +02:00
2026-06-20 18:22:23 +02:00
2026-06-21 14:22:55 +02:00
2026-05-14 00:28:20 +02:00
2026-06-21 14:22:55 +02:00
2026-06-21 14:22:55 +02:00
2026-05-14 00:28:20 +02:00
2026-06-29 03:51:11 +02:00
2026-06-29 03:34:01 +02:00
2026-06-29 03:34:01 +02:00
2026-04-30 16:33:38 +02:00
2026-04-30 16:33:38 +02:00
2026-04-05 17:11:32 +02:00
2026-04-05 18:45:16 +02:00
2026-04-05 17:11:32 +02:00
2026-05-04 23:35:22 +02:00
2026-05-04 23:35:22 +02:00
2026-04-30 16:41:09 +02:00
2026-04-30 16:41:09 +02:00
2026-04-05 17:11:32 +02:00
2026-04-05 18:45:16 +02:00
2026-04-05 17:11:32 +02:00
2026-05-14 00:28:20 +02:00
2026-05-04 23:35:22 +02:00
2026-06-30 15:35:42 +02:00
2026-06-30 15:35:42 +02:00
2026-06-30 15:35:42 +02:00
2026-05-14 00:28:20 +02:00
2026-05-04 23:35:22 +02:00
2026-06-29 03:51:11 +02:00
2026-06-29 03:34:01 +02:00
2026-06-29 03:34:01 +02:00
2026-06-20 18:22:23 +02:00
2026-06-20 18:22:23 +02:00
2026-06-20 18:22:23 +02:00
2026-06-20 18:22:23 +02:00
2026-06-20 18:22:23 +02:00
2026-06-20 18:22:23 +02:00
2026-05-14 00:28:20 +02:00
2026-05-04 23:35:22 +02:00
2026-05-04 23:35:22 +02:00
2026-05-04 23:35:22 +02:00
2026-05-04 23:35:22 +02:00
2026-05-04 23:35:22 +02:00
2026-04-30 16:33:38 +02:00
2026-04-30 16:33:38 +02:00
2026-04-30 16:41:09 +02:00
2026-05-04 14:43:35 +02:00
2026-06-30 15:33:55 +02:00
2026-06-30 15:33:55 +02:00
2026-06-30 15:33:55 +02:00
2026-05-16 16:33:22 +02:00
2026-04-05 17:11:32 +02:00
2026-05-14 00:28:20 +02:00
2026-04-05 17:11:32 +02:00
2026-05-16 16:33:22 +02:00
2026-06-29 06:37:47 +02:00
2026-06-29 06:37:47 +02:00
2026-06-29 06:37:47 +02:00
2026-06-20 18:22:23 +02:00
2026-06-20 18:22:23 +02:00
2026-06-20 18:22:23 +02:00
2026-06-20 18:22:23 +02:00
2026-06-20 18:22:23 +02:00
2026-06-20 18:22:23 +02:00
2026-05-14 00:28:20 +02:00
2026-05-04 23:35:22 +02:00
2026-06-20 18:22:23 +02:00
2026-06-20 18:22:23 +02:00
2026-06-20 18:22:23 +02:00
2026-05-14 00:28:20 +02:00
2026-05-04 23:35:22 +02:00
2026-05-04 23:35:22 +02:00
2026-04-05 17:11:32 +02:00
2026-05-14 00:28:20 +02:00
2026-04-05 17:11:32 +02:00
2026-04-05 17:11:32 +02:00
2026-05-14 00:28:20 +02:00
2026-04-05 17:11:32 +02:00
2026-05-14 00:28:20 +02:00
2026-05-14 00:28:20 +02:00
2026-05-04 23:35:22 +02:00
2026-05-04 23:35:22 +02:00
2026-05-04 23:35:22 +02:00
2026-06-20 18:22:23 +02:00
2026-06-20 18:22:23 +02:00
2026-06-20 18:22:23 +02:00
2026-06-20 18:22:23 +02:00
2026-06-20 18:22:23 +02:00
2026-06-20 18:22:23 +02:00
2026-05-14 00:28:20 +02:00
2026-04-02 22:03:51 +02:00
2026-04-05 18:45:16 +02:00
2026-04-02 22:03:51 +02:00
2026-06-20 18:22:23 +02:00
2026-06-20 18:22:23 +02:00
2026-06-20 18:22:23 +02:00
2026-05-04 23:35:22 +02:00
2026-05-04 23:35:22 +02:00
2026-06-20 18:22:23 +02:00
2026-06-20 18:22:23 +02:00
2026-06-20 18:22:23 +02:00
2026-05-14 00:28:20 +02:00
2026-06-30 15:33:55 +02:00
2026-06-30 15:33:55 +02:00
2026-06-30 15:33:55 +02:00
2026-04-05 17:11:32 +02:00
2026-05-14 00:28:20 +02:00
2026-04-05 17:11:32 +02:00
2026-05-14 00:28:20 +02:00
2026-05-04 23:35:22 +02:00
2026-05-14 00:28:20 +02:00
2026-05-04 23:35:22 +02:00
2026-06-30 17:35:19 +02:00
2026-06-30 17:35:19 +02:00
2026-06-30 17:35:19 +02:00
2026-06-30 15:35:42 +02:00
2026-06-30 15:35:42 +02:00
2026-06-30 15:35:42 +02:00
2026-06-30 14:57:27 +02:00
2026-06-30 14:57:27 +02:00
2026-06-30 14:57:27 +02:00
2026-06-20 18:22:23 +02:00
2026-06-20 18:22:23 +02:00
2026-06-20 18:22:23 +02:00
2026-06-21 14:22:55 +02:00
2026-06-21 14:22:55 +02:00
2026-06-21 14:22:55 +02:00
2026-05-14 00:28:20 +02:00
2026-05-04 23:35:22 +02:00
2026-06-21 21:43:08 +02:00
2026-06-21 21:43:08 +02:00
2026-05-14 00:28:20 +02:00
2026-05-04 23:35:22 +02:00
2026-06-30 14:30:31 +02:00
2026-06-30 14:30:31 +02:00
2026-06-30 14:30:31 +02:00
2026-06-30 14:30:31 +02:00
2026-06-30 14:30:31 +02:00
2026-06-30 14:30:31 +02:00
2026-06-29 04:05:38 +02:00
2026-06-20 18:22:23 +02:00
2026-06-29 04:05:38 +02:00
2026-06-29 04:05:38 +02:00
2026-06-29 03:34:01 +02:00
2026-06-29 04:05:38 +02:00
2026-05-14 00:28:20 +02:00
2026-04-02 22:03:51 +02:00
2026-06-30 15:35:42 +02:00
2026-06-30 15:35:42 +02:00
2026-06-30 15:35:42 +02:00
2026-05-14 00:28:20 +02:00
2026-06-20 18:22:23 +02:00
2026-06-20 18:22:23 +02:00
2026-06-21 14:22:55 +02:00
2026-06-20 18:22:23 +02:00
2026-06-20 18:22:23 +02:00
2026-06-20 18:22:23 +02:00
2026-06-14 23:55:16 +02:00
2026-06-14 23:55:16 +02:00
2026-06-20 18:22:23 +02:00
2026-06-20 18:22:23 +02:00
2026-06-14 23:55:16 +02:00
2026-06-14 23:55:16 +02:00
2026-06-14 23:55:16 +02:00
2026-06-14 23:55:16 +02:00
2026-06-14 23:55:16 +02:00
2026-06-14 23:55:16 +02:00
2026-06-30 15:33:55 +02:00
2026-06-30 15:33:55 +02:00
2026-06-30 15:33:55 +02:00
2026-05-04 23:35:22 +02:00
2026-05-04 23:35:22 +02:00
2026-06-20 18:22:23 +02:00
2026-06-20 18:22:23 +02:00
2026-06-20 18:22:23 +02:00
2026-05-14 00:28:20 +02:00
2026-06-29 06:37:47 +02:00
2026-06-29 03:34:01 +02:00
2026-06-29 06:37:47 +02:00
2026-06-30 15:33:55 +02:00
2026-06-30 15:33:55 +02:00
2026-06-30 15:33:55 +02:00
2026-06-29 03:51:11 +02:00
2026-06-29 03:34:01 +02:00
2026-06-29 03:34:01 +02:00
2026-06-20 18:22:23 +02:00
2026-06-20 18:22:23 +02:00
2026-06-20 18:22:23 +02:00
2026-06-20 18:22:23 +02:00
2026-06-20 18:22:23 +02:00
2026-06-20 18:22:23 +02:00
2026-06-21 14:22:55 +02:00
2026-06-21 14:22:55 +02:00
2026-06-21 14:22:55 +02:00
2026-05-04 23:35:22 +02:00
2026-05-04 23:35:22 +02:00
2026-06-20 18:22:23 +02:00
2026-06-20 18:22:23 +02:00
2026-06-20 18:22:23 +02:00
2026-06-29 03:51:11 +02:00
2026-06-29 03:34:01 +02:00
2026-06-29 03:34:01 +02:00
2026-05-14 00:28:20 +02:00
2026-05-04 23:35:22 +02:00
2026-06-20 18:22:23 +02:00
2026-06-20 18:22:23 +02:00
2026-06-20 18:22:23 +02:00
2026-05-04 23:35:22 +02:00
2026-05-04 23:35:22 +02:00
2026-05-13 00:50:34 +02:00
2026-05-13 00:50:34 +02:00
2026-05-13 00:50:34 +02:00
2026-05-13 00:50:34 +02:00
2026-05-14 00:28:20 +02:00
2026-05-04 23:35:22 +02:00