1. Problema
Los usuarios con múltiples cuentas (empresa, personal, ahorro, conjunta, divisas, corretaje) no pueden ver en la aplicación cómo fluye el dinero entre sus cuentas en un ciclo determinado. El panel muestra saldos y categorías de gastos, pero no responde preguntas como:
- „¿Cuánto de la última factura realmente quedó en ahorros y cuánto fue solo de paso?‟
- „¿Desde qué cuenta se hicieron las transferencias a ahorro?‟
- „¿Qué queda pendiente de pago en este ciclo?‟
Actualmente, estos análisis se generan ad hoc en el chat con IA como un grafo textual — sin acceso a datos por cuenta, lo que obliga a usar heurísticas y suposiciones (ver: bug de falta de `account_id` y saldos por cuenta en el contexto analítico).
2. Propuesta
Vista interactiva nativa „Flujos‟ (pestaña junto a Patrimonio / Gastos), renderizada para un ciclo financiero o mes calendario seleccionado:
2.1. Estructura del grafo
- Nodos de entrada — fuentes de ingresos (facturas, salario, intereses) con importes.
- Nodos-cuenta — cada cuenta del usuario como nodo independiente con dos valores: flujo en el ciclo y saldo después del flujo.
- Nodos de salida — gastos agrupados por categoría, con importes.
- Aristas — transferencias con importes; color/tipo distingue transferencias propias (tránsito) de gastos reales.
2.2. Funciones clave
- Código de colores semántico: verde = ahorro/inversiones (el dinero permanece en el sistema del usuario), amarillo = tránsito entre cuentas, rojo = gastos (el dinero sale).
- Resumen del ciclo: cuánto fue a ahorros vs. gastos vs. tránsito — como barra/tabla debajo del grafo.
- Perspectiva temporal: conmutador ciclo financiero ↔ mes calendario; deslizador temporal para animar flujos.
- „Pendiente de pago‟: sección con obligaciones previstas aún no pagadas del ciclo (impuestos, cuotas, gastos fijos) — basada en patrones de pago detectados.
- Interactividad: clic en nodo/arista → desglose a lista de transacciones; hover → detalles de transferencia.
2.3. Datos requeridos (dependencias)
La funcionalidad requiere primero cerrar la brecha de datos:
- `account_id` por transacción — propagación del identificador de cuenta de origen a la capa analítica (hoy las transacciones se agregan por banco).
- Saldos por cuenta — desde el endpoint `GET /accounts/{id}/balances`, actualizado con cada sincronización.
- Mapeo de cuentas a roles — configurable por el usuario (empresa / personal / ahorro / conjunta / divisas / corretaje), guardado en el perfil; la IA puede proponerlos automáticamente basándose en patrones de transacciones (p. ej., ingreso de facturas + seguridad social → empresa).
Sin los puntos 1–2, el grafo tendrá el mismo problema que la solución actual de chat: direcciones asumidas, no confirmadas.
3. Valor para el usuario
- Conciencia, no solo registro: el usuario ve qué parte de los ingresos realmente queda (ahorros) vs. sale — en una sola imagen en lugar de reconstrucción manual.
- Verificación de hábitos: p. ej., „de cada factura ~17% va a ahorros‟ se vuelve visible de inmediato.
- Control de obligaciones: la sección „pendiente de pago‟ previene sorpresas al final del ciclo.
- Reducción de consultas a IA: el grafo responde a la clase de preguntas „adónde fue mi dinero‟ que hoy generan análisis extensos en el chat.
4. Alcance MVP vs. extensiones
MVP
Grafo estático por ciclo: cuentas + flujos + gastos por categoría, colores semánticos, tabla resumen
v1.1
Saldos después del flujo, desglose a transacciones, sección „pendiente de pago‟
v1.2
Animación temporal, comparación de ciclos, sugerencias de mapeo automático de roles de cuenta
- Riesgos
- Calidad de datos: sin `account_id` por transacción, el grafo será confuso — la funcionalidad debería iniciarse solo después de cerrar la brecha de datos (o con marcado explícito de asignaciones heurísticas).
- Complejidad visual: con >8 cuentas, el grafo se vuelve ilegible — se necesita agrupación (p. ej., contraer cuentas en divisas) y límites en número de nodos de gastos (top N + „otros‟).
- Clasificación de transferencias propias: la detección de pares de transferencia interna (mismo importe, mismo día, dos cuentas) debe ser robusta ante falta de datos y conversiones de divisas.