Atualização do catálogo: preview + confirmação
Quando você testa conexão OData e o SAP tem fields diferentes do catálogo local, abre um dialog mostrando added/removed antes de gravar.
Filosofia
- Auto-disparado pelo sistema (test connection) → dialog de confirmação
- Disparado explicitamente por você (botão "Atualizar catálogo" do banner stale, "Sincronizar com catálogo") → silencioso, info no toast/audit
Fluxo do dialog
Após test OData bem-sucedido:
- Backend compara catálogo atual com
$metadataretornado - Se há diferenças, dialog mostra: +N novos · −M retirados
- Você aprova → catálogo é gravado
- Você cancela → catálogo fica como está (teste continua sucesso)
Onde aplica
- Wizard de criação (Step 2 source + Step 3 destino)
- Criação manual (
+ Nova Integraçãobotão verde) - Edição de integração existente (botão "Editar")
Nos 3 fluxos, comportamento idêntico.
O que a comparação mostra (28/09/2026)
A tela de comparação do catálogo com o
$metadata traz três contagens:- Nomes: campos que entram e que saem.
- Estrutura: campos que continuam com o mesmo nome mas mudaram de forma — laço (
loopPath), cardinalidade, repetição (maxOccurs), caminho qualificado, segmento ou tipo. A tela diz quantos campos mudaram em cada item e lista os primeiros 50, com o valor antes e depois. - Coleções: itens, parceiros e outros grupos que passam a ser (ou deixam de ser) coleção.
Uma atualização que só muda a forma dos campos não aparece mais como "0 diferenças". Se uma coleção vai deixar de existir, confira a fonte antes de confirmar: os mapeamentos daquela coleção passariam a ler só a primeira linha.
Qual mensagem é atualizada (05/10/2026)
O Atualizar via $metadata grava na mensagem que você abriu no catálogo — a mesma versão e o mesmo serviço SAP — e nunca cria outra mensagem com o mesmo código. Se o catálogo não puder ser lido naquele momento, nada é gravado e a tela mostra o erro: tente de novo. A lista do catálogo também não aparece pela metade: se a leitura falhar, a tela mostra o erro em vez de esconder mensagens.
Histórico de versões
- 1.1.2
Correção no "Atualizar fonte" do catálogo: mensagem global sem versão (como os IDocs ORDERS05 e INVOIC02) agora é encontrada no banco e atualizada por mescla — a estrutura nova da fonte entra e o que foi curado (campos de envelope preenchidos automaticamente, tipo do campo, obrigatoriedade técnica) fica. Antes, a mensagem sem versão não era encontrada e a atualização regravava a mensagem só com a fonte, perdendo o curado. Se a mensagem não puder ser identificada com certeza, nada é gravado. O ORDERS05 afetado em 07/10/2026 teve o curado restaurado.
07/10/2026 · updated
- 1.1.1
Fix: normalizeFormatKey nunca normaliza code alfanumérico pra vazio (code "SAP" do rest-autodetect ficava inresolvível e travava o Nova Mensagem); FormatPicker agora exibe warning âmbar quando suggest-format responde isEmpty/not_found (antes engolia em silêncio). 3 testes novos.
25/08/2026 · updated
- 1.1.0
Catálogo 19/05: bugfix do upsert com partial unique NULL (lookup+UPDATE/INSERT manual) (#93), auto-atualizar após test connection OData bem-sucedido com helper extraído upsertCatalogFromMetadata (#106), C2 preview+confirm pós test (#113), C4 refresh implícito pré-sincronizar (#113).
19/05/2026 · updated
- 1.0.0
Backend pra atualizar fonte de mensagem do catálogo. Endpoint POST /api/edi-hub/refresh-catalog-message: lookup DB→hard-coded fallback, fetch URL nova ou usa generatedFrom existente (se URL), parse, UPDATE em DB ou INSERT overlay sobre hard-coded. Helper loadAllStandards atualizado: marca _origin db|hardcoded em cada msg + dedup (DB sobrepõe hard-coded com mesmo code+version). LocalFormat type ganha _origin opcional. Audit log catalog.message_refreshed.
07/05/2026 · new