ETL para alimentar database com merge de dados Ruijie e Wifeed
Go to file
2026-04-20 11:10:29 -03:00
.gitea/workflows Initial Commit: Estrutura para o ETL e start coding 2026-04-20 11:10:29 -03:00
app Initial Commit: Estrutura para o ETL e start coding 2026-04-20 11:10:29 -03:00
infra Initial Commit: Estrutura para o ETL e start coding 2026-04-20 11:10:29 -03:00
.env.example Initial Commit: Estrutura para o ETL e start coding 2026-04-20 11:10:29 -03:00
.gitignore Initial Commit: Estrutura para o ETL e start coding 2026-04-20 11:10:29 -03:00
README.md Initial Commit: Estrutura para o ETL e start coding 2026-04-20 11:10:29 -03:00
requirements.txt Initial Commit: Estrutura para o ETL e start coding 2026-04-20 11:10:29 -03:00

📡 WiFi ETL Pipeline

🚧 Em construção 🚧 Este projeto está em desenvolvimento. Este primeiro commit contém a estrutura base do pipeline ETL.


🧠 Visão Geral

Este projeto tem como objetivo realizar a ingestão periódica de dados de duas APIs distintas:

  • API de Autenticação (WiFeed) → Nome, CPF, sexo, MAC
  • API do Access Point (Ruijie) → MAC, tempo conectado, AP

Os dados serão cruzados pelo MAC Address e persistidos em um banco PostgreSQL para análise e consulta.


⚙️ Arquitetura

flowchart TD

    A["Cron (Docker)\na cada 5 minutos"]
    B["Python ETL Script"]

    C["API Autenticação\nnome, cpf, sexo, MAC"]
    D["API do AP\nMAC, tempo, AP"]

    E["Transform\nmerge pelo MAC"]
    F["PostgreSQL\nusers + sessions"]

    A --> B
    B --> C
    B --> D

    C --> E
    D --> E

    E --> F

Fluxo

  1. Execução automática a cada 5 minutos (cron via Docker)
  2. Extração dos dados das APIs
  3. Transformação (merge pelo MAC + normalização)
  4. Carga no banco PostgreSQL

🏗️ Estrutura do Projeto

app/
├── core/              # Configurações e conexão com banco
│   ├── config.py
│   └── db.py
│
├── extractor/         # Extração das APIs externas
│   ├── ruijie.py
│   └── wifeed.py
│
├── transform/         # Regras de transformação
│   └── merge_mac.py
│
├── load/              # Persistência no banco
│   └── load_database.py
│
└── main.py            # Orquestrador do pipeline

infra/
├── Dockerfile
├── docker-compose.yml
└── crontab

.env.example
requirements.txt
README.md

🚀 Como executar

⚠️ Observação: o projeto ainda está em fase inicial e algumas partes podem não estar totalmente implementadas.

1. Clonar o repositório

git clone <seu-repo>
cd wifi-etl

2. Configurar variáveis de ambiente

Crie um .env baseado no exemplo:

cp .env.example .env

Preencha com suas credenciais:

DB_HOST=
DB_PORT=5432
DB_NAME=
DB_USER=
DB_PASSWORD=

RUIJIE_BASE_URL=
RUIJIE_API_KEY=

WIFEED_BASE_URL=
WIFEED_API_KEY=

3. Subir o ambiente

docker-compose up --build -d

4. Execução

O pipeline será executado automaticamente a cada 5 minutos via cron.


🗄️ Modelo de Dados (planejado)

Tabela: users

  • nome
  • cpf
  • sexo
  • mac

Tabela: sessions

  • mac
  • access_point
  • tempo_conectado
  • timestamp

🔄 Processo ETL

Extract

Coleta dados das APIs Ruijie e WiFeed

Transform

  • Normalização de dados
  • Merge pelo MAC Address

Load

Inserção e/ou atualização no PostgreSQL


📦 Tecnologias

  • Python
  • Docker
  • PostgreSQL
  • Requests

📌 Roadmap

  • Estrutura inicial do projeto
  • Integração com APIs
  • Implementação do transform (merge por MAC)
  • Persistência no banco
  • Logging e tratamento de erros
  • Deploy automatizado (CI/CD)