Arquitetura¶
Organização¶
Aplicação Django monolítica organizada nos apps accounts, core, ativos, localizacao, inventario e integracao_erp. Django Templates entrega a interface Holo; PostgreSQL persiste os dados patrimoniais. Celery executa processamento agendado e RabbitMQ recebe as mensagens; Redis é usado como cache e backend de resultados.
| Camada | Implementação |
|---|---|
| Interface | Django Templates, JavaScript, QR Code no browser e componentes .holo-*. |
| Aplicação/domínio | Views, formulários e serviços de movimentação, inventário e integração ERP. |
| Persistência | Django ORM e PostgreSQL dedicado ao produto. |
| API pública | Django REST Framework, permissões de model e drf-spectacular; somente leitura. |
| Processamento | Celery Worker + RabbitMQ; Beat agenda verificação de empréstimos vencidos. |
| Cache | Redis para backend de resultados, cache do cliente ERP e consultas rápidas. |
Fronteira com o ERP¶
ERPClient envia GET autenticado ao endpoint de Centros de Custo. Cache Redis reduz chamadas repetidas; falhas recentes usam cache curto para evitar aguardar o timeout a cada tela. Indisponibilidade não deve bloquear o cadastro do ativo sem Centro de Custo.
Consistência do histórico¶
Ativo.setor e Ativo.responsavel representam o estado corrente, mas o histórico é mantido em MovimentacaoAtivo. O domínio usa MovimentacaoService como porta de escrita para sincronizar estado e evento, evitando atualizações diretas que deixariam a trilha incompleta.
Operação isolada¶
Produção usa containers e volumes próprios do produto, banco PostgreSQL isolado, rede interna e conexão à rede externa do proxy reverso. Não compartilha o banco do ERP; a integração usa a API publicada por ele.
Referências¶
- Settings/rotas:
config/settings/econfig/urls.py. - Serviços:
apps/localizacao/services.py,apps/inventario/services.py,apps/integracao_erp/client.py. - DevOps