https://github.com/andersonjuniorz/mail-classify
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.
https://github.com/andersonjuniorz/mail-classify
api-restful aws-cli bert-models ci-cd-pipeline deep-learing docker-compose ec2-container-service flask-api hugging-face ia python reactjs transformers-model typescript-react
Last synced: 2 months ago
JSON representation
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.
- Host: GitHub
- URL: https://github.com/andersonjuniorz/mail-classify
- Owner: andersonjuniorz
- Created: 2025-07-02T03:41:33.000Z (12 months ago)
- Default Branch: main
- Last Pushed: 2025-07-08T03:34:24.000Z (11 months ago)
- Last Synced: 2025-08-03T21:13:55.165Z (10 months ago)
- Topics: api-restful, aws-cli, bert-models, ci-cd-pipeline, deep-learing, docker-compose, ec2-container-service, flask-api, hugging-face, ia, python, reactjs, transformers-model, typescript-react
- Language: Python
- Homepage: http://ec2-3-148-166-228.us-east-2.compute.amazonaws.com
- Size: 243 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README



# 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](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html)
### 1. Clonar o Repositório
```bash
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:
```bash
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.
3. Após a construção (ou em execuções subsequentes), inicie os serviços Docker Compose (backend e frontend):
```bash
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:
```bash
docker-compose ps
```
E ver os logs do frontend e backend com:
```bash
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:
```bash
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:
```bash
docker-compose down
```