La idea es pasar a un modelo de stanging de manera que el loader no sea tan disruptivo.
Subo lo modificado hasta el momento.
- Objetivo del trabajo
Alinear el loader para soportar ambientes prod/stg sin cambios manuales, asegurando:
Lecturas SQL con esquema parametrizado.
Escrituras no-geométricas mediante helper centralizado (sql_write) para redireccionar a audit_stg/cm_stg en staging.
- Cambios estructurales
Parámetros de ambiente
Agregados flags TARGET_ENV, FULL_RELOAD, DRY_RUN.
DATABASE_URI_STAGING (desde config o env var).
Función resolve_schema para mapear audit→audit_stg y cm→cm_stg en stg.
Constantes SCHEMA_AUDIT y SCHEMA_CM resueltas al inicio.
Helpers de I/O
sql_write (pandas) y sql_write_gdf (geopandas) centralizan escritura con esquema efectivo por ambiente.
sql_read para lecturas uniformes (con soporte a GDF).
Conexión
setup_connection() elige DATABASE_URI o DATABASE_URI_STAGING según TARGET_ENV.
- Lecturas SQL (FROM/JOINS): normalización por ambiente
Se revisaron y parametrizaron (f-strings + SCHEMA_AUDIT) las funciones con lecturas sensibles:
import_cm_wkt_op_table
import_cm_ci_op_table
import_cm_ci_fosc_table
import_cm_ci_sfat_mfat_bfat_table
import_cm_ci_feeder_distribution_table (incluye fix del alias en where fraw.id_cm = wcables.name).
Con esto, las lecturas apuntan a audit o audit_stg según ambiente, sin tocar lógica/columnas.
- Escrituras migradas a sql_write (no-geométricas)
Se reemplazó to_sql(schema="...") por sql_write(...) en todas las tablas no-geométricas del script, de modo que en stg escriben en *_stg automáticamente:
RAW / CI: ci_site, ci_fosc_raw, ci_sfat_mfat_bfat_raw, ci_op_raw.
REPORTS: report_fusiones, report_e2e, report_isp_osp, cm_report_isp.
INVENTORY: inventory_fat_occupation, inventory_olt_occupation, inventory_mdu_bfat, ci_feeder_distribution_raw.
Otras: wkt_op_raw, wkt_cables, inventory_cable_occupation, wkt_fibra_raw.
Resultado: toda la salida no-geométrica respeta TARGET_ENV sin cambios manuales.
- Qué se mantuvo (geométricas)
Las tablas geométricas finales siguen escribiendo con to_postgis(schema="cm"):
ci_fosc, ci_headend, ci_sfat_mfat_bfat, ci_feeder_distribution.
Operan bien, pero en stg apuntarán a cm (no cm_stg). Migrarlas a sql_write_gdf es opcional si buscás aislamiento total por ambiente.
-
Grants
Se conservaron los GRANTs sobre esquemas literales cm/audit.
Si necesitás que en stg apliquen sobre cm_stg/audit_stg, se sugiere parametrizar con resolve_schema(...) (opcional).
-
Calidad y fixes menores
Se corrigieron faltas de prefijo f en queries con {SCHEMA_AUDIT} y un alias en feeder_distribution.
Detalle pendiente no crítico: en import_cm_ci_headend_table el geocoding referencia row.longituid (probable row.longitud). No afecta si no se usa with_geocoding=True.
- Estado final
Objetivo cumplido: ambiente parametrizado + escrituras no-geométricas alineadas a *_stg en staging.
Sin regresiones funcionales en el flujo principal (load_cm_tables).
Opcional para “cierre total”: migrar las 4 geométricas a sql_write_gdf y parametrizar GRANTs