Conversation
Sprint B · Calidad técnica. Nuevo script ETL/12-validate_paneles_runtime.R con 29 validaciones testthat que se ejecutan sobre los parquets de runtime tras regenerarlos. Si alguna falla, el script aborta con exit status != 0 y el workflow update_eph_data.yml no crea el PR de datos nuevos: prod queda intacta hasta que se diagnostique. Cubre 4 dimensiones: 1. Schema y tipos. Las 31 columnas esperadas existen en ambos parquets (intertrim + anual), con los tipos correctos (string/double/int32/bool). Detecta drift de eph::organize_panels o de la versión del paquete arrow. 2. Cobertura temporal. Mínimo 75 dúos trim / 65 anual, ambos arrancando en 2003-T3 (primer dúo histórico tras el cambio de operativo INDEC). Si un rebuild deja menos dúos, alerta. 3. Tamaño y atrición. Ningún dúo con n < 5000 (threshold conservador, los dúos chicos típicamente tienen ~10k filas). Ratio anual/trim promedio ∈ [40%, 120%] basado en el rango histórico observado al 2026-05-08 (ratio real: 44.5% a 102.9%, mean 88.7%). 4. Cross-validation. Las tasas (Persistencia/Salida/Entrada) calculadas on-demand desde el parquet coinciden con las pre-calculadas en tasas_*_historico.csv hasta 0.5 pp. Detecta desincronización entre los dos pipelines (CSV histórico via 03-update_data, parquet via 09/09b). Integración al workflow: - testthat agregado al install_packages step de update_eph_data.yml. - Step "Validar parquets de runtime" insertado entre la regeneración de 09b y la creación del PR. Solo corre si has_new=='true'. Implementación notable: - MultiReporter (ProgressReporter + FailReporter) da feedback visual por test pero hace raise al final si alguno falló (FailReporter es silencioso por sí solo). - Constantes de threshold están al inicio del script con comentario sobre cuándo recalibrarlas. - Validado happy path (29 PASS) y degradado (1 FAIL → script exit != 0). Diferido a iteración futura (issue queda abierto): - Distribución de variables clave contra corte transversal de INDEC. - Regresión bit-a-bit (re-correr el ETL produce output idéntico). Necesitan datos de referencia que hoy no tenemos versionados. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
feat: validación de parquets de runtime como gate (#45)
Sprint B · Calidad técnica. Pasada mecánica para alinear el código a
las convenciones modernas tidyverse documentadas en
.claude/rules/r-conventions.md. Refactor sin cambio funcional: los
185 tests automatizados pasan igual antes y después.
Cambios:
- pmap_dfr / map_dfr → pmap()/map() |> list_rbind() (deprecados desde
purrr 1.0). 10 ocurrencias:
* ETL/04b-add_pp05_vars.R (descargas pp05)
* ETL/05-build_panel_cat_ocup.R
* ETL/06-build_panel_formalidad.R
* ETL/07-build_panel_formalidad_ampliada.R
* ETL/99-functions.R (regenerar_panel_historico, build_tasas_historico)
- group_by(X) |> mutate(...) |> ungroup() → mutate(..., .by = X)
(idiom moderno desde dplyr 1.1, evita state implícito de
agrupación). 2 ocurrencias en preparo_base() · ETL/99-functions.R.
- %>% magrittr → |> pipe nativo (R 4.1+). 3 líneas en
df_to_annotations_labels() · ETL/99-functions.R.
Diferidos a otro sprint (no abarca este PR):
- CSS muerto, perf con profvis, accesibilidad WCAG, dependencias
no usadas, refactor mod_analisis() genérico (#12).
Verificado: grep en R/ y ETL/ devuelve cero ocurrencias de los
patterns deprecated.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
refactor: barrer anti-patterns dplyr/purrr (#39, scope acotado)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Promoción de Sprint B a producción. Sin cambios visibles para el usuario; hardening interno.
Cambios:
Validación de los ETL de panel (intertrimestral e interanual) #45 Validación ETL paneles (commit 0204c50). Nuevo script
ETL/12-validate_paneles_runtime.Rcon 29 validaciones testthat (schema, cobertura, tamaño/atrición, cross-val tasas) que corren como gate dentro del workflowupdate_eph_data.ymldespués de regenerar los parquets. Si fallan, el workflow aborta y prod queda intacta.Revisión integral de la app: performance, deuda técnica y limpieza #39 Anti-patterns dplyr/purrr (commit 5830e4a). Refactor mecánico: 10 ocurrencias de
pmap_dfr/map_dfr→pmap()/map() |> list_rbind(), 2 degroup_by + ungroup→.by, 3 líneas de%>%→|>nativo. Sin cambio funcional (185 tests verde antes y después).GA4 ID: ya presente en ambas branches, no se requiere fix esta vez.
Test plan
deploy_shinyapps.yml.🤖 Generated with Claude Code