Skip to content

Implementação de Rotas de Sincronização (Offline-First Mobile) #32

@V1niSouza

Description

@V1niSouza

📌 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 limit deve ter valor máximo de 200 registros por página
  • Parâmetros esperados:
?page=1&limit=200

Parâmetro futuro (recomendado)

?updated_at=ISO_DATE

Permite sincronização incremental (apenas dados alterados desde a data informada)


📦 Rotas Necessárias (ordem definida)

  • GET /sync/:propriedadeId/bufalos
  • GET /sync/:propriedadeId/lactacao
  • GET /sync/:propriedadeId/grupos
  • GET /sync/:propriedadeId/racas
  • GET /sync/:propriedadeId/dados-zootecnicos
  • GET /sync/:propriedadeId/medicamentos
  • GET /sync/:propriedadeId/dados-sanitarios
  • GET /sync/:propriedadeId/alertas
  • GET /sync/:propriedadeId/coberturas
  • GET /sync/:propriedadeId/material-genetico
  • GET /sync/:propriedadeId/dashboard/lactacao
  • GET /sync/:propriedadeId/dashboard/producao-mensal
  • GET /sync/:propriedadeId/dashboard/reproducao
  • GET /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:

    • id
    • updated_at
    • deleted_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

📌 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.

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions