Todos os artigos
FT-CATALOG-METADATA-DIFF-V1· 1.1Integrações

Mapping: alerta de drift do $metadata SAP

Banner amarelo no mapping editor avisa quando o mapping referencia fields que sumiram do $metadata atual do SAP. Botão "Atualizar catálogo" remove os órfãos.

Atualizado em 8/6/2026

Drift alert: mapping vs $metadata SAP



Quando você abre um mapping no editor, o Lefia faz silenciosamente um GET no $metadata da conexão SAP atual e compara com os fields que o mapping referencia.

Se algum field do mapping não existe no $metadata atual:
  • Banner amarelo aparece no topo: "Mapping com campos desatualizados — N campos mapeados não existem no SAP atual".
  • Lista expandível dos fields missing.
  • Botão "Atualizar catálogo" chama /api/admin/catalog/update-from-connection com merge aditivo (preserva fields humanos curados).


Comportamento runtime



O runtime já remove esses fields automaticamente na execução — então o pipeline não quebra. Mas o mapping fica "sujo" com referências órfãs. Atualizar o catálogo deixa o mapping limpo.

Por que existe



Schema SAP muda. Cliente upgrade S/4HANA 2023 → 2026 pode adicionar/remover/renomear fields. Sem o drift alert, mapping silenciosamente passa a ignorar dados sem ninguém perceber.

Tickets



  • #154 implementação core.
  • #207.4 PR #49 — i18n + closing do épico.


---

Atualização 19/05/2026



O banner "Mapping com campos desatualizados" agora pode ser resolvido de duas formas:

  1. "Atualizar catálogo" (botão do banner) — refresca catalog_user_messages com $metadata real do SAP. Comportamento atual.
  2. "Sincronizar com catálogo" (botão da toolbar) — refresca o catálogo + remove tudo obsoleto do mapping + dispara a pirâmide IA pra repropor. Destrutivo (perde mapping manual de fields obsoletos) mas resolve banner persistente.


Ver artigos: catalog-preview-confirm (confirmação pós test) e sync-catalog-destructive (destrutivo + IA).

Histórico de versões

  • 1.1

    filterFieldsByMetadata walker recursivo: descer cadeia to_X.to_Y.to_Z.field até leaf. Fail-open em entity target desconhecido. Banner staleness sem falso-positivo em paths nested 2+. availableUnmappedSources compara 3 chaves (name+qualifiedName+loopPath). create-message-type stubs preferem loopPath.

    5/22/2026 · updated

  • 1.0.0

    i18n no MappingStalenessBanner + closing do $metadata diff/drift alert. Core já implementado em #154 e follow-ups (MappingStalenessBanner, /api/edi-hub/mapping/[id]/staleness-check, /api/admin/catalog/update-from-connection, /api/admin/catalog/diff-from-connection, CatalogDiffModal). Este PR adiciona useTranslations + 12 chaves i18n com plural rules ICU. PR #49.

    5/17/2026 · new