🔄 Flujo de Trabajo Detallado del P2P Dashboard
Comprender el flujo de trabajo del P2P Dashboard es fundamental para visualizar cómo los datos se mueven a través de las diferentes capas del sistema, desde su origen hasta su visualización final. Este proceso está diseñado para ser eficiente, seguro y trazable.
Diagrama de Flujo General
graph TD
subgraph "Origen de Datos"
A[Binance P2P Data] --> B(Otros Exchanges P2P)
end
subgraph "Capa 1: Ingesta (Backend 1)"
B --> C[Paquete Worker Python]
C --> D(FastAPI Ingesta)
D --> E[PostgreSQL DB]
D -- "Logs de Ingesta" --> F[Sistema de Logging]
end
subgraph "Capa 2: Analítica (Backend 2)"
E --> G(FastAPI Analítica)
G -- "Cache" --> H[Mecanismo de Caché]
end
subgraph "Capa 3: Visualización (Frontend)"
G --> I[Dashboard / UI (Streamlit, Dash, NextJS)]
I --> J[Usuario Final]
end
style A fill:#f9f,stroke:#333,stroke-width:2px
style B fill:#f9f,stroke:#333,stroke-width:2px
style C fill:#ccf,stroke:#333,stroke-width:2px
style D fill:#bbf,stroke:#333,stroke-width:2px
style E fill:#9cf,stroke:#333,stroke-width:2px
style F fill:#fcf,stroke:#333,stroke-width:2px
style G fill:#8cf,stroke:#333,stroke-width:2px
style H fill:#eef,stroke:#333,stroke-width:2px
style I fill:#7cf,stroke:#333,stroke-width:2px
style J fill:#f9f,stroke:#333,stroke-width:2px
Pasos Detallados del Flujo de Trabajo
1. Origen de Datos (Externo)
- Binance P2P Data: La principal fuente de datos son las ofertas P2P disponibles en la plataforma Binance. Estas ofertas incluyen detalles como el precio, la cantidad, el método de pago, el comerciante, etc.
- Otros Exchanges P2P: El sistema está diseñado para ser extensible y poder integrar datos de otros exchanges P2P en el futuro, siguiendo un patrón similar de extracción.
2. Paquete Worker Python (Capa 1.A - Extracción y Transformación)
Este componente es un paquete Python externo e independiente que se encarga de:
- Extracción de Datos: Consulta las APIs o realiza scraping de las plataformas P2P para obtener las ofertas más recientes.
- Transformación y Validación: Procesa los datos crudos, los limpia, normaliza y valida según un esquema predefinido. Esto incluye la estandarización de nombres de métodos de pago, la conversión de tipos de datos, etc.
- Envío Autenticado: Una vez que los datos están limpios y validados, el Worker los envía de forma segura a la API de Ingesta (FastAPI Ingesta) a través de una solicitud POST autenticada, utilizando una API Key.
3. FastAPI Ingesta (Capa 1.B - Recepción y Almacenamiento)
Este es el primer backend del sistema, construido con FastAPI, y tiene las siguientes responsabilidades:
- Verificación de API Key: Autentica cada solicitud entrante del Worker para asegurar que solo fuentes autorizadas puedan enviar datos.
- Creación de
Run: Por cada ejecución del Worker que envía datos, se crea un registroRunen la base de datos. EsteRunactúa como un identificador único para esa sesión de ingesta, permitiendo la trazabilidad. - Guardado de Ofertas y Métodos de Pago: Almacena las ofertas P2P y los métodos de pago asociados en las tablas normalizadas de PostgreSQL.
- Registro de Errores y Logs: Registra detalladamente cualquier error o evento significativo durante el proceso de ingesta, utilizando un sistema de logging estructurado.
4. PostgreSQL DB (Capa 1.C - Almacenamiento Persistente)
La base de datos PostgreSQL es el corazón del almacenamiento de datos. Aquí, la información se guarda de forma estructurada y normalizada:
- Estructura Normalizada: Las tablas (
offers,payment_methods,users,api_keys,runs) están diseñadas para minimizar la redundancia y asegurar la integridad de los datos. - Relaciones: Se establecen relaciones de clave foránea (FK) y relaciones muchos a muchos (M:N) (ej.
offers↔payment_methodsa través deoffer_payment_methods) para mantener la coherencia. - Trazabilidad: El campo
run_iden la tablaofferspermite vincular cada oferta a la ejecución específica del Worker que la ingirió.
5. FastAPI Analítica (Capa 2 - Lectura y Agregación)
Este es el segundo backend, también con FastAPI, enfocado en la lectura y exposición de datos procesados:
- Exposición de Endpoints: Ofrece una serie de endpoints públicos y privados (
/summary,/historical,/depth,/stats, etc.) que permiten a otras aplicaciones o dashboards obtener datos ya procesados y agregados. - Procesamiento y Agregación: Realiza cálculos y agregaciones sobre los datos crudos almacenados en PostgreSQL para generar métricas y resúmenes útiles (ej. spreads, volúmenes, profundidad simulada).
- Caché y Seguridad: Implementa mecanismos de caché para mejorar el rendimiento de las consultas frecuentes y controles de acceso opcionales (paginación, throttling) para gestionar el consumo de la API.
6. Dashboard / UI (Capa 3 - Visualización e Interacción)
Esta es la capa de presentación, donde los datos se transforman en información visualmente atractiva e interactiva para el usuario final:
- Tecnologías: Puede ser implementada con frameworks como Streamlit, Dash o Next.js, dependiendo de los requisitos específicos de la interfaz de usuario.
- Visualización: Muestra los spreads, volúmenes, profundidad del mercado, alertas y otras métricas clave a través de gráficos, tablas y elementos visuales intuitivos.
- Interacción: Permite al usuario filtrar, ordenar y explorar los datos para obtener insights específicos.
- Acceso por Navegador: La interfaz es accesible a través de un navegador web, pudiendo ser pública o privada según el tipo de usuario.
Este flujo de trabajo garantiza que los datos sean capturados, procesados y presentados de manera eficiente, proporcionando una base sólida para el análisis del mercado P2P.