Skip to content

Fundação do gerador TCL/XSL/XSLT: fix MQSeries + primeiro experimento RAG+Ollama + catálogo de exemplos Neogrid #438

Description

@elson-vinicius-lopes

Contexto

O dono forneceu um corpus novo: 19 mapeadores Sysmiddle reais (NF-e/CT-e/MDF-e/NFS-e, clientes CNHI/IVECCO/MARELLI/COMAU/ECOMEX) + corpus de referência real Neogrid→SEFAZ (159 pares TCL/XSL de produção, por DocType/Versão). Objetivo: gerar TCL/XSL/XSLT reais a partir dos mapeadores Sysmiddle via o loop RAG→gerar→validar→corrigir já existente (ai/XslSynth), usando o corpus Neogrid como referência/oráculo.

Entregue nesta sessão (3 PRs, todos mergeados em develop)

1. Fix do bug de parsing MQSeries (PR #434)

13 dos 19 mapeadores Sysmiddle tinham TotalFields: 0 no aprendizado de layout — bug duplo: (a) split de linha ingênuo (\r\n) num stream contínuo de largura fixa sem terminador, tratando o arquivo inteiro como 1 linha; (b) detecção de padrão por prefixo textual repetido, que MQSeries não tem (contador sequencial único por linha). Corrigido nos dois pontos, validado contra 4 clientes reais (0 → 8-10 campos aprendidos cada). 982/982 testes passando.

2. Primeiro experimento real do loop RAG→XSLT (PR #435)

Caso NFe006c_InutNFe (Inutilização, cenário mais simples do domínio fiscal): rodado de ponta a ponta contra Ollama fine-tuned real (172.25.32.5:11434, modelo layoutparser-sysmiddle-dsl:1.5b). 10 de 11 campos saíram byte-a-byte idênticos ao XSLT de produção real. 1 campo (xJust) divergiu por uma regra de negócio não inferível do TCL isolado (prefixo + truncamento). Faltou a casca do documento (xsl:template/namespace raiz) — próximo passo natural.

Persistência validada de ponta a ponta contra o IdentityDatabase real (não simulada): release 1d612a3c-8b30-4fcb-9fdf-dad1b085608b, confirmado por releitura via caminho diferente do de escrita. Marcado como experimento via CorrelationId (não via ArtifactSource novo — decisão de arquitetura sobre estender esse enum fica pendente para @lp-architect).

3. Catálogo de exemplos de referência Neogrid (PR #437)

Novo endpoint GET /api/reference-examples (+ /{id} pra conteúdo) — expõe os exemplos reais Neogrid (TCL+XSL) separados do domínio de governança real (MappingDraft/MappingRelease), pra não confundir referência com release de cliente. Path do corpus configurável via ReferenceExamples:BasePath (vazio por padrão, degrada gracioso).

Pendências conhecidas (não resolvidas nesta sessão, registradas para não perder)

  • Decisão de arquitetura: estender MappingReleaseArtifactSource com um valor Experimental (hoje contornado via CorrelationId) — @lp-architect.
  • Corrigir a divergência do campo xJust (regra de negócio de prefixo+truncamento) e a casca do documento (xsl:template/namespace) no gerador — @lp-parser-llm.
  • Expandir o experimento pra CTe/MDFe/NFSe, e só depois pros 19 mapeadores Sysmiddle reais (agora desbloqueados pelo fix de MQSeries).
  • RAG/XSD locais (appsettings.Development.json) apontam pro corpus desta sessão (.claude/temp/servidor/layoutparser/Examples) — path é local, não existe em CI/produção; decidir onde esse corpus deve viver permanentemente.

Evidência

PRs #434, #435, #437 — todos mergeados em develop, CI verde.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions