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.
-
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
).
- Upload de arquivos de e-mail nos formatos
-
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.
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.
Siga os passos abaixo para configurar seu ambiente de desenvolvimento.
- 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
git clone git@github.com:andersonjuniorz/mail-classify.git
Após configurar seu ambiente conforme a seção anterior, siga estes passos para iniciar e usar a aplicação.
-
Abra seu terminal e navegue para a raiz do seu repositório (onde está o
docker-compose.yml
,Backend/
eFrontend/
): -
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.
- 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.
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.
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
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.
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.
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