Saltar a contenido

🔄 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 registro Run en la base de datos. Este Run actú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. offerspayment_methods a través de offer_payment_methods) para mantener la coherencia.
  • Trazabilidad: El campo run_id en la tabla offers permite 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.