Pular para conteúdo

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ão 8081), 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 /metrics do 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 (1 para 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 (pr ou prod) 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 itemsMovement na 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_seq no 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.