Este repositório contém a solução completa para o Teste Prático: Desenvolvedor(a) de Automação e IA. O projeto implementa um Sistema de Monitoramento de Ambientes (SMA) v2.0, que utiliza um fluxo n8n e IA Generativa para receber, triar, classificar e relatar eventos de sensores IoT.
O projeto é totalmente orquestrado usando Docker Compose, criando um ambiente de desenvolvimento isolado e replicável. A arquitetura consiste em:
-
Host (Máquina Local):
API Mock IoT (.exe): Simula os sensores IoT no campo, enviando eventos.
-
Docker Compose (
docker-compose.yml):- 🧠 N8n (Customizado): O "cérebro" da automação. Esta é uma imagem customizada (via Dockerfile) que inclui as dependências Python (
psycopg2,reportlab) necessárias para executar o scriptgerar_relatorio.py. - 🤖 Flowise: Fornece o "Agente de Triagem" de IA, responsável por classificar os alertas.
- 💾 PostgreSQL: O banco de dados relacional para dados estruturados (dispositivos e eventos processados).
- 🗃️ MongoDB: O banco de dados NoSQL usado para auditoria e logging de payloads JSON brutos.
- 🧠 N8n (Customizado): O "cérebro" da automação. Esta é uma imagem customizada (via Dockerfile) que inclui as dependências Python (
- Orquestração: N8n
- IA (Triagem): Flowise
- IA (Resumo): OpenAI
- Scripting: Python (para o relatório em PDF)
- Banco de Dados SQL: PostgreSQL
- Banco de Dados NoSQL: MongoDB
- Bibliotecas Python:
psycopg2-binary,reportlab - Ambiente: Docker & Docker Compose
- Requisições: Postman
Antes de começar, garanta que você tenha as seguintes ferramentas instaladas em sua máquina host:
- Docker
- Simulador Mock IoT: O executável (
ImagemSeguranca.TestIOT.exe). - Postman: Ferramenta para fazer as requisições.
Siga estes passos para configurar e iniciar o ecossistema.
git clone https://github.com/OTiaggo/teste-pratico-desenvolvedor-IA
cd https://github.com/OTiaggo/teste-pratico-desenvolvedor-IAO projeto foi pensado para ser “pronto para rodar”.
- O script
init-db/schema.sqlcria as tabelasdeviceseeventsno PostgreSQL na primeira inicialização. - O
n8n_custom/Dockerfilegera uma imagem N8n customizada com dependências Python instaladas (psycopg2-binary,reportlab). - O script
gerador-de-relatorio/gerar_relatorio.pyestá configurado para conectar ao host do banco comopostgres(nome do serviço Docker).
No diretório raiz (onde está o docker-compose.yml), execute o comando:
# Use --build na primeira vez para construir a imagem customizada do N8n
docker-compose up -d --buildIsso iniciará o N8n, Flowise, PostgreSQL e MongoDB.
- Abra seu terminal e navegue até a pasta que contém
ImagemSeguranca.TestIOT.exe. - Execute o simulador forçando-o a ouvir em
0.0.0.0para que os containers consigam acessar:
.\ImagemSeguranca.TestIOT.exe --urls "http://0.0.0.0:5000"Você vai precisar da ferramenta wine para conseguir executar o .exe no Linux.(https://www.winehq.org/)
- Abra um terminal e navegue até a pasta que contém
ImagemSeguranca.TestIOT.exe. - Execute o simulador forçando-o a ouvir em
0.0.0.0para que os containers consigam acessar:
# usando wine
ASPNETCORE_URLS="http://0.0.0.0:5000" wine ./ImagemSeguranca.TestIOT.exe-
Importe o fluxo do n8n no n8n.
-
No n8n (http://localhost:5678): em
Credentialsadicione as credenciais necessárias:- PostgreSQL: Host
postgres, DBsma_db, Useradmin, Passadmin_password - MongoDB: Host
mongo, Useruser_admin, Passpassword_admin, Auth DBadmin
- PostgreSQL: Host
-
Ative o workflow.
-
Importe o chatflow no FLowise.
-
No flowise (http://localhost:3000): configure a credencial da OpenAI no nó apropriado passando sua api-key da OpenAi.
Com isso o ambiente estará pronto para testes.
No repositório você vai encontrar um arquivo chamado sma_v2.postman_collection.json com as requisições para usar testes. Siga os seguintes passos fazendo as requisições que estão na pasta webhook n8n.
- Registre um novo dispositivo. Passe as seguinte informações no body da requisição:
{
"deviceName": "nome do dispositivo",
"location": "localização"
}- Receber eventos em tempo real
- O Mock IoT (porta 5000) começará a enviar eventos para o
callbackUrlconfigurado. - No N8n, abra o fluxo
POST /webhook/eventse verifique as execuções emExecutions.
Comportamento esperado:
- Se
isAlarm: false: evento é salvo no Postgres e no MongoDB. - Se
isAlarm: true: é executado o fluxo completo envolvendo Flowise, OpenAI, Postgres e MongoDB.
- Gerar relatório PDF (fluxo bônus)
- Acesse no navegador para baixar:
http://localhost:5678/webhook/report
Esse fluxo executa um comando que roda o gerador de relatório em Python (gerador-de-relatorio/gerar_relatorio.py) e retorna o PDF gerado.
- Deletar um dispositivo Caso queira deletar algum dispositivo, execute a requisção DELETE Deletar dispositivo no Postman passando o integrationId do dispositivo que você deseja excluir do sistema.
Link do vídeo de demonstração: https://youtu.be/ANrTUvsQdug?si=mtqZSToY1TzvPR56