Sistema inteligente para predição individual de produção de leite e análise de consanguinidade em búfalos, desenvolvido para otimizar o manejo reprodutivo e produtivo do rebanho.
- 🥛 Predição personalizada para cada fêmea em seu próximo ciclo
- 📈 Features avançadas: histórico produtivo, saúde, reprodução, genética
- 🎯 Meta de precisão: R² > 0.70
- 📊 Classificação de potencial: Alto, Bom, Médio, Baixo
- 🧬 Coeficiente de Wright para cálculo preciso
- 🌳 Análise genealógica completa com ancestrais e descendentes
⚠️ Classificação de risco: Baixo, Moderado, Alto, Extremo- 🔍 Análise de ancestrais até 5 gerações
- 💑 Simulação completa de acasalamentos
- 📊 Cálculo de consanguinidade da prole
- 🎯 Recomendações inteligentes baseadas em risco genético
- 🚫 Detecção automática de parentesco direto (pai-filha, irmãos)
- 🔍 Busca inteligente de machos compatíveis
- 📊 Score de compatibilidade calculado automaticamente
- 🎯 Limites configuráveis de consanguinidade (padrão: 6.25%)
📁 buffs-ia/
├── 🚀 app/
│ ├── main.py # Inicialização FastAPI
│ ├── config.py # Configurações e variáveis de ambiente
│ ├── schemas.py # Modelos Pydantic (input/output)
│ ├── services.py # Singleton de dados (modelo + DataFrames)
│ ├── dependencies.py # Dependency injection FastAPI
│ ├── database.py # Conexão Supabase
│ ├── exceptions.py # Exceções customizadas
│ ├── utils.py # Conversão snake_case → camelCase
│ ├── api/routes/
│ │ ├── health.py # Status e conexões
│ │ ├── predicao.py # Predição individual de produção
│ │ ├── simulacao.py # Simulação de acasalamentos
│ │ └── genealogia.py # Análise genealógica e machos compatíveis
│ └── models/
│ ├── prediction.py # Lógica de predição individual
│ └── genealogia.py # Coeficiente de Wright e genealogia
├── 📊 treinar_ia.py # Script de treinamento da IA (Supabase-only)
├── 📋 requirements.txt # Dependências Python
└── 📚 README.md # Este arquivo
Responsabilidade da IA: cálculos genéticos (consanguinidade, simulações). Responsabilidade da API NestJS (buffs-api): enriquecimento dos dados com nome dos animais, score de compatibilidade e persistência no banco.
python -m venv .venv
source .venv/bin/activate
pip install --upgrade pip
pip install -r requirements.txt
# para sair
# deactivateCrie um arquivo .env na raiz do projeto:
SUPABASE_URL=https://seu-projeto.supabase.co
SUPABASE_SERVICE_ROLE_KEY=sua-chave-service-role
IA_REQUIRE_SUPABASE=trueSem Supabase configurado, a aplicação não sobe (fallback para CSV removido).
python treinar_ia.pyO script lê diretamente do Supabase. Garanta as variáveis configuradas e que o banco contém dados suficientes para treino.
source .venv/bin/activate
python -m uvicorn app.main:app --reload --port 8000Acesso:
- 🌐 API: http://localhost:8000
- 📚 Swagger: http://localhost:8000/docs
- 🔍 Redoc: http://localhost:8000/redoc
Todos os campos usam camelCase e IDs são UUIDs v4.
GET /
GET /status/conexoesPOST /predicao-individual
Content-Type: application/json
{
"idFemea": "c9d5b83e-2345-5678-9012-345678901234"
}Resposta:
{
"idFemea": "c9d5b83e-2345-5678-9012-345678901234",
"predicaoLitros": 1850.5,
"classificacaoPotencial": "Alto",
"percentualVsMedia": 15.3,
"producaoMediaPropriedade": 1605.0,
"idPropriedade": "a1b2c3d4-...",
"featuresUtilizadas": ["ordem_lactacao", "producao_media_historica", "..."],
"dataPredicao": "2026-02-19T10:00:00"
}POST /simular-acasalamento?incluir_predicao_femea=true
Content-Type: application/json
{
"idMacho": "b8c4a72d-1234-4567-8901-234567890123",
"idFemea": "c9d5b83e-2345-5678-9012-345678901234"
}Resposta:
{
"machoId": "b8c4a72d-...",
"femeaId": "c9d5b83e-...",
"consanguinidadeMacho": 0.0,
"consanguinidadeFemea": 3.13,
"parentescoPais": 1.56,
"nivelParentesco": "Parentesco distante",
"consanguinidadeProle": 1.56,
"riscoConsanguinidade": "Baixo",
"recomendacao": "Acasalamento seguro - baixo risco genético.",
"detalhes": {
"eMeioIrmao": false,
"temParentescoDireto": false,
"tipoParentescoDireto": null,
"coeficienteDecimal": 0.0156
},
"predicaoProducaoFemea": { ... }
}POST /analise-genealogica
Content-Type: application/json
{
"idBufalo": "b8c4a72d-1234-4567-8901-234567890123"
}Resposta:
{
"idBufalo": "b8c4a72d-...",
"sexo": "M",
"consanguinidade": 3.13,
"riscoGenetico": "Moderado",
"descricaoRisco": "Consanguinidade 3.125-6.25% - Risco moderado",
"eFundador": false,
"pais": { "paiId": "uuid-pai", "maeId": "uuid-mae" },
"ancestrais": { "geracao_1": ["uuid"], "geracao_2": ["uuid", "uuid"] },
"descendentes": { "geracao_1": ["uuid"] },
"resumo": {
"totalAncestrais": 6,
"totalDescendentes": 2,
"geracoesAncestrais": 3,
"geracoesDescendentes": 1
}
}GET /machos-compatíveis/{femea_id}?max_consanguinidade=6.25
x-user-id: uuid-do-usuarioResposta (estrutura enriquecida pela buffs-api antes de chegar ao frontend):
{
"femeaId": "c9d5b83e-...",
"machosCompativeis": [
{
"idBufalo": "b8c4a72d-...",
"consanguinidadeProle": 1.56,
"riscoConsanguinidade": "Baixo"
}
],
"totalEncontrados": 12,
"limiteConsanguinidade": 6.25
}Nota:
nomeescoreCompatibilidadesão adicionados pela buffs-api após receber esta resposta, consultando o banco de dados diretamente.
| Faixa | Risco | Recomendação |
|---|---|---|
| < 3.125% | 🟢 Baixo | Acasalamento seguro |
| 3.125% – 6.25% | 🟡 Moderado | Monitorar descendentes |
| 6.25% – 12.5% | 🔴 Alto | Atenção — não recomendado |
| > 12.5% | ⛔ Extremo | Proibido |
| Parentesco direto | ⛔ Crítico | Proibido (pai-filha, irmãos) |
id_propriedade- Perfil da propriedadeidade_mae_anos- Idade da fêmeaordem_lactacao- Ordem do cicloestacao- Estação do anointervalo_partos- Intervalo entre partosproducao_media_historica- Histórico produtivoid_raca- Raça do animalcontagem_tratamentos- Eventos de saúdeflag_doenca_grave- Doenças gravesecc_medio_ciclo- Condição corporalidade_primeiro_parto_dias- Idade no primeiro partodias_em_aberto- Período pós-partopotencial_genetico_mae- Potencial genético
- 🎯 R² > 0.70 (70% da variância explicada)
- 📉 RMSE < 200 litros (erro médio)
- 🔍 OOB Score > 0.65 (validação cruzada)
- ✅ Algoritmo de Wright com memoização (cache)
- ⚡ Resposta rápida para simulações individuais
- 🎯 Filtros automáticos para alto risco e parentesco direto
- Python 3.10+ - Linguagem principal
- FastAPI - Framework da API REST
- Pydantic v2 - Validação de dados e serialização camelCase
- scikit-learn / RandomForest - Modelo de predição
- Pandas / NumPy - Manipulação e computação de dados
- Supabase - Banco de dados em produção (PostgreSQL)
- python-dotenv - Gerenciamento de variáveis de ambiente
- 🐳 Docker para containerização
- ☁️ Deploy em nuvem (AWS / Railway)
- 🔄 CI/CD pipeline automatizado
- A Action
.github/workflows/deploy.ymlfazgit pull, grava.envcomSUPABASE_URL,SUPABASE_SERVICE_ROLE_KEYe assume Supabase como única fonte de dados (IA_REQUIRE_SUPABASE=true). - Não há geração ou leitura de CSV — o treinamento (
treinar_ia.py) consome exclusivamente os dados do Supabase e falha se as variáveis não estiverem definidas ou se a conexão não responder. - O serviço é executado via
pm2comuvicorn(porta 8000); logs:pm2 logs buffs-ia.
- 🧪 Testes automatizados de contrato com a buffs-api
- 📊 Validação em campo com dados reais de fazendas piloto
- 👨🌾 Aprovação de especialistas veterinários
Este projeto está licenciado sob a MIT License.
🐃 Buffs IA - Transformando o manejo de búfalos com inteligência artificial! 🚀