Skip to content

Aplicação web que utiliza inteligência artificial para classificar e-mails em categorias predefinidas e sugerir respostas automáticas com base na classificação realizada.

Notifications You must be signed in to change notification settings

andersonjuniorz/mail-classify

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

image

image

image

Classificador Inteligente de E-mails com IA

Este projeto é uma aplicação web simples, porém robusta, desenvolvida para classificar e-mails em categorias predefinidas (Produtivo ou Improdutivo) e sugerir respostas automáticas com base na classificação. A solução utiliza Inteligência Artificial (IA) no backend, com um frontend intuitivo para interação do usuário.

🚀 Funcionalidades

  • Entrada Flexível de E-mails:

    • Upload de arquivos de e-mail nos formatos .txt ou .pdf.
    • Inclusão direta de texto de e-mails através de formulário manual (Enviar Para, Assunto, Mensagem).
  • Classificação de E-mails com IA:

    • Utiliza um modelo de Processamento de Linguagem Natural (PLN) baseado em Transformers (Hugging Face) para categorizar o conteúdo.
    • Capacidade de classificar e-mails em português e inglês (devido ao uso de um modelo multilíngue e treinamento em dataset misto).
  • Sugestão de Respostas Automáticas:

    • Gera uma resposta padrão adequada à categoria identificada.
  • Interface Intuitiva:

    • Frontend moderno e responsivo desenvolvido em React e TypeScript.
    • Exibição clara dos resultados da classificação e da resposta sugerida.
  • Containerização com Docker:

    • Backend empacotado em um contêiner Docker para garantir consistência e portabilidade do ambiente em diferentes sistemas.

🛠️ Tecnologias Utilizadas

Backend:

  • Python 3.12: Linguagem de programação principal.
  • Flask: Microframework web para construção da API REST.
  • Flask-Cors: Gerenciamento de políticas CORS.
  • Hugging Face Transformers: Biblioteca para modelos de PLN (DistilBERT Multilíngue).
  • PyTorch: Framework de deep learning que suporta os modelos Transformers.
  • Pandas: Manipulação e pré-processamento de dados.
  • PyPDF2: Extração de texto de arquivos PDF.
  • Gunicorn: Servidor WSGI para produção do Flask.
  • python-dotenv: Carregamento de variáveis de ambiente.
  • Docker: Containerização do backend.

Frontend:

  • React: Biblioteca JavaScript para construção da interface de usuário.
  • TypeScript: Superset do JavaScript que adiciona tipagem estática.
  • Vite: Ferramenta de build frontend.

⚙️ Como Configurar o Ambiente Local

Siga os passos abaixo para configurar seu ambiente de desenvolvimento.

Pré-requisitos

  • Node.js e npm/yarn: Para o frontend React.
  • Python 3.12: Para o backend Flask.
  • pip: Gerenciador de pacotes Python.
  • Docker Engine: Para executar o backend containerizado.
  • Git: Para clonar o repositório.
  • NVIDIA Container Toolkit (para uso de GPU com Docker) Se você deseja que o Docker acesse sua GPU NVIDIA para o backend (usando USE_GPU=True no .env), você precisará instalar o NVIDIA Container Toolkit em seu sistema Ubuntu real. As instruções detalhadas podem ser encontradas em: NVIDIA Container Toolkit Installation Guide

1. Clonar o Repositório

git clone git@github.com:andersonjuniorz/mail-classify.git

▶️ Como Usar o Aplicativo Localmente

Após configurar seu ambiente conforme a seção anterior, siga estes passos para iniciar e usar a aplicação.

Iniciar a Aplicação Completa (Frontend e Backend)

  1. Abra seu terminal e navegue para a raiz do seu repositório (onde está o docker-compose.yml, Backend/ e Frontend/):

  2. Na primeira vez que você rodar (ou após grandes alterações em dependências/código), construa as imagens Docker sem usar o cache para garantir que tudo esteja atualizado:

docker compose build --no-cache backend frontend

Observação: A construção da imagem pode demorar alguns minutos (devido à instalação de bibliotecas de IA no backend e Node.js no frontend). Em execuções futuras, você pode omitir --no-cache para usar o cache e acelerar o processo.

  1. Após a construção (ou em execuções subsequentes), inicie os serviços Docker Compose (backend e frontend):
docker compose up -d

-d: Inicia os contêineres em segundo plano (detached mode), liberando seu terminal.

Testar a Aplicação

Teste as funcionalidades de upload de arquivos (.txt ou .pdf) e a inserção de texto manual. A IA deve classificar e gerar respostas automáticas na interface.

Verificar LOGs do Frontend e Backend (Caso queira)

Aguarde alguns segundos para que os serviços iniciem completamente (especialmente o backend, que carrega o modelo de IA). Você pode verificar o status dos contêineres com:

docker-compose ps

E ver os logs do frontend e backend com:

docker-compose logs backend
docker-compose logs frontend

Ferramentas de Gerenciamento de Contêineres (Opcional)

Para gerenciar contêineres e orquestração em larga escala, podem ser utilizadas ferramentas adicionais, caso prefira:

  • Portainer: Uma interface gráfica de usuário (UI) para gerenciamento simplificado de ambientes Docker e Kubernetes.
  • Podman: Uma alternativa ao Docker para construir, executar e gerenciar contêineres e imagens, compatível com a CLI do Docker, mas sem daemon.
  • Docker Swarm: A ferramenta de orquestração nativa do Docker, mais simples que o Kubernetes para clusters menores.
  • Kubernetes: Uma plataforma de orquestração de contêineres de código aberto para automatizar o deploy, escalonamento e gerenciamento de aplicações containerizadas.

Acessar o Aplicativo

Com o backend e frontend Dockerizados rodando, abra seu navegador e acesse a URL:

http://localhost

A aplicação React (frontend) será exibida. A comunicação com o backend será feita internamente na rede Docker Compose, resolvendo quaisquer problemas de Mixed Content ou CORS em ambiente local.

Parar a Aplicação

Para parar e remover os contêineres e redes criadas pelo Docker Compose, navegue para a raiz do seu repositório (onde está o docker-compose.yml) e execute:

docker-compose down