# 📡 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 ``` ### 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 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) ---