-
Notifications
You must be signed in to change notification settings - Fork 0
Implementação de Rotas de Sincronização (Offline-First Mobile) #32
Description
📌 Contexto
Para suportar o funcionamento offline-first no aplicativo mobile, será necessário implementar rotas de sincronização em lote na API, permitindo o download eficiente de dados por propriedade.
Atualmente, o modelo baseado em múltiplas requisições por entidade não escala bem em ambientes com conectividade limitada, tornando necessária uma abordagem otimizada.
🎯 Objetivo
Disponibilizar endpoints de sincronização por propriedade, garantindo:
- Redução do número de requisições
- Melhor performance em redes instáveis
- Suporte ao funcionamento offline
- Base para sincronização incremental futura
🔐 Regra de Acesso
- O usuário deve conseguir sincronizar apenas propriedades às quais possui acesso
- A validação deve seguir as regras de autorização já existentes na API
🔄 Padrão das Rotas
GET /sync/:propriedadeId/<recurso>📄 Paginação
- As rotas devem suportar paginação
- O parâmetro
limitdeve ter valor máximo de 200 registros por página - Parâmetros esperados:
?page=1&limit=200Parâmetro futuro (recomendado)
?updated_at=ISO_DATEPermite sincronização incremental (apenas dados alterados desde a data informada)
📦 Rotas Necessárias (ordem definida)
GET /sync/:propriedadeId/bufalosGET /sync/:propriedadeId/lactacaoGET /sync/:propriedadeId/gruposGET /sync/:propriedadeId/racasGET /sync/:propriedadeId/dados-zootecnicosGET /sync/:propriedadeId/medicamentosGET /sync/:propriedadeId/dados-sanitariosGET /sync/:propriedadeId/alertasGET /sync/:propriedadeId/coberturasGET /sync/:propriedadeId/material-geneticoGET /sync/:propriedadeId/dashboard/lactacaoGET /sync/:propriedadeId/dashboard/producao-mensalGET /sync/:propriedadeId/dashboard/reproducaoGET /sync/:propriedadeId/dashboard
📄 Formato de Resposta (Padrão)
{
"data": [...],
"meta": {
"page": 1,
"limit": 200,
"total": 0,
"updated_at": "ISO_DATE", // última modificação dos dados
"synced_at": "ISO_DATE" // data/hora que a sincronização foi realizada
}
}⚠️ Requisitos Técnicos
-
Os endpoints devem retornar dados completos por recurso
-
Os dados devem estar prontos para persistência local (evitar dependência de múltiplas chamadas)
-
Cada registro deve conter:
idupdated_atdeleted_at(ou flag de exclusão lógica, se aplicável)
🚀 Benefícios
- Melhor performance no mobile
- Redução de carga de rede
- Experiência consistente offline
- Base para evolução do sistema de sincronização
- Permite auditoria e controle de quando cada sync foi realizado (
synced_at)
🧠 Observações
-
Essas rotas são específicas para sincronização e não substituem as rotas atuais
-
Futuramente pode-se evoluir para:
- Endpoint consolidado (
/sync/:propriedadeId/full) - Compactação de resposta (gzip)
- Estratégias avançadas de versionamento
- Endpoint consolidado (
📌 Conclusão
A implementação dessas rotas é fundamental para viabilizar a estratégia offline-first do aplicativo mobile, garantindo escalabilidade e melhor experiência do usuário em cenários com baixa conectividade.