Ir al contenido

Arquitectura del Sistema

┌─────────────────────────────────────────────────────────────────┐
│ Backend Finalitix │
│ POST /api/v1/connection │
└──────────────────────────┬──────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────┐
│ finalitixspeiapi │
│ Node.js / Express + AWS X-Ray │
│ │
│ ┌─────────────────┐ ┌──────────────────────────────────┐ │
│ │ /api/v1/* │ │ /stp/v1/* │ │
│ │ connectionRoutes│ │ notificationRoutes │ │
│ └────────┬────────┘ └───────────────┬──────────────────┘ │
│ │ │ │
│ ▼ ▼ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ Controladores de negocio │ │
│ │ AccountController TransactionController │ │
│ │ TransactionNotificationController │ │
│ └──────┬──────────────────────┬──────────────────────────┘ │
│ │ │ │
│ ▼ ▼ │
│ ┌────────────┐ ┌────────────────────────────────────────┐ │
│ │ MySQL / │ │ lib/helper.js (AWS SDK) │ │
│ │ Sequelize │ │ ├── Secrets Manager (credenciales) │ │
│ └────────────┘ │ ├── Lambda (notificaciones) │ │
│ │ └── SQS (Odoo, webhooks) │ │
│ └────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
│ │
▼ ▼
┌──────────────────┐ ┌────────────────────┐
│ STP Bank API │ │ AWS Services │
│ (institución) │ │ │
│ │ │ Lambda ×3 │
│ │ │ SQS ×2 │
│ PUT /stp/v1/ │ │ Secrets Manager │
│ account │ │ CloudWatch │
│ POST /stp/v1/ │ │ X-Ray │
│ transaction │ └────────┬───────────┘
│ PUT /stp/v1/ │ │
│ transaction │ ▼
└──────────────────┘ ┌────────────────────┐
│ Odoo ERP │
│ res.partner │
│ account.move │
└────────────────────┘

Flujo de datos — Operación saliente (Finalitix → STP)

Sección titulada «Flujo de datos — Operación saliente (Finalitix → STP)»
  1. Backend Finalitix llama POST /api/v1/connection con module, method y params
  2. connectionController despacha al controlador correcto vía finalitixHandler
  3. El controlador obtiene credenciales de AWS Secrets Manager
  4. Firma la operación con RSA-SHA256 usando la clave privada almacenada en el secreto
  5. Envía la petición al endpoint correspondiente de STP
  6. Guarda el resultado en MySQL vía Sequelize
  7. Publica mensajes en SQS para Odoo y webhooks
  8. Invoca Lambda para notificaciones email/SMS/WebSocket

Flujo de datos — Notificación entrante (STP → Finalitix)

Sección titulada «Flujo de datos — Notificación entrante (STP → Finalitix)»
  1. STP llama PUT /stp/v1/account o POST|PUT /stp/v1/transaction
  2. En producción: verifica la firma RSA con la clave pública de STP
  3. notificationController despacha a TransactionNotificationController
  4. Se actualiza el estado en MySQL
  5. Se publican mensajes en SQS → Odoo
  6. Se invocan Lambda de notificaciones al usuario
SistemaProtocoloPropósito
STP Bank APIHTTPS + RSARegistro cuentas, órdenes de pago, callbacks
AWS Lambda (×3)SDK síncrono/asíncronoEmail, SMS, WebSocket, contactos
AWS SQS (×2)SDK asíncronoPólizas Odoo, webhooks cliente
AWS Secrets ManagerSDKCredenciales DB y STP
AWS CloudWatchSDKLogs y métricas de latencia
AWS X-RayMiddlewareTrazabilidad distribuida
Odoo ERPSQS → consumidorContabilidad (account.move, res.partner)