Skip to content

OTiaggo/teste-pratico-desenvolvedor-IA

Repository files navigation

🚀 Projeto SMA v2.0 - Desafio Prático de Automação e IA

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.

🏛️ Arquitetura do Ecossistema

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 script gerar_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.

🛠️ Tecnologias Utilizadas

  • 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

🚦 Pré-requisitos

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.

�🚀 Como Rodar o Projeto

Siga estes passos para configurar e iniciar o ecossistema.

1) Clonar o repositório

git clone https://github.com/OTiaggo/teste-pratico-desenvolvedor-IA
cd https://github.com/OTiaggo/teste-pratico-desenvolvedor-IA

2) Iniciar os serviços com Docker Compose

O projeto foi pensado para ser “pronto para rodar”.

  • O script init-db/schema.sql cria as tabelas devices e events no PostgreSQL na primeira inicialização.
  • O n8n_custom/Dockerfile gera uma imagem N8n customizada com dependências Python instaladas (psycopg2-binary, reportlab).
  • O script gerador-de-relatorio/gerar_relatorio.py está configurado para conectar ao host do banco como postgres (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 --build

Isso iniciará o N8n, Flowise, PostgreSQL e MongoDB.

3) Iniciar o simulador Mock IoT (na máquina host)

Se estiver no windows:

  1. Abra seu terminal e navegue até a pasta que contém ImagemSeguranca.TestIOT.exe.
  2. Execute o simulador forçando-o a ouvir em 0.0.0.0 para que os containers consigam acessar:
.\ImagemSeguranca.TestIOT.exe --urls "http://0.0.0.0:5000"

Se estiver no Linux:

Você vai precisar da ferramenta wine para conseguir executar o .exe no Linux.(https://www.winehq.org/)

  1. Abra um terminal e navegue até a pasta que contém ImagemSeguranca.TestIOT.exe.
  2. Execute o simulador forçando-o a ouvir em 0.0.0.0 para que os containers consigam acessar:
# usando wine
ASPNETCORE_URLS="http://0.0.0.0:5000" wine ./ImagemSeguranca.TestIOT.exe

4) Configurar credenciais (N8n / Flowise)

  1. Importe o fluxo do n8n no n8n.

  2. No n8n (http://localhost:5678): em Credentials adicione as credenciais necessárias:

    • PostgreSQL: Host postgres, DB sma_db, User admin, Pass admin_password
    • MongoDB: Host mongo, User user_admin, Pass password_admin, Auth DB admin
  3. Ative o workflow.

  4. Importe o chatflow no FLowise.

  5. 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.

🔥 Testes e Uso Rápido

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.

  1. Registre um novo dispositivo. Passe as seguinte informações no body da requisição:
{
  "deviceName": "nome do dispositivo",
  "location": "localização"
}
  1. Receber eventos em tempo real
  • O Mock IoT (porta 5000) começará a enviar eventos para o callbackUrl configurado.
  • No N8n, abra o fluxo POST /webhook/events e verifique as execuções em Executions.

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.
  1. 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.

  1. 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

About

Teste prático para desenvolvedor IA

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors