3.3 KiB
3.3 KiB
name, description, compatibility
| name | description | compatibility |
|---|---|---|
| ia-gondola-engine | Carrega o contexto completo do projeto ia-gondola-engine. Use sempre que iniciar um chat neste repo. | claude-code-only |
Contexto — ia-gondola-engine
Serviço isolado de detecção YOLO e treinamento. Consumido exclusivamente pela ia-gondola-api via IA_MOTOR_URL.
Papel no sistema
ia-gondola-api → POST {IA_MOTOR_URL}/detectar → YOLO → [{box, conf, class}]
→ POST {IA_MOTOR_URL}/treinar → triagem + treino → modelo no S3
Estrutura
main.py — todo o código (FastAPI simples, sem sub-módulos)
Dockerfile
requirements.txt
Intencionalmente minimalista — não tem banco, não tem pastas internas.
Endpoints
POST /detectar
Form-data: ambiente (str), file (upload de imagem).
// Resposta
{
"status": "sucesso",
"deteccoes": [
{ "box": [x1, y1, x2, y2], "conf": 0.87, "class": 0 }
]
}
Confidence threshold no detect: 0.25.
POST /treinar
Body JSON: { "ambiente": "gondola", "pular_triagem": false }
Fluxo completo:
- Lista
treinamento/{ambiente}/novos-treinamentos/no S3 - Triagem (a menos que
pular_triagem: true):- Prediz cada imagem com o modelo atual (conf threshold 0.1)
conf média >= 0.30OUconf == 0→ move parabase-oficialconf média < 0.30→ move paradescartados
- Baixa toda a
base-oficialpara/tmp/dataset_{ambiente}/ - Redimensiona imagens > 4096px (
redimensionar_imagem) - Gera
data.yamlcom train=val=img_dir, nc=1 - Treina: 30 épocas, imgsz=640, batch=16, device=cpu
- Salva
best.pt:modelos/{ambiente}/atual/cerebro.pt(substitui)modelos/{ambiente}/versionamento/cerebro_{YYYYMMDD_HHMM}.pt(histórico)
Organização S3
modelos/{ambiente}/atual/cerebro.pt ← em produção
modelos/{ambiente}/versionamento/cerebro_YYYYMMDD_HHMM.pt ← histórico
treinamento/{ambiente}/novos-treinamentos/ ← aguardando triagem (img + .txt)
treinamento/{ambiente}/base-oficial/ ← aprovados pela triagem
treinamento/{ambiente}/descartados/ ← reprovados
Ambientes ativos: "gondola" (produtos), "etiqueta" (etiquetas de preço).
Cache de modelos
MODELOS_CARREGADOS= dict Python{ambiente: YOLO}— evita reload a cada request- Arquivo local:
/tmp/cerebro_{ambiente}.pt - Se
LastModifieddo S3 >mtimelocal → descarta cache, baixa novamente - Após treino, o modelo do ambiente treinado é removido de
MODELOS_CARREGADOSpara forçar reload
Env vars
| Variável | Descrição |
|---|---|
BUCKET_NAME |
Nome do bucket S3 (default: ia-gondola-projeto-2024) |
AWS_ACCESS_KEY_ID |
|
AWS_SECRET_ACCESS_KEY |
|
AWS_DEFAULT_REGION |
Como rodar
pip install -r requirements.txt
uvicorn main:app --reload --port 8001
docker build -t ia-gondola-engine .
docker run -p 8001:8000 --env-file .env ia-gondola-engine
Convenções
- Todo o código em
main.py— não criar sub-módulos - Triagem usa
conf threshold 0.30(ajustado manualmente, comentado no código) pular_triagem: trueé útil quando as imagens já foram pré-validadas- Este serviço não tem estado persistente próprio — tudo no S3