Skip to content

Guidjy/comedouros

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

45 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🐄 API dos comedouros

Esta API fornece endpoints para gerenciar lotes, animais, brincos e refeições, bem como gerar relatórios de comportamento ingestivo, desempenho e viabilidade econômica.

Base URL:

https://comedouros.onrender.com/

🧩 Índice

  1. Modelos e CRUD
  2. Comportamento Ingestivo
  3. Desempenho
  4. Viabilidade Econômica
  5. Relatórios Gerais

1. Modelos e CRUD

Lotes

Endpoint:
/api/lotes/

Métodos:

  • GET /lotes/ → Lista todos os lotes
  • GET /lotes/{id}/ → Retorna um lote específico
  • POST /lotes/ → Cria um novo lote
  • PUT /lotes/{id}/ → Atualiza um lote
  • DELETE /lotes/{id}/ → Remove um lote

Exemplo de corpo (POST):

{
  "nome": "Lote 01",
  "n_animais": 10
}

Exemplo de resposta (GET /lotes/):

[
  {
    "id": 1,
    "nome": "Lote 01",
    "n_animais": 10
  }
]

Brincos

Endpoint:
/api/brincos/

Métodos:

  • GET /brincos/
  • GET /brincos/{id}/
  • POST /brincos/
  • PUT /brincos/{id}/
  • DELETE /brincos/{id}/

Exemplo de corpo (POST):

{
  "tag_id": "TAG1234",
  "numero": "001"
}

Animais

Endpoint:
/api/animais/

Métodos:

  • GET /animais/
  • GET /animais/{id}/
  • POST /animais/
  • PUT /animais/{id}/
  • DELETE /animais/{id}/

Filtros disponíveis:

  • ?lote={id}
  • ?raca={string}
  • ?categoria={string}

Exemplo de corpo (POST):

{
  "sexo": "macho",
  "meses": 12,
  "raca": "Nelore",
  "categoria": "Bezerro",
  "frequencia_livre": false,
  "frequencia": 3,
  "brinco": 1,
  "lote": 2
}

Resposta adicional:

  • peso_atual: peso vivo mais recente do animal (kg)

Refeições

Endpoint:
/api/refeicoes/

Métodos:

  • GET /refeicoes/
  • GET /refeicoes/{id}/
  • POST /refeicoes/
  • PUT /refeicoes/{id}/
  • DELETE /refeicoes/{id}/

Filtros disponíveis:

  • ?animal={id}
  • ?data=YYYY-MM-DD

Exemplo (POST):

{
  "horario_entrada": "09:00:00",
  "horario_saida": "09:20:00",
  "consumo_kg": 2.3,
  "peso_vivo_entrada_kg": 200.5,
  "data": "2025-10-10",
  "animal": 1
}

Criação via CSV

Endpoint:
POST /api/cria-animais-com-csv/

Descrição:
Cria animais e suas refeições a partir de um arquivo CSV exportado do sistema do cocho.

Requisição (multipart/form-data):

Campo Tipo Descrição
arquivo file Arquivo CSV contendo dados dos animais e refeições

Exemplo de resposta:

{
  "sucesso": "Animais e refeições registradas com sucesso"
}

2. Comportamento Ingestivo

Consumo Diário

Endpoints:

GET /api/consumo-diario/animal/{brinco}/
GET /api/consumo-diario/animal/{brinco}/{data}/
GET /api/consumo-diario/lote/{nome}/
GET /api/consumo-diario/lote/{nome}/{data}/

Descrição:

  • Retorna o consumo de ração (kg) de um animal ou lote, por dia ou por refeição em um dia específico.

Parâmetros:

Nome Tipo Descrição
animal_ou_lote string 'animal' ou 'lote'
numero_ou_nome string Número do brinco (animal) ou nome do lote
data string (opcional) YYYY-MM-DD

Resposta (animal):

{
  "2025-10-10": 3.2,
  "2025-10-11": 2.9
}

Resposta (com data):

[
  {"09:00:00": 1.2},
  {"15:00:00": 1.7}
]

Minutos por Refeição

Endpoints:

GET /api/minuto-por-refeicao/animal/{brinco}/
GET /api/minuto-por-refeicao/animal/{brinco}/{data}/
GET /api/minuto-por-refeicao/lote/{nome}/

Descrição: Calcula o tempo médio (em minutos) das refeições de um animal ou lote.

Resposta (animal, média por dia):

{
  "2025-10-10": 18.5,
  "2025-10-11": 21.3
}

Resposta (animal, dia específico):

{
  "refeicao_n1": 17.5,
  "refeicao_n2": 19.0
}

3. Desempenho

Todos os endpoints de desempenho seguem o mesmo padrão de rota e aceitam tanto animal quanto lote:

GET /api/<rota>/<animal_ou_lote>/<numero_ou_nome>/
Parâmetro Tipo Descrição
animal_ou_lote string 'animal' ou 'lote'
numero_ou_nome string Número do brinco (animal) ou nome do lote

Evolução do Peso

Endpoint:
GET /api/evolucao-peso-por-dia/<animal_ou_lote>/<numero_ou_nome>/

Descrição:
Retorna a evolução do peso vivo (kg) de um animal ou lote ao longo do tempo.

Exemplo (animal):

GET /api/evolucao-peso-por-dia/animal/101/

Exemplo (lote):

GET /api/evolucao-peso-por-dia/lote/LoteA/

Resposta:

{
  "2025-10-10": 200.5,
  "2025-10-11": 205.3
}

Erros possíveis:

{"erro": "Não existe um animal com um brinco de número 101"}

Evolução do Consumo Diário

Endpoint:
GET /api/evolucao-consumo-diario/<animal_ou_lote>/<numero_ou_nome>/

