Files
fn_registry/dev/flows/0003-bbva-movimientos.md
T
egutierrez a03675113a chore: auto-commit (286 archivos)
- .claude/agents/fn-orquestador/SKILL.md
- .claude/commands/fn_claude.md
- .claude/rules/INDEX.md
- .claude/rules/cpp_apps.md
- .claude/rules/ids_naming.md
- CHANGELOG.md
- apps/dag_engine/README.md
- apps/dag_engine/api.go
- apps/dag_engine/dags_migrated/example.yaml
- apps/dag_engine/dags_migrated/example_lineage_tracking.yaml
- ...

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-16 16:33:22 +02:00

70 lines
2.7 KiB
Markdown

---
name: bbva-movimientos
id: 0003
status: pending
created: 2026-05-16
updated: 2026-05-16
priority: high
risk: high
related_issues: [0097, 0098]
apps:
- navegator_dashboard
- dag_engine
- data_factory
- auto_metabase
trigger: manual
schedule: ""
expected_runtime_s: 120
tags: [scraping, banking, auth-required, sensitive-data]
---
## Goal
Caso de uso REAL con auth + datos sensibles. Probar persistencia local (duckdb en vault privado) + visualizacion en Metabase. Demuestra que el stack funciona para finanzas personales sin exfiltrar datos a la nube.
## Pre-requisitos
- Vault `~/vaults/finanzas/` existe + symlink en `projects/finanzas_personales/vaults/` (crear projecto si no).
- Chrome con sesion BBVA logueada manualmente (no automatizar login).
- Metabase local en docker (`auto_metabase` provee).
- `claude` CLI para AutoExtract.
## Flow
1. User abre Chrome + login BBVA + navega a "Movimientos cuenta principal".
2. navegator_dashboard panel Pick: click sobre primera fila de la tabla movimientos. Verifica selector capturado.
3. Panel AutoExtract: URL actual del tab. Click "Open & Analyze" (puede tardar, pagina compleja).
4. Esperar schema propuesto. Refinar:
- `date` (string DD/MM/YYYY o YYYY-MM-DD)
- `concept` (string)
- `amount` (float, parsea `,` -> `.`)
- `balance` (float)
5. Save recipe `bbva_movimientos.yaml`.
6. **Trigger manual SOLO** (no schedule — requiere login activo).
7. Sink: duckdb local en `~/vaults/finanzas/bbva.duckdb` (tabla `movimientos`).
8. data_factory: node `bbva_movimientos` kind=extractor + node `vault_finanzas_duckdb` kind=database.
9. Transformer: `aggregate_by_group_py_datascience` por mes -> tabla `mensual_summary`.
10. Sink Metabase: `metabase_create_card_py_infra` con SQL contra duckdb (via attachment Metabase si soporta, o via parquet export).
## Acceptance
- [ ] Recipe creada y testeada.
- [ ] Run manual extrae >=30 movimientos (1 mes).
- [ ] DuckDB `~/vaults/finanzas/bbva.duckdb` tabla `movimientos` poblada.
- [ ] data_factory muestra ambos nodos con runs.
- [ ] Card Metabase creado con grafico "gasto mensual" via auto_metabase.
- [ ] Datos NO viajan a registry.organic-machine (verificar: solo `pc_locations` registra que existe; el vault esta gitignored).
## Telemetria esperada
- `function_stats.cdp_extract_recipe_py_pipelines`: calls += 1 (manual).
- `data_factory.runs`: 1 entry status=success.
- `auto_metabase`: 1 card creado.
## Notas
- **NO commitear** `~/vaults/finanzas/` (gitignored por defecto).
- Si la sesion expira: re-login manual + re-run.
- Si BBVA cambia DOM: AutoExtract identifica nuevos selectors. Edit recipe + redeploy.
- Privacidad: revisar `call_monitor.calls` que solo guarda `args_hash`, NUNCA valores concretos de movimientos.