Notas de Lançamento - Versão 1.2.14
Resumo da Versão
A versão 1.2.14 foca substancialmente em estabilidade, resiliência de banco de dados, observabilidade e otimização de performance para ambientes de alta demanda. Destacam-se a implementação do mecanismo de retentativa automática para conflitos de serialização no PostgreSQL (SQLSTATE 40001), exposição nativa de métricas para o Prometheus via OpenTelemetry, introdução do sistema de cache distribuído no Redis para o relatório de posição de estoque, novos índices de banco de dados e a resolução de vazamentos de memória (OOM) no processamento de estoque.
🚀 Novas Funcionalidades e Destaques
🔄 Resiliência Transacional de Banco de Dados (Retry 40001)
- Retry Automático Transparente: Adição de camada de intercepção e retentativa em transações que falham por conflitos de concorrência/serialização no PostgreSQL (
40001), protegendo operações críticas de entrada, saída, dispensação e estorno contra exceções de concorrência.
📊 Telemetria e Métricas Prometheus Nativas
- Endpoint
/metrics: Exportação nativa de métricas do Prometheus via porta dedicada (METRICS_EXPORTER_PORT, padrão8081), permitindo monitorar throughput, tempo de resposta, contadores de exceções e uso de conexões em tempo real.
⚡ Cache Distribuído de Relatórios (Redis)
- Cache-Aside para Posição de Estoque: Implementação de suporte a cache via Redis (
ENABLE_STOCK_REPORT_CACHE) com invalidação automática acoplada a movimentações de estoque, reduzindo drasticamente a carga do PostgreSQL em consultas concorrentes ao relatório.
⚙️ Configurações e Variáveis de Ambiente
Servidor (API - NestJS)
METRICS_EXPORTER_PORT: Define a porta do endpoint/metricsdo Prometheus (padrão:8081).OTEL_EXPORTER_OTLP_TRACES_ENDPOINT: Endpoint OTLP HTTP para exportação de traces (padrão:http://localhost:4318/v1/traces).REDIS_CACHE_TIMEOUT_MS: Timeout limite (ms) para operações de leitura/escrita no cache Redis (padrão:200).REDIS_CACHE_INVALIDATE_TIMEOUT_MS: Timeout limite (ms) para invalidação de cache por prefixo SCAN/DEL (padrão:2000).ENABLE_STOCK_REPORT_CACHE: Ativa/desativa o cache-aside Redis do relatório de posição de estoque (true/false, padrão:false).STOCK_REPORT_CACHE_TTL_SECONDS: Tempo de vida (TTL em segundos) dos dados no cache de estoque (padrão:300).SOAP_LOG_PAYLOAD: Habilita o log do corpo de requisições e respostas SOAP truncado para diagnóstico pontual de integrações (1para ativar; deve permanecer desligado em produção por privacidade).
Cliente (Web - Vite/Nginx)
VAR__AMBIENTE_ESUS/VITE_AMBIENTE_ESUS: Define o ambiente da aplicação. Em ambientes de produção, deve ser mantido com o valor de produção (prouprod) para manter o módulo de oncologia desativado e inacessível na interface.
🛠️ Correções e Otimizações de Desempenho
📈 Banco de Dados e Consultas (PostgreSQL)
- Correção de OOM no Ledger de Estoque: Remoção do carregamento ansioso (eager load) do relacionamento
itemsMovementna consulta do custo médio, eliminando estouros de memória RAM do container da API. - Novos Índices de Desempenho: Adição de índices estratégicos para listagem de materiais, catálogo OBM, usuários SUS, prescrições e busca de dispensações por CPF (
20260601120000,20260707100000,20260709100000,20260709110000,20260709120000,20260709130000). - Ajuste de Sequências de IDs: Corrigido o desalinhamento de
id_seqno PostgreSQL pós-seeding de banco de dados.
🌐 Interface e Usabilidade
- Sincronização de Endereços: Aprimorada a lógica de formulários para resetar seleções de município/estado em caso de falha e liberado preenchimento manual quando o CEP não é localizado no webservice.
- Mensagem de Permissão Insuficiente: Adicionada chave i18n para exibir notificação clara quando um usuário não possui perfil com acesso ao recurso solicitado.