wifi-etl/README.md

198 lines
3.1 KiB
Markdown
Raw Normal View History

# 📡 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
```mermaid
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
```
<!-- Inserir diagrama aqui -->
<!-- Exemplo: ![Arquitetura do ETL](./docs/diagram.png) -->
### 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
```bash
git clone <seu-repo>
cd wifi-etl
```
---
### 2. Configurar variáveis de ambiente
Crie um `.env` baseado no exemplo:
```bash
cp .env.example .env
```
Preencha com suas credenciais:
```env
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
```bash
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
* [x] 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)
---