Banco de Dados
O RadarBov usa PostgreSQL 14 com a extensão PostGIS para o servidor, e SQLite no app mobile para funcionamento offline.
PostgreSQL — Servidor
Por que PostGIS
PostGIS adiciona suporte a tipos e funções geoespaciais ao PostgreSQL. O RadarBov usa isso para:
- Armazenar coordenadas de paradas e viagens
- Verificações de conformidade territorial (sobreposição com áreas embargadas)
- Consultas geográficas de estabelecimentos
Extensão ltree
A extensão ltree é usada para representar hierarquias de acesso (ver Sistema de Acesso). Permite consultas hierárquicas eficientes como “todos os registros desta organização e seus sub-estabelecimentos”.
Principais tabelas
| Tabela | Domínio | Descrição |
|---|---|---|
users | Accounts | Usuários |
user_profiles | Accounts | Perfis/papéis do usuário |
organizations | Organizations | Organizações |
establishments | Establishments | Estabelecimentos/propriedades |
control_units | Establishments | Subdivisões de estabelecimento |
tags | Tags | Brincos RFID |
animals_ingresses | Animals | Entradas de animais |
animals_egresses | Animals | Saídas de animais |
tags_identifications | Animals | Identificações |
gtas | GTAs | Guias de Trânsito Animal |
travels | Travels | Viagens |
vehicles | Travels | Veículos |
stops | Travels | Paradas com GPS |
shares | Shares | Compartilhamentos ativos |
invites | Invites | Convites pendentes e histórico |
Migrações
As migrações são gerenciadas pelo Ecto. Cada migração está versionada no repositório e é aplicada automaticamente no deploy.
SQLite — App Mobile
O app mobile usa SQLite (via sqflite) para persistência local. O schema está na versão 34 e o arquivo é radarbov_db.db.
Principais tabelas locais
| Tabela | Descrição |
|---|---|
user | Usuário autenticado localmente |
establishment | Estabelecimentos sincronizados |
tag | Brincos baixados/registrados offline |
animals_ingress | Entradas criadas offline |
animals_ingress_m2m | Associação entrada ↔ brinco |
animals_egress | Saídas criadas offline |
animals_egress_m2m | Associação saída ↔ brinco |
animals_identifications | Identificações offline |
animals_identifications_m2m | Associação identificação ↔ brinco |
gta | GTAs baixadas para uso offline |
vehicle | Veículos cadastrados |
trip | Viagens |
stop | Paradas GPS |
synchronization_error | Erros de sync para retry |
Campo synced
Registros criados offline têm synced = false. O serviço de sincronização marca como synced = true após envio bem-sucedido ao servidor. Falhas ficam em synchronization_error para retry manual.