- Resumo
- Arquitetura
- Stacks e estrutura
- Como rodar localmente com Docker
- Como usar
- APIs e documentacao
- Variaveis de ambiente
- Troubleshooting
O ToraxScan AI e um sistema com 3 camadas:
- Frontend web para upload de imagem e exibicao de resultado.
- Backend API para orquestracao da classificacao e health checks.
- Microservico de IA (Flask + PyTorch) para inferencia do modelo.
A aplicacao recebe uma radiografia de torax, executa preprocessamento da imagem, faz inferencia com rede neural e retorna:
- Classe prevista:
Covid,Lung_Opacity,NormalouViral_Pneumonia - Confianca da predicao em formato numerico
flowchart LR
A[Usuario no navegador] --> B[Frontend React - porta 5173]
B --> C[Backend NestJS - porta 3000]
C --> D[Microservico Flask - porta 8000]
D --> E[Modelo PyTorch .pth]
E --> D
D --> C
C --> B
Fluxo principal:
- Usuario envia uma imagem no frontend.
- Frontend faz
POST /classification/analyzeno backend. - Backend encaminha a imagem para
POST /predictno microservico. - Microservico preprocessa a imagem, executa inferencia e retorna classe + confianca.
- Backend devolve o resultado para o frontend.
main/main.py: endpointsPOST /predicteGET /healthinference/image_handler.py: preprocessamento (RGB, resize 224x224, normalizacao)inference/predictor.py: carrega modelo v2 e executa inferenciamodel/ToraxRadiographyModel.py: arquitetura da rede neuraltrain/train.py: pipeline de treino
modules/classification: endpoint de classificacao com upload multipartmodules/system: health checks do backend e do microservicomain.ts: bootstrap da API, CORS e Swagger em/docs
pages/home/index.tsx: fluxo principal da interfacecomponents/Dropzone: upload por clique/drag-and-dropcomponents/Card/ResultCard: exibicao do diagnostico e confiancaapi/service/classification.service.ts: chamada para/classification/analyze
- Docker Engine instalado
- Docker Compose habilitado (
docker compose)
git clone <URL_DO_REPOSITORIO>
cd Torax-Radiography-Disease-ClassificationCrie os arquivos abaixo a partir dos exemplos:
backend/.envfrontend/.envai_microservice/.env
Conteudo sugerido:
# backend/.env
PORT=3000
MICROSERVICE_URL=http://microservice:8000# frontend/.env
VITE_API_URL=http://localhost:3000# ai_microservice/.env
PORT=8000docker compose builddocker compose upPara rodar em background:
docker compose up -d- Frontend: http://localhost:5173
- Backend API: http://localhost:3000
- Swagger (Backend): http://localhost:3000/docs
- Microservico IA: http://localhost:8000
- Flasgger (Microservico): http://localhost:8000/apidocs/
docker compose downPara remover tambem volumes:
docker compose down -v- Abra o frontend em
http://localhost:5173. - Envie uma radiografia de torax (JPEG/PNG/JPG, ate 10MB).
- Clique em iniciar analise.
- Veja no painel:
- Classe prevista
- Percentual de confianca
- Recomendacoes associadas ao resultado
POST /classification/analyze- Upload: multipart/form-data com campo
image - Retorno: classe e confianca
- Upload: multipart/form-data com campo
GET /system/health- Status e metricas do backend
GET /system/health/microservice- Status do microservico de IA
Documentacao interativa: http://localhost:3000/docs
POST /predict- Upload: multipart/form-data com campo
image - Retorno:
class_nameeconfidence
- Upload: multipart/form-data com campo
GET /health- Status e metricas de processo
Documentacao interativa: http://localhost:8000/apidocs/
| Servico | Variavel | Exemplo | Descricao |
|---|---|---|---|
| Backend | PORT |
3000 |
Porta da API NestJS |
| Backend | MICROSERVICE_URL |
http://microservice:8000 |
URL interna para chamar o servico de IA |
| Frontend | VITE_API_URL |
http://localhost:3000 |
URL base da API consumida no browser |
| Microservice | PORT |
8000 |
Porta do Flask |
Se 5173, 3000 ou 8000 estiverem em uso, encerre processos locais que estejam usando essas portas antes de subir os containers.
Quando alterar dependencias (package.json ou requirements.txt), execute rebuild:
docker compose up -d --buildVerifique:
MICROSERVICE_URL=http://microservice:8000nobackend/.env- Se o container do microservico esta em execucao
- Logs dos servicos:
docker compose logs -f backend
docker compose logs -f microservice- Ambiente de desenvolvimento via Docker Compose com hot reload.
- Backend com Swagger ativo.
- Frontend com fluxo de upload e exibicao de resultado.
- Microservico com inferencia carregando modelo
v2.