Arquitectura del Sistema
Diagrama de componentes
Sección titulada «Diagrama de componentes»┌─────────────────────────────────────────────────────────────────┐│ 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)»- Backend Finalitix llama
POST /api/v1/connectionconmodule,methodyparams connectionControllerdespacha al controlador correcto víafinalitixHandler- El controlador obtiene credenciales de AWS Secrets Manager
- Firma la operación con RSA-SHA256 usando la clave privada almacenada en el secreto
- Envía la petición al endpoint correspondiente de STP
- Guarda el resultado en MySQL vía Sequelize
- Publica mensajes en SQS para Odoo y webhooks
- 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)»- STP llama
PUT /stp/v1/accountoPOST|PUT /stp/v1/transaction - En producción: verifica la firma RSA con la clave pública de STP
notificationControllerdespacha aTransactionNotificationController- Se actualiza el estado en MySQL
- Se publican mensajes en SQS → Odoo
- Se invocan Lambda de notificaciones al usuario
Integraciones externas
Sección titulada «Integraciones externas»| Sistema | Protocolo | Propósito |
|---|---|---|
| STP Bank API | HTTPS + RSA | Registro cuentas, órdenes de pago, callbacks |
| AWS Lambda (×3) | SDK síncrono/asíncrono | Email, SMS, WebSocket, contactos |
| AWS SQS (×2) | SDK asíncrono | Pólizas Odoo, webhooks cliente |
| AWS Secrets Manager | SDK | Credenciales DB y STP |
| AWS CloudWatch | SDK | Logs y métricas de latencia |
| AWS X-Ray | Middleware | Trazabilidad distribuida |
| Odoo ERP | SQS → consumidor | Contabilidad (account.move, res.partner) |