Descrição:
Retorna o consumo diário de ração (kg) por animal ou lote.

Exemplo (animal):

GET /api/evolucao-consumo-diario/animal/101/

Exemplo (lote):

GET /api/evolucao-consumo-diario/lote/LoteA/

Resposta:

{
  "2025-10-10": 3.0,
  "2025-10-11": 2.8
}

Erros possíveis:

{"erro": "não foram encontradas refeições para o animal com o brinco 101"}

Evolução do Ganho de Peso

Endpoint:
GET /api/evolucao-ganho/<animal_ou_lote>/<numero_ou_nome>/

Descrição:
Gera um relatório da evolução do ganho de peso de um animal ou lote.

Exemplo (animal):

GET /api/evolucao-ganho/animal/101/

Exemplo (lote):

GET /api/evolucao-ganho/lote/LoteA/

Resposta:

{
  "2025-10-11": 4.8,
  "2025-10-12": 6.1
}

Erros possíveis:

{"erro": "não foram encontrados animais para o lote LoteA"}

Evolução do GMD (Ganho Médio Diário)

Endpoint:
GET /api/evolucao-gmd/<animal_ou_lote>/<numero_ou_nome>/

Descrição:
Gera um relatório com o ganho médio diário (kg/dia) de um animal ou lote.

Exemplo (animal):

GET /api/evolucao-gmd/animal/101/

Exemplo (lote):

GET /api/evolucao-gmd/lote/LoteA/

Resposta:

{
  "2025-10-10": 0.0,
  "2025-10-11": 2.3,
  "2025-10-12": 2.6
}

Erros possíveis:

{"erro": "argumento invárlido 'gmd'"}

4. Viabilidade Econômica

Custo Total

Endpoints:

GET /api/custo-total/animal/{brinco}/{preco_kg_racao}/
GET /api/custo-total/lote/{nome}/{preco_kg_racao}/

Descrição: Calcula o custo total de ração consumida.

Parâmetros:

Nome Tipo Descrição
preco_kg_racao float Preço do kg da ração

Resposta:

{
  "custo_total": 324.5
}

Evolução do Custo Diário

Endpoints:

GET /api/evolucao-custo-diario/animal/{brinco}/{preco_kg_racao}/
GET /api/evolucao-custo-diario/lote/{nome}/{preco_kg_racao}/

Resposta:

{
  "2025-10-10": 15.6,
  "2025-10-11": 17.2
}

Ganho por Dia (em R$)

Endpoints:

GET /api/ganho-por-dia/animal/{brinco}/{reais_por_kg_de_peso_vivo}/
GET /api/ganho-por-dia/lote/{nome}/{reais_por_kg_de_peso_vivo}/

Descrição: Calcula o ganho em reais por dia, com base no GMD e no preço do kg do peso vivo.

Parâmetros:

Nome Tipo Descrição
reais_por_kg_de_peso_vivo float Preço (R$/kg) do peso vivo

Resposta:

{
  "2025-10-10": 9.8,
  "2025-10-11": 12.1
}

5. Relatório Geral

Relatório Geral Consolidado

Endpoint:
GET /api/relatorio-geral/<animal_ou_lote>/<numero_ou_nome>/<preco_kg_racao>/<reais_por_kg_de_peso_vivo>/

Descrição:
Gera um único relatório completo, reunindo todos os gráficos e métricas já existentes na API, incluindo:

  • Consumo diário
  • Minutos por refeição
  • Evolução do peso
  • Evolução do consumo diário
  • Evolução do ganho de peso
  • Evolução do GMD
  • Custo total
  • Evolução do custo diário
  • Ganho por dia

Funciona para animal e lote.


🔧 Parâmetros

Parâmetro Tipo Descrição
animal_ou_lote string 'animal' ou 'lote'
numero_ou_nome string Número do brinco (animal) ou nome do lote
preco_kg_racao float (string) Preço por kg da ração (formato x.y)
reais_por_kg_de_peso_vivo float (string) Preço do kg do peso vivo (formato x.y)

📌 Exemplos de Requisição

Animal

GET /api/relatorio-geral/animal/101/2.5/14.3/

Lote

GET /api/relatorio-geral/lote/LoteA/2.5/14.3/

Todos os animais

GET /api/relatorio-geral/lote/TODOS/2.5/14.3/

📤 Exemplo de Resposta

{
  "consumo_diario": {
    "2025-10-10": 3.1,
    "2025-10-11": 2.9
  },
  "minuto_por_refeicao": {
    "2025-10-10": 19.4,
    "2025-10-11": 20.1
  },
  "evolucao_peso_por_dia": {
    "2025-10-10": 200.5,
    "2025-10-11": 205.3
  },
  "evolucao_consumo_diario": {
    "2025-10-10": 3.0,
    "2025-10-11": 2.8
  },
  "evolucao_ganho": {
    "2025-10-11": 4.8,
    "2025-10-12": 6.1
  },
  "evolucao_gmd": {
    "2025-10-10": 0.0,
    "2025-10-11": 2.3
  },
  "custo_total": 324.5,
  "evolucao_custo_diario": {
    "2025-10-10": 15.6,
    "2025-10-11": 17.2
  },
  "ganho_por_dia": {
    "2025-10-10": 9.8,
    "2025-10-11": 12.1
  }
}

Observações gerais

  • Todas as respostas de erro seguem o formato:
{"erro": "mensagem descritiva"}
  • Datas devem estar no formato ISO: YYYY-MM-DD
  • Valores monetários e numéricos devem usar ponto (.) como separador decimal.

About

Backend do sistema de comedouros automáticos para ovinos desenvolvido em parceria com o Núcleo de Automação e Tecnologias na Agropecuária

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Languages