Repository navigation
v0.4.0 — ADR-001 portable-day1 cerrado
ADR-001 cerrado: portable-day1
Este release cierra el ADR-001 (ver `docs/adr/001-portable-day1.md`): el toolkit ahora entrega valor end-to-end desde un Excel corporativo sucio hasta un PDF ejecutivo, pasando por warehouses cloud con dialecto-aware.
Skills nuevas (3)
- `excel-profiler` — Detecta hoja con datos, fila de headers, merged cells, columnas con >30% nulos, columnas constantes, IDs únicos en Excels con merged cells, headers en filas 3-7, totales mal formateados.
- `report-export` — Exporta reporte ejecutivo a PDF (WeasyPrint + fallback pdfkit), PPTX (python-pptx nativo) o HTML standalone (imágenes embebidas en base64).
- `sql-cloud-warehouse` — Conexión a Snowflake, BigQuery o Redshift vía SQLAlchemy + driver oficial + snippets dialecto-aware (IFF/IF/CASE, DATE_TRUNC, TRY_CAST/SAFE_CAST, GETDATE).
Recetas importables
- 8 funciones en `skills/report-export/recetas/` (parse_insights, render_plotly, build_pdf, build_ppt, build_html, verify_*)
- 6 módulos en `skills/sql-cloud-warehouse/recetas/` (connect, introspect, dialect_snippets, validate, errors)
- Loader `skills_loader.py` para resolver el problema de imports con guión en nombres de skills.
Demos end-to-end
- `examples/excel_sample/` — sample sucio + test que detecta 3 hojas, header en fila 5, columna email 52% nulos, columna país constante.
- `examples/report_export_sample/` — 3 gráficos Plotly + insights.md → PDF 86KB + PPTX 126KB (6 slides) + HTML 139KB.
- `examples/sql_cloud_warehouse_sample/` — demo offline (sin credenciales) + demo con SQLite mock para validar introspección + JOIN discovery.
Smoke tests
```bash
make test-excel # excel-profiler end-to-end
make test-export-pdf # report-export → PDF
make test-export-ppt # report-export → PPTX
make test-export-html # report-export → HTML
make test-sql-cloud-offline # dialect snippets + validate + errores
```
Targets skipped (corren solo si tenés credenciales reales):
`make test-snowflake` / `test-bigquery` / `test-redshift` ejecutan `SELECT 1` contra el warehouse.
Peer dependencies opcionales
Las deps cloud son peerDeps opcionales — el usuario instala solo la que use. La skill emite error accionable con `pip install` si falta:
| Dep | Tamaño | Cuándo |
| |---|---|
| snowflake-connector-python | ~50MB | target=Snowflake |
| sqlalchemy-bigquery + google-cloud-bigquery | ~30MB | target=BigQuery |
| sqlalchemy-redshift + redshift-connector | ~20MB | target=Redshift |
SQLAlchemy, kaleido, python-pptx, weasyprint también son peerDeps (5-50MB cada una).
PRDs / ADRs incluidos
- `docs/adr/001-portable-day1.md` — decisión arquitectónica firmada 2026-09-14.
- `docs/prd/excel-profiler.md` + `docs/prd/report-export.md` + `docs/prd/sql-cloud-warehouse.md` — specs completos con workflow 6 fases, recetas y criterios de listo.
Próximo: ADR-002
Quedan como follow-up (ADR-002):
- `api-builder` — FastAPI wrapper para deployar análisis como servicio
- `excel-formulas` — lectura de fórmulas en Excel para auditoría
- `sql-write` — escritura/DDL guarded (solo lectura por ahora)
- Databricks SQL — extensión de sql-cloud-warehouse
- Audit logging — qué agente disparó qué query en producción