feat: contrato fieldMappings definitivo em execute-candidates (issue #141) - #207
Merged
elson-vinicius-lopes merged 6 commits intoAug 28, 2026
Merged
Conversation
…sysmiddle) Compõe fieldMappings por candidato sysmiddle bem-sucedido, reaproveitando o mapper decifrado já produzido por LowCodeAutoTransformationService.RunAsync (LowCodeCandidateResult.DecryptedMapperContent, sem 2ª consulta SQL) e um parse posicional compartilhado uma vez por request (ILayoutParserService). Falha isolada na composição nunca derruba o candidato (TryComposeFieldMappings try/catch -> null + warning). tcl-xsl mantém fieldMappings sempre null (mesma decisão categórica de sectionMappings na #138). Design: docs/architecture/design-contrato-fieldmappings-execute-candidates-issue-141.md
Secao bilingue com exemplo completo (CNPJ do emitente), semantica de null/[]/preenchido, convencao de XPath namespaced, distincao explicita entre fieldMappings (campo) e sectionMappings/segmentMappings (linha/secao, #138). Ressalva de validacao comportamental pendente (LowCodeRunner nao roda em WSL/Linux, so validacao estrutural sintetica) destacada em bloco de alerta logo no topo da secao, nao enterrada no meio do texto.
…didates (issue #141) Adiciona 2 casos exigidos pelo pedido original que a implementação ainda não cobria: mapper sem nenhum LinkMappingItem/Rule resolve fieldMappings==[] (não null), e TransformedXml é byte-idêntico com/sem extração de fieldMappings habilitada. Achado durante o gate: Compose() não filtra por resolução de origem — um LinkMappingItem cujo InputLayoutGuid não existe no parse ainda gera entrada BestEffort; [] só ocorre quando o mapper não tem nenhum link/rule. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
… com resultado de performance (§9)
…ldMappings (issue #141)
…andidates-141 Reconcilia PR #207 (issue #141) com develop, que já absorveu as PRs irmãs #200 (issue #86), #201 (issue #139), #203 (issue #138) e #205 (issue #140) da mesma cadeia de trabalho. Conflitos eram todos overlap real entre PRs desta cadeia tocando os mesmos arquivos, não clash semântico: - LowCodeCandidateResult.cs: DecryptedMapperContent (#141) e MapperDecryptedContent (#138) eram o mesmo dado (mapper.DecryptedContent) sob nomes diferentes — unificado em DecryptedMapperContent, único campo, usado tanto por SysmiddleSectionMappingResolver (#138) quanto por TryComposeFieldMappings (#141). - LowCodeAutoTransformationService.cs: mesma duplicação de atribuição nos dois pontos de criação de LowCodeCandidateResult. - TransformationExecutionController.cs: TransformationCandidate agora preenche FieldMappings (#141) E SectionMappings/XmlNamespaces (#138) no mesmo objeto — funcionalidades complementares, ambas preservadas. - README.md: seções de documentação de fieldMappings (#141) e sectionMappings (#138) são independentes, mantidas as duas em sequência. - security-code-scan-baseline.json: entradas de linha para LowCodeAutoTransformationService.cs reconciliadas para 371/415 (linhas atuais pós-merge) — mesmos 2 achados de sempre (File.WriteAllTextAsync em inPath/metaPath), não vulnerabilidades novas. Nota adicionada ao _readme documentando o ajuste. dotnet build: 0 erros. dotnet test: 413/417 passando — as 4 falhas (SafePathResolverTests, LowCodeRunnerArgsTests) são pré-existentes, específicas de ambiente (assumem paths Windows, falham sob WSL/Linux), não relacionadas aos arquivos deste merge. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Dependency Review✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.Scanned FilesNone |
elson-vinicius-lopes
deleted the
feat/fieldmappings-execute-candidates-141
branch
August 28, 2026 12:56
This was referenced Aug 28, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Resumo
fieldMappingspor candidato no endpointexecute-candidates, integrado inline reaproveitandoParsingResult/MapperVojá computados no pathway sysmiddle — sem 2ª consulta SQL.tcl-xslsemprenullneste pathway (fora de escopo).LineInfoherdada de feature: catálogo TargetLayoutGuid→XPath e resolução de granularidade N:1 / grupos repetidos no parser de runtime #140: quando a origem TXT está vazia/degradada, o mapeamento cai para best-effort de forma consistente.[]/ direct / transformed / concatenated / static / N:1 / 1:N / repetição / XML byte-idêntico.A validação comportamental de 20 execuções reais contra o LowCodeRunner ainda está pendente
(mesmo bloqueio ambiental de #140 — ambiente Windows necessário). O front-end deve tratar
authoritativecomo "correto pelas regras do mapper", não como "validado contra execução real",até essa validação ser feita.
Referências
docs/architecture/design-contrato-fieldmappings-execute-candidates-issue-141.md.claude/agent-memory/lp-qa/issue141-fieldmappings-execute-candidates-qa-gate.mdTest plan
dotnet build— 0 errosdotnet test— 467 passando, 4 falhas pré-existentes (dependentes de path Windows, ambiente Linux/WSL)Co-Authored-By: Claude Sonnet 5 noreply@anthropic.com