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.
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-connectioncom 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:
- "Atualizar catálogo" (botão do banner) — refresca
catalog_user_messagescom$metadatareal do SAP. Comportamento atual. - "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