egutierrez
d412522db9
feat(eda): capítulo CALIDAD del AutomaticEDA (criterios + scores + problemas ES)
...
Añade el capítulo de calidad de datos al motor AutomaticEDA, siguiendo el
contrato de capítulos (build_calidad(profile, ctx) -> Chapter | None,
CHAPTER_VERSION). El capítulo responde lo que pidió el usuario, en español y
en formato de tabla:
- Intro "Cómo se calcula la calidad": explica los tres criterios y sus pesos
(completitud 50%, validez 30%, consistencia 20%) antes de cualquier número,
más una KVTable de resumen a nivel tabla (calidad global y agregados).
- Tabla "Scores por columna": score total más su desglose en completitud /
validez / consistencia, ordenada de peor a mejor.
- Tabla "Problemas detectados": los issues en español por columna, separados de
los flags de tipo. Cuando no hay problemas, una nota honesta.
Registry-first: el desglose y los issues NO se recalculan aquí; se consumen de
la función pura del registry column_quality_score (grupo eda), que ya deriva
{score, completeness, validity, consistency, issues} del ColumnProfile. El
capítulo es render-only y compone bloques del modelo; los renderers paginan las
tablas (parten por filas repitiendo cabecera) y envuelven celdas largas, de modo
que nada se corta en PDF ni en PPTX. La lista de issues por celda se acota a
160 caracteres con "(+N más)" para que una fila nunca crezca más que una página.
Test self-contained (sin DuckDB): golden con desglose + issues ES, edges
(None/{}/sin columnas -> None; perfil limpio -> nota), y anti-cortes (perfil de
22 columnas con nombres largos renderizado a PDF y PPTX: el nombre completo
sobrevive al envolverse, sin marcador de truncado).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-30 14:59:10 +02:00
..
2026-06-30 14:59:10 +02:00
2026-06-29 06:37:47 +02:00
2026-06-30 14:30:31 +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-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-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-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-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-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-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-05-16 16:33:22 +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-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-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-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-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-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-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-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