Pular para conteúdo

Arquitetura

O Oraculo segue uma arquitetura de microsservicos distribuidos com bancos de dados centralizados.

Visao Geral

graph TB
    subgraph Frontend
        APP[Next.js App<br/>:3000]
    end

    subgraph APIs
        PLAT[Platform API<br/>Java Spring Boot<br/>:8085]
        TRACK[Tracker API<br/>Go Fiber<br/>:8282]
        MODELS[Models API<br/>Python FastAPI<br/>:8000]
    end

    subgraph Dados
        PG[(PostgreSQL<br/>:5432)]
        MONGO[(MongoDB<br/>:27017)]
        MINIO[(MinIO S3<br/>:9000)]
    end

    subgraph Monitoramento
        PROM[Prometheus<br/>:9090]
        GRAF[Grafana<br/>:3001]
        LOKI[Loki<br/>:3100]
    end

    subgraph Landing Page
        LP[Pagina do Cliente]
        SDK[Tracker SDK JS]
    end

    APP -->|REST| PLAT
    LP --> SDK
    SDK -->|POST /assets| TRACK
    TRACK -->|POST /predict| MODELS
    TRACK -->|WebSocket| LP

    PLAT --> PG
    MODELS --> PG
    MODELS --> MONGO
    MODELS --> MINIO
    TRACK --> MONGO

    PLAT --> PROM
    TRACK --> PROM
    MODELS --> PROM
    PROM --> GRAF
    LOKI --> GRAF

Componentes

Platform API (Java Spring Boot)

Responsavel pelo gerenciamento da plataforma:

  • Autenticacao - Login/registro com JWT (HS512)
  • Usuarios - CRUD de usuarios
  • Datasources - Gerenciamento de landing pages monitoradas
  • Success Events - Configuracao de eventos de conversao (seletores CSS)
  • Actions - Configuracao de modais e redirecionamentos

Tracker API (Go Fiber)

Motor de coleta de eventos em tempo real:

  • Coleta de eventos - Recebe dados comportamentais do SDK a cada 5s
  • WebSocket - Canal em tempo real para envio de modais
  • Analytics - Endpoints de metricas e series temporais
  • Integracao ML - Chama a Models API para predicoes quando sessionTime >= threshold

Models API (Python FastAPI)

Motor de Machine Learning:

  • Predicao - Recebe features e retorna probabilidade de conversao
  • Treinamento - Treina modelos XGBoost com dados historicos do MongoDB
  • Versionamento - Gerencia versoes de modelos com rollback
  • Storage - Armazena artefatos no MinIO (S3)
  • Scheduler - Jobs automaticos de treinamento e retreinamento

Frontend (Next.js)

Dashboard de gerenciamento:

  • Autenticacao - Login/registro via NextAuth.js
  • Dashboard - Listagem e gerenciamento de datasources
  • Configuracao - Setup de eventos de sucesso e acoes (modais)

Fluxo de Dados

1. Configuracao

sequenceDiagram
    participant U as Usuario
    participant FE as Frontend
    participant PA as Platform API
    participant DB as PostgreSQL

    U->>FE: Login
    FE->>PA: POST /auth/login
    PA-->>FE: JWT Token

    U->>FE: Cria Datasource
    FE->>PA: POST /api/datasources
    PA->>DB: INSERT datasource
    PA-->>FE: Datasource criado

    U->>FE: Configura Success Event
    FE->>PA: POST /api/datasources/{id}/success-events
    PA->>DB: INSERT success_event

    U->>FE: Configura Modal
    FE->>PA: POST /api/datasources/{id}/actions
    PA->>DB: INSERT action

2. Tracking e Predicao

sequenceDiagram
    participant LP as Landing Page + SDK
    participant TA as Tracker API
    participant MO as MongoDB
    participant MA as Models API
    participant PG as PostgreSQL
    participant S3 as MinIO

    LP->>TA: POST /assets (eventos a cada 5s)
    TA->>MO: Upsert sessao

    alt sessionTime >= threshold
        TA->>MA: POST /api/v1/predict
        MA->>PG: Verifica cache de predicao
        alt Primeira predicao da sessao
            MA->>S3: Carrega modelo XGBoost
            MA->>MA: Executa predicao
            MA->>PG: Salva no cache
        end
        MA-->>TA: {probability, should_trigger, modal_html}

        alt should_trigger = true
            TA->>LP: WebSocket: envia modal
        end
    end

3. Treinamento Automatico

sequenceDiagram
    participant CRON as Scheduler (APScheduler)
    participant MA as Models API
    participant PG as PostgreSQL
    participant MO as MongoDB
    participant S3 as MinIO

    CRON->>MA: Check initial training (6h)
    MA->>PG: Busca datasources com modelo nao treinado
    MA->>MO: Conta sessoes do datasource

    alt sessoes >= initial_checkpoint (10.000)
        MA->>MO: Busca dados de sessoes
        MA->>MA: Treina XGBoost
        MA->>S3: Salva artefato .pkl
        MA->>PG: Atualiza model + model_version
    end

    CRON->>MA: Check retrain (6h)
    MA->>PG: Busca modelos que precisam retreinar

    alt sessoes >= retrain_checkpoint (50.000)
        MA->>MO: Busca dados atualizados
        MA->>MA: Retreina modelo
        MA->>S3: Salva nova versao
        MA->>PG: Cria model_version + promove
    end

Portas e Servicos

Servico Porta Protocolo
Frontend (Next.js) 3000 HTTP
Platform API (Spring Boot) 8085 HTTP
Tracker API (Fiber) 8282 HTTP + WebSocket
Models API (FastAPI) 8000 HTTP
PostgreSQL 5432 TCP
MongoDB 27017 TCP
MinIO API 9000 HTTP
MinIO Console 9001 HTTP
Prometheus 9090 HTTP
Grafana 3001 HTTP
Loki 3100 HTTP