API para classificação de grãos utilizando Machine Learning e visão computacional.
- Emanuel Mascarenhas Rodrigues
- Luis Eduardo Rodrigues Miranda
- Vinicius Abreu Silva Franco
A documentação completa e interativa está disponível em:
Essa documentação foi gerada a partir do esquema OpenAPI da aplicação FastAPI.
- Docker e Docker Compose instalados
- Git
# 1. Clone o repositório
git clone <repo-url>
cd demeter-api
# 2. Inicie os containers
cd docker
docker-compose up -d
# 3. Aguarde ~30 segundos para inicialização completa
# A API estará disponível em: http://localhost:8000Pronto! O sistema está rodando com:
- ✅ Banco de dados criado e migrado
- ✅ Roles e permissions configuradas
- ✅ Usuário admin criado automaticamente
Email: admin@demeter.local
Senha: Admin123!
Após iniciar os containers, acesse:
- Swagger UI: http://localhost:8000/docs
- ReDoc: http://localhost:8000/redoc
- Health Check: http://localhost:8000/health
# Certifique-se que os containers estão rodando
pytest tests/ -vpytest tests/unit/ -vpytest tests/integration/ -vdemeter-api/
├── src/
│   ├── application/       # Casos de uso
│   ├── domain/           # Entidades e regras de negócio
│   ├── infrastructure/   # Implementações (DB, repositórios)
│   ├── presentation/     # Controllers e rotas
│   └── config/          # Configurações (DB, segurança, logs)
├── tests/
│   ├── unit/            # Testes unitários
│   └── integration/     # Testes de integração
├── alembic/             # Migrations do banco de dados
└── docker/              # Docker e scripts
docker exec -it demeter-api bashdocker logs demeter-api -fdocker exec -it demeter-db psql -U demeter -d demeter_db# Dentro do container
docker exec -it demeter-api alembic revision --autogenerate -m "descrição"
# Aplicar migrations
docker exec -it demeter-api alembic upgrade headdocker exec -it demeter-api python -m src.cli.create_admin \
  --email "novo@admin.com" \
  --name "Nome Admin" \
  --password "SenhaSegura123!" \
  --phone "11999999999"Se precisar limpar tudo e começar do zero:
cd docker
# Para containers e remove volumes (apaga todos os dados)
docker-compose down -v
# Rebuilda e inicia novamente
docker-compose up -d --buildNota: Todos os dados serão perdidos, incluindo usuários e classificações.
O projeto utiliza 3 containers:
| Container | Porta | Descrição | 
|---|---|---|
| `demeter-api` | 8000 | API FastAPI | 
| `demeter-db` | 5432 | PostgreSQL 16 | 
| `demeter-adminer` | 8080 | Interface web para banco | 
Acesse: http://localhost:8080
Sistema: PostgreSQL
Servidor: demeter-db
Usuário: demeter
Senha: demeter_dev
Base de dados: demeter_db
Configure no arquivo `docker/docker-compose.yml`:
environment:
  - SECRET_KEY=sua-chave-super-secreta-aqui
  - ADMIN_EMAIL=admin@demeter.local
  - ADMIN_PASSWORD=SuaSenhaSegura123!O sistema implementa RBAC (Role-Based Access Control):
Roles:
- `classificador`: Usuário padrão que pode criar e gerenciar suas próprias classificações
- `admin`: Administrador com acesso total
Permissions:
- `classifications:create:own` - Criar classificação própria
- `classifications:read:own` - Ler classificações próprias
- `classifications:update:own` - Atualizar classificações próprias
- `classifications:delete:own` - Deletar classificações próprias
- `classifications:read:all` - Ler todas as classificações (admin)
- `classifications:delete:all` - Deletar qualquer classificação (admin)
- Autenticação JWT (login, register, refresh, logout)
- RBAC (Roles e Permissions)
- CRUD de Classificações com soft delete
- Health check endpoint
- Audit logs
- Migrations automáticas na inicialização
- Seed de dados inicial (roles e admin)
- Testes (38 testes passando)
- Documentação Swagger/OpenAPI
- Integração com modelo de ML real
- Upload e processamento de imagens
- Métricas e estatísticas
- Exportação de dados
- API de relatórios