From 46764123250774ea03f196dca4eb4cecb17564ed Mon Sep 17 00:00:00 2001 From: Gabriel Date: Thu, 10 Sep 2026 08:53:06 -0300 Subject: [PATCH] =?UTF-8?q?Implementa=C3=A7=C3=A3o=20de=20compatibilidade?= =?UTF-8?q?=20HTTP?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- portal_api/nao_conformidades/CHANGELOG.md | 6 +++++ portal_api/nao_conformidades/CLAUDE.md | 1 + static/js/nao-conformidades.js | 30 ++++++++++++++++++++++- 3 files changed, 36 insertions(+), 1 deletion(-) diff --git a/portal_api/nao_conformidades/CHANGELOG.md b/portal_api/nao_conformidades/CHANGELOG.md index 6fe5609..085c670 100644 --- a/portal_api/nao_conformidades/CHANGELOG.md +++ b/portal_api/nao_conformidades/CHANGELOG.md @@ -62,3 +62,9 @@ Usuário reportou erro genérico ao tentar reprocessar os mesmos dois arquivos " Causa raiz: `_aplica_upsert_nao_conformidades` (rodada 88) fazia `update_or_create`/`get_or_create` **um item por vez** — aceitável nos ~300 registros da amostra inicial (~2 idas ao banco por item), mas o export real de "com finalizadas" tem ~1700 ocorrências/~3400 ações/~9000 acompanhamentos — quase 28 mil idas ao banco. Reescrito pra lote: pré-carrega o que já existe (poucos `SELECT ... WHERE codigo IN (...)`) e aplica tudo de uma vez (`bulk_create`/`bulk_update` por model, `batch_size=500`) — e, mais importante pro caso real de reimportação periódica, **pula por completo quem não mudou nada** desde a última importação (reimportar o Sigsistem inteiro todo mês traz de volta o histórico completo, não só o que é novo). Resultado medido com os arquivos reais: primeira carga ~21s (a maioria virando "atualizada" pela primeira vez), reimportação do mesmo arquivo sem nenhuma mudança real caiu de ~60s pra **~4s** (a maior parte disso é upload do arquivo de 23MB + parsing, não mais banco). Efeito colateral documentado (não é regressão, é a semântica correta): `resumo["ocorrencias_atualizadas"]`/`["acoes_atualizadas"]` agora contam só quem teve algum campo realmente alterado, não "já existia e foi vista de novo". Nenhuma migração, nenhuma mudança de contrato de API — só a implementação interna do upsert. Detalhe técnico em `portal_api/nao_conformidades/CLAUDE.md`, seção "Upsert". + +### Rodada 107 — "Não foi possível copiar o texto." no botão Copiar do Resumo (produção HTTP) + +Usuário reportou o aviso "Não foi possível copiar o texto." ao clicar em "Copiar" no popover do Resumo de Gestão, em produção. Causa: `navigator.clipboard.writeText()` (única chamada à Clipboard API no Portal) só funciona em contexto seguro (HTTPS ou `localhost`) — a produção deste Portal roda em HTTP puro hoje, sem TLS, e não há previsão de migrar pra HTTPS no momento (decisão de infraestrutura fora do escopo desta aplicação). + +Correção: `resumoCopiarBtn` agora chama `pidNcfCopiarTexto()`, que usa `navigator.clipboard.writeText()` quando `window.isSecureContext` é verdadeiro e, senão, cai num fallback com `document.execCommand("copy")` via um `