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>
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
---
|
||||
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.
|
||||
Reference in New Issue
Block a user