Todos os artigos
FT-CATALOG-CONVERSION-RULES-V1· 1.0.0Integrações

Mapping: botão "Sugerir Regras de Conversão"

Segundo passo de inteligência do mapping editor — depois de mapear de-para, propõe a transformação certa baseada em tipo/length/precision/scale.

Atualizado em 8/6/2026

Sugerir Regras de Conversão



O mapping editor tem 2 botões de inteligência lado a lado:

  1. Sugerir IA: propõe de-para (source field ↔ destination field) via pirâmide de IA (heurística → embeddings → LLM).
  2. Sugerir Regras de Conversão: propõe transformação (transform + transform_config) pras linhas já mapeadas.


A separação é deliberada: depois de aceitar/ajustar o de-para, você roda o "Sugerir Regras" pra que o Lefia proponha como converter o valor entre as duas pontas. Não altera o mapeamento — só ajusta a transformação aplicada.

Como funciona



Pra cada linha com source + destination + transform != ignore:
  1. Busca o FormatField dos dois lados nos catálogos (source e destination).
  2. Compara type/length/precision/scale/pattern/enumeration.
  3. Propõe transform + transform_config com confidence + explanation.


Casos cobertos



CasoSugestão
Mesmo tipo + length compatíveldirect
String origem > length destinotruncate com length
Date → String length 10date_format format=date (YYYY-MM-DD)
Date → String length 19+date_format format=iso (ISO 8601 completo)
Date → String length 8date_format format=date + flagged "runtime sem YYYYMMDD nativo"
Boolean → String com enum 2 valoresvalue_map com map_true/map_false casando os enums
Boolean → String sem enumvalue_map com map_true=S, map_false=N (default BR)
String → Booleanvalue_map com map_S=true, map_N=false, map_1=true, ...
Decimal scale > scale destinodirect + flagged (runtime sem round nativo)
Date ↔ Boolean / Binary ↔ textodirect + flagged incompatible


Runtime contract



Os configs propostos seguem o formato do apply-mapping.ts no runtime:
  • truncatetransform_config.length (NÃO maxLength)
  • date_formattransform_config.format = "iso" | "date" | "epoch_ms"
  • value_map → keys com prefix map_<sourceValue>, ex: { map_S: "true" }
  • multiplytransform_config.value como factor (sem round nativo)


Regression guards no teste impedem propostas com formato fora desse contrato.

Tickets



  • #207.2 implementação (PR #48).
  • #52 fix runtime contract após Codex review.

Histórico de versões

  • 1.0.0

    Botão "Sugerir Regras de Conversão" separado do "Sugerir IA". Helper proposeConversionRule propõe transform + transform_config baseado em type/length/precision/scale dos catálogos source+destination. NÃO altera mapeamento — só sugere a transformação. Endpoint /api/edi-hub/suggest-conversion-rules + ConversionRulesDialog UI. PR #48.

    5/17/2026 · new

  • 1.0.1

    Fix runtime contract: configs propostos não casavam com apply-mapping.ts. Corrigido truncate (maxLength→length), date_format (YYYY-MM-DD→date|iso|epoch_ms), value_map (keys com prefix map_<sourceValue>), multiply (round removido, runtime sem suporte nativo). Adicionado regression guards na suite de testes. Codex review pegou. PR #52.

    5/17/2026 · updated