Backend Python para detecção de microorganismos
Project description
MicroDetect Backend
Backend Python para a aplicação MicroDetect, responsável por gerenciar datasets, modelos e inferências.
Estrutura do Projeto
python_backend/
├── app/ # Código da aplicação
│ ├── api/ # Endpoints da API
│ ├── core/ # Configurações e utilitários
│ ├── database/ # Modelos e conexão com banco
│ ├── models/ # Modelos ML
│ ├── schemas/ # Esquemas Pydantic
│ ├── services/ # Serviços
│ └── utils/ # Utilitários
├── data/ # Diretório para dados
│ ├── datasets/ # Datasets
│ ├── models/ # Modelos treinados
│ ├── gallery/ # Imagens capturadas
│ └── temp/ # Arquivos temporários
├── tests/ # Testes
├── requirements.txt # Dependências
└── start_backend.py # Script de inicialização
Requisitos
- Python 3.8+
- pip (gerenciador de pacotes Python)
Instalação
- Clone o repositório
- Navegue até o diretório do backend:
cd python_backend
- Instale as dependências:
pip install -r requirements.txt
Uso
Para iniciar o servidor:
python start_backend.py
O servidor estará disponível em http://localhost:8000
API Endpoints
Datasets
POST /api/v1/datasets/- Criar novo datasetGET /api/v1/datasets/- Listar datasetsGET /api/v1/datasets/{id}- Obter dataset específico
Imagens
POST /api/v1/images/- Upload de imagemGET /api/v1/images/- Listar imagensGET /api/v1/images/{id}- Obter imagem específica
Anotações
POST /api/v1/annotations/- Criar anotaçãoGET /api/v1/annotations/- Listar anotaçõesGET /api/v1/annotations/{id}- Obter anotação específica
Treinamento
POST /api/v1/training/- Iniciar sessão de treinamentoGET /api/v1/training/- Listar sessões de treinamentoGET /api/v1/training/{id}- Obter sessão específica
Modelos
POST /api/v1/models/- Criar novo modeloGET /api/v1/models/- Listar modelosGET /api/v1/models/{id}- Obter modelo específico
Inferência
POST /api/v1/inference/- Realizar inferênciaGET /api/v1/inference/- Listar resultados de inferênciaGET /api/v1/inference/{id}- Obter resultado específico
Documentação da API
A documentação interativa da API está disponível em:
- Swagger UI:
http://localhost:8000/docs - ReDoc:
http://localhost:8000/redoc
Integração com Flutter
O backend é iniciado automaticamente quando a aplicação Flutter é executada. O script start_backend.py é responsável por:
- Instalar dependências necessárias
- Iniciar o servidor FastAPI
- Gerenciar o ciclo de vida do servidor
Desenvolvimento
Para desenvolvimento local:
-
Crie um ambiente virtual:
python -m venv venv source venv/bin/activate # Linux/macOS venv\Scripts\activate # Windows
-
Instale as dependências:
pip install -r requirements.txt
-
Execute o servidor em modo de desenvolvimento:
python start_backend.py
Testes
Para executar os testes:
pytest
Contribuição
- Fork o repositório
- Crie uma branch para sua feature (
git checkout -b feature/AmazingFeature) - Commit suas mudanças (
git commit -m 'Add some AmazingFeature') - Push para a branch (
git push origin feature/AmazingFeature) - Abra um Pull Request
Migrações de Banco de Dados
Este projeto utiliza o Alembic para gerenciar migrações de banco de dados. As migrações são executadas automaticamente durante a inicialização da API, garantindo que o esquema do banco de dados esteja sempre atualizado.
Como Funcionam as Migrações
- Quando a API inicia, ela executa automaticamente
alembic upgrade headpara aplicar todas as migrações pendentes. - Se ocorrer algum erro durante as migrações, a API tenta criar as tabelas diretamente usando SQLAlchemy como fallback.
Criando Novas Migrações
Quando você fizer alterações nos modelos de dados (como adicionar/remover colunas, criar novas tabelas, etc.), você precisa criar uma nova migração. Use o script utilitário:
# No diretório raiz do projeto
python scripts/create_migration.py "Descrição da sua migração"
O script irá:
- Gerar um arquivo de migração na pasta
alembic/versions/ - O arquivo conterá as alterações detectadas nos seus modelos
Aplicando Migrações Manualmente
Normalmente as migrações são aplicadas automaticamente quando a API inicia, mas você pode aplicá-las manualmente:
# No diretório raiz do projeto
python scripts/apply_migrations.py
Ou diretamente com o Alembic:
# No diretório raiz do projeto
python -m alembic upgrade head
Outras Operações com Alembic
-
Verificar migrações pendentes:
python -m alembic current
-
Voltar para uma migração específica:
python -m alembic downgrade <migration_id>
-
Gerar uma migração (mesmo que não haja mudanças):
python -m alembic revision -m "Descrição da migração"
Como substituir o Pydantic
Este projeto foi adaptado para usar classes Python regulares em vez do Pydantic. Principais alterações:
-
Criada uma classe base
BaseSchemaemmicrodetect/schemas/base.pyque fornece funcionalidades de:- Inicialização via
__init__ - Serialização para dicionário via método
dict() - Conversão de objetos ORM para schemas via método
from_orm()
- Inicialização via
-
Classes de esquema implementadas como classes regulares do Python que herdam de
BaseSchema -
Utilitários de serialização em
microdetect/utils/serializers.pypara:- Converter objetos Python para JSON
- Construir respostas da API padronizadas
-
Os endpoints da API foram atualizados para usar os serializadores personalizados
Vantagens desta abordagem:
- Sem dependências externas para validação/serialização
- Maior controle sobre o comportamento de serialização
- Classes mais simples e explícitas
- Maior flexibilidade na manipulação dos dados
Exemplo de uso:
# Criar um objeto a partir de dados
model = SimpleModelResponse(
id=1,
name="Modelo de teste",
description="Um modelo para teste"
)
# Converter para dicionário
model_dict = model.dict()
# Criar a partir de um objeto ORM
from_db = SimpleModelResponse.from_orm(db_model)
# Construir resposta da API
from microdetect.utils.serializers import build_response
response = build_response(model)
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file microdetect-1.6.1.tar.gz.
File metadata
- Download URL: microdetect-1.6.1.tar.gz
- Upload date:
- Size: 80.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.17
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c5c971e33e090001bc3c7d154325322edfedfecb56eabb208a2f9a867e8c8132
|
|
| MD5 |
bf1a77ce2387f352ccd5be7a1c11fe66
|
|
| BLAKE2b-256 |
e71b80dea118b1e5706830dccad3b92dba9b491c5a08a2e985c16d19c74ce4bf
|
File details
Details for the file microdetect-1.6.1-py3-none-any.whl.
File metadata
- Download URL: microdetect-1.6.1-py3-none-any.whl
- Upload date:
- Size: 115.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.17
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7e84052d710967f86610bc8e6fc86854608177a36cc9a92faea43e4e5a093592
|
|
| MD5 |
bfb014bd413615cf6f73e29bc5cd88d8
|
|
| BLAKE2b-256 |
f6dc719c895c4f16523d0104f15f0a6e09087b3beebf755a834630cc76cce7ba
|