Skip to content
@LayoutParser

LayoutParser

LayoutParser

Engenharia de mapeamentos para integrações documentais

Do documento legado ao formato de destino, com parsing posicional, transformação, validação, rastreabilidade e evolução assistida por IA.

C# TypeScript React Node.js GitHub Actions

Visão da plataforma · Framework · Transformações · Arquitetura · Serviço de mapeamento · Repositórios · Roadmap


Visão da plataforma

O LayoutParser é uma plataforma de engenharia de integrações para interpretar, validar, transformar e explicar documentos estruturados e posicionais. Seu núcleo conecta layouts, regras de negócio, motores de transformação e validadores em um pipeline versionável.

O cenário já atendido parte de documentos em TXT posicional, descritos por layouts XML. A plataforma identifica linhas, campos, ocorrências, posições e inconsistências; executa candidatos de transformação; apresenta o resultado em uma aplicação web; e mantém rastreabilidade ponta a ponta por CorrelationId.

Mais do que um conversor isolado, a proposta é funcionar como um framework para novos mapeamentos, no qual cada integração pode ser desenvolvida e homologada como uma unidade:

  • contrato de origem e destino;
  • modelo estrutural canônico;
  • regras determinísticas ou assistidas por IA;
  • casos de teste e artefatos sanitizados;
  • validação estrutural, fiscal e de negócio;
  • empacotamento, versionamento, implantação e observabilidade.

Transparência de maturidade: este README diferencia capacidades disponíveis, capacidades em evolução e itens de roadmap. Uma direção arquitetural não é apresentada como funcionalidade já entregue.

English overview

LayoutParser is a document-mapping engineering platform for parsing, validating, transforming and explaining positional and structured integration documents. Its current workflow handles positional TXT inputs described by XML layouts, produces transformation candidates and exposes the results through a secure web application. The architecture is being expanded into a reusable mapping framework for TXT→XML, XML→XML, XML→TXT, TXT→JSON and additional adapters. Capabilities marked as roadmap below are not yet production features.


LayoutParser Mapping Framework

O framework organiza uma transformação em seis responsabilidades desacopladas: adaptar, interpretar, mapear, executar, validar e operar. Isso permite adicionar um novo formato sem reescrever autenticação, catálogo, observabilidade ou experiência de análise.

Tecnologias por camada

Camada do framework Tecnologias que a implementam
Experiência e ingestão
Interface, upload e fronteira web
React TypeScript Vite Node.js Fastify
React · TypeScript · Vite · Node.js · Fastify
Modelo e mapeamento
Parser, contratos e catálogo
C# .NET XML SQL Server Redis
C# · .NET 10 · XML/XSD · SQL Server · Redis
Execução e inteligência
Motores determinísticos e IA local
.NET Framework XSLT Ollama
.NET Framework · TCL/XSL/XSLT · XslSynth · Ollama
Assurance e operação
Testes, entrega e observabilidade
GitHub Actions Playwright Cypress Docker PowerShell
GitHub Actions · Playwright · Cypress · Docker · PowerShell
flowchart LR
    subgraph Sources["1 · Fontes / Source adapters"]
        TXT["🟢 TXT posicional"]
        XML["🟡 XML"]
        JSON["🔵 JSON"]
    end

    subgraph Canonical["2 · Modelo documental canônico"]
        INGEST["Ingestão segura<br/>encoding · tamanho · tipo"]
        PARSE["Parser estrutural<br/>linhas · campos · posições · ocorrências"]
        MODEL["Document Model<br/>identidade · hierarquia · cardinalidade"]
    end

    subgraph Mapping["3 · Definição e catálogo de mapeamentos"]
        REGISTRY["Mapping Registry<br/>layout · mapper · versão · status"]
        RULES["Mapping Definition<br/>origens · destinos · regras · funções"]
        TRACE["Trace Model<br/>campo ↔ nó · diagnóstico · confiança"]
    end

    subgraph Engines["4 · Motores de execução"]
        LOWCODE["🟢 Sysmiddle / Low-code"]
        XSL["🟢 TCL · XSL · XSLT"]
        AI["🟡 XslSynth + Ollama<br/>RAG · few-shot · auto-correção"]
        FUTURE["🔵 Adaptadores futuros<br/>XML↔XML · XML→TXT · TXT→JSON"]
    end

    subgraph Assurance["5 · Assurance"]
        SCHEMA["Schema validation<br/>XML · XSD · contratos"]
        DIFF["Diff canônico<br/>ground truth · regressão"]
        BUSINESS["Regras de negócio<br/>aceitação externa"]
    end

    subgraph Targets["6 · Destinos / Target adapters"]
        OUTXML["🟢 XML"]
        OUTTXT["🔵 TXT"]
        OUTJSON["🔵 JSON"]
    end

    OPS["Operação transversal<br/>OIDC · autorização · cache · auditoria<br/>CorrelationId · métricas · CI/CD"]

    TXT --> INGEST
    XML --> INGEST
    JSON -. roadmap .-> INGEST
    INGEST --> PARSE --> MODEL
    MODEL --> RULES
    REGISTRY --> RULES
    RULES --> TRACE
    RULES --> LOWCODE
    RULES --> XSL
    RULES --> AI
    RULES -. expansão .-> FUTURE
    LOWCODE --> SCHEMA
    XSL --> SCHEMA
    AI --> SCHEMA
    FUTURE -. roadmap .-> SCHEMA
    SCHEMA --> DIFF --> BUSINESS
    BUSINESS --> OUTXML
    BUSINESS -. roadmap .-> OUTTXT
    BUSINESS -. roadmap .-> OUTJSON
    OPS -. protege e observa .-> INGEST
    OPS -. protege e observa .-> REGISTRY
    OPS -. protege e observa .-> BUSINESS
Loading

Princípios do framework

Princípio Aplicação no LayoutParser
Contract-first Tipos, OpenAPI e exemplos de payload antecedem a integração de UI.
Determinístico primeiro Regras explícitas e reproduzíveis são priorizadas; IA é uma estratégia adicional.
Modelo canônico Formatos de entrada e saída são adaptadores em torno de identidades estruturais estáveis.
Sem inferência silenciosa Posição, cardinalidade e origem de regra não são “adivinhadas” no navegador.
Fail closed Ambiguidade posicional ou contratual bloqueia edição/automação potencialmente destrutiva.
Explainability by design Diagnósticos por pathway e rastreabilidade campo→nó acompanham a transformação.
Human in the loop Candidatos de IA sem ground truth exigem revisão humana antes de promoção.
Privacidade operacional Conteúdo documental não deve aparecer em logs, issues ou artefatos públicos.

Matriz de transformações

Legenda: 🟢 disponível · 🟡 em evolução/validação · 🔵 roadmap · ⚪ discovery

Origem Destino Estado Estratégia
TXT posicional Modelo estrutural navegável 🟢 Parser posicional orientado por layout XML.
TXT posicional XML 🟢 Sysmiddle/Low-code e pipeline TCL/XSL/XSLT.
TXT posicional XML sugerido por IA 🟡 XslSynth + Ollama local, validação e revisão humana.
Campo TXT Nó XML correspondente 🟡 Contrato aditivo de rastreabilidade por candidato.
XML XML 🔵 Novo adapter + regras XSLT/canônicas reutilizando validação e operação.
XML TXT posicional Reconstrução reversa e preservação rígida de encoding/posições. Ver investigação #151.
TXT JSON 🔵 Serialização a partir do modelo canônico, com schema e regras de destino.
XML JSON 🔵 Adapter de destino sobre o mesmo Mapping Definition.
JSON XML / TXT 🔵 Expansão futura do catálogo de adapters.

As rotas de roadmap reutilizarão o mesmo núcleo de identidade, catálogo, validação, rastreabilidade e observabilidade. Isso evita criar um conversor independente para cada par de formatos.


Arquitetura do ecossistema

flowchart TB
    USER["👤 Analista de integração"]

    subgraph Web["LayoutParserReact · experiência e fronteira web"]
        SPA["React 19 + TypeScript<br/>upload · árvore · edição posicional · XML"]
        BFF["Node.js 24 + Fastify 5<br/>Entra OIDC · sessão · rate limit · proxy"]
    end

    subgraph Core["LayoutParserApi · hub de domínio"]
        API["ASP.NET Core · .NET 10<br/>contratos · orquestração · autorização"]
        PARSER["Parsing Engine<br/>layout · linhas · campos · ocorrências"]
        CANDIDATES["Transformation Orchestrator<br/>candidatos · diagnóstico · tickets"]
        XSLSYNTH["XslSynth.Core / Contracts<br/>RAG · geração · validação · diff"]
        MCP["LayoutParser MCP Server<br/>tools de parse e catálogo para agentes"]
    end

    subgraph Runtime["Motores e compatibilidade"]
        RUNNER["LayoutParserLowCodeRunner<br/>runtime Sysmiddle isolado"]
        DECRYPT["LayoutParserDecrypt<br/>fronteira criptográfica externa"]
        LIB["LayoutParserLib<br/>cripto canônica e logging legado"]
        OLLAMA["Ollama local<br/>modelos executados on-premise"]
    end

    subgraph Data["Dados e operação"]
        SQL[("SQL Server<br/>catálogo de layouts e mappers")]
        REDIS[("Redis<br/>cache e catálogo materializado")]
        OBS["Serilog + Elastic<br/>logs estruturados e correlação"]
    end

    subgraph Quality["Quality & delivery"]
        GH["GitHub Actions<br/>build · test · SAST · dependency review"]
        E2E["Playwright + Cypress<br/>desktop · mobile · aceitação externa"]
        IIS["Windows Server + IIS/ARR<br/>development → production"]
    end

    USER -->|HTTPS + Microsoft login| SPA
    SPA -->|same-origin /api| BFF
    BFF -->|identidade confiável + CorrelationId| API
    API --> PARSER
    API --> CANDIDATES
    MCP --> API
    PARSER --> SQL
    PARSER --> REDIS
    API --> DECRYPT
    DECRYPT -. fontes canônicas .-> LIB
    CANDIDATES --> RUNNER
    CANDIDATES --> XSLSYNTH
    XSLSYNTH --> OLLAMA
    API --> OBS
    GH --> IIS
    E2E --> BFF
Loading

Fluxo de uma transformação

sequenceDiagram
    autonumber
    actor Analyst as Analista
    participant Web as React + BFF
    participant API as LayoutParserApi
    participant Catalog as SQL / Redis
    participant Engine as Low-code / TCL-XSL / IA
    participant QA as Validação

    Analyst->>Web: Envia documento e seleciona layout
    Web->>API: Upload autenticado + CorrelationId
    API->>Catalog: Resolve layout, mapper e versão
    Catalog-->>API: Definições estruturais
    API->>API: Parse de linhas, campos e ocorrências
    API-->>Web: Modelo navegável + diagnósticos
    Analyst->>Web: Solicita transformação
    Web->>API: execute-candidates
    API->>Engine: Executa pathways aplicáveis
    Engine-->>API: XML candidato + evidências
    API->>QA: XSD + diff + regras de negócio
    QA-->>API: Resultado e confiança
    API-->>Web: Candidatos + diagnóstico por pathway
    Web-->>Analyst: Comparar, revisar, copiar ou baixar
Loading

Desenvolvimento de novos mapeamentos

O LayoutParser pode ser evoluído como um serviço de engenharia de mapeamento sob demanda. Cada novo fluxo — por exemplo, TXT→XML de um parceiro, XML→XML entre schemas ou TXT→JSON — é tratado como produto versionado, não como script avulso.

flowchart LR
    D1["1 · Discovery<br/>origem · destino · regras"] -->
    D2["2 · Contrato<br/>schemas · encoding · cardinalidade"] -->
    D3["3 · Mapping Design<br/>modelo canônico · regras · funções"] -->
    D4["4 · Implementação<br/>adapter · mapper · transformação"] -->
    D5["5 · Assurance<br/>fixtures · XSD · diff · negócio"] -->
    D6["6 · Homologação<br/>cenários reais sanitizados"] -->
    D7["7 · Operação<br/>versão · deploy · métricas · evolução"]
Loading

Insumos necessários

  • descrição dos formatos de origem e destino;
  • layout, XSD, JSON Schema ou especificação equivalente;
  • documentos de exemplo sanitizados;
  • saída esperada ou regras de negócio verificáveis;
  • encoding, terminadores, cardinalidades e convenções de campos vazios;
  • critérios de aceite e ambiente de homologação.

Entregáveis possíveis

  • especificação do contrato e da matriz campo→campo;
  • adapter de origem e/ou destino;
  • mapper determinístico, TCL/XSL/XSLT ou estratégia híbrida;
  • suíte de regressão com fixtures sintéticas/sanitizadas;
  • diagnóstico estruturado e rastreabilidade de transformação;
  • documentação operacional, runbook e estratégia de rollback;
  • pacote de implantação e baseline de observabilidade.

Definition of Done de um mapeamento

  1. O mesmo input e a mesma versão de regra produzem resultado reproduzível.
  2. Encoding, posições, ocorrências e namespaces possuem testes explícitos.
  3. Casos N:1, 1:N, valores estáticos e grupos repetidos estão documentados.
  4. Falhas têm código, mensagem segura e CorrelationId; não há fallback silencioso.
  5. Nenhum conteúdo sensível aparece em logs, commits ou issues públicas.
  6. O resultado passa por schema, regressão e regra de negócio aplicável.
  7. A versão implantada pode ser identificada, observada e revertida.

Para iniciar um discovery público, abra uma issue no repositório responsável contendo apenas metadados e exemplos sanitizados. Documentos reais, segredos, dados fiscais e identidades não devem ser anexados ao GitHub.


Repositórios

Repositório Responsabilidade Tecnologia principal
LayoutParserApi Hub de domínio: parsing, catálogo, cache, transformação, IA, validação, observabilidade e MCP. C# · ASP.NET Core · .NET 10
LayoutParserReact Aplicação web e BFF: upload, navegação estrutural, edição posicional, XML, autenticação e proxy seguro. React 19 · TypeScript · Vite 8 · Node/Fastify
LayoutParserLowCodeRunner Runner isolado para compatibilidade com o runtime low-code/Sysmiddle. C# · .NET Framework 4.8
LayoutParserLib Implementação canônica da criptografia Sysmiddle e utilidades legadas compartilhadas. C# · .NET Framework 4.8.1
LayoutParserDecrypt Processo externo de descriptografia compatível com o stack legado. C# · .NET Framework 4.8.1
LayoutParserCypress Aceitação E2E e medição de candidatos contra ambiente fiscal de destino. JavaScript · Cypress

Stack tecnológico

.NET C# TypeScript React Vite Node.js Fastify Microsoft Entra ID Microsoft SQL Server Redis Ollama Docker IIS PowerShell GitHub Actions Vitest Playwright Cypress


Segurança, qualidade e operação

O ecossistema adota controles em camadas:

  • BFF same-origin com Microsoft Entra OIDC, sessão protegida e proxy autenticado;
  • limites de upload, rate limiting, headers defensivos e sanitização de erros;
  • identidade e X-Correlation-ID propagados entre navegador, BFF, API e processos externos;
  • logs estruturados sem conteúdo TXT/XML ou credenciais;
  • lint, tipos, testes, cobertura e builds de desenvolvimento/produção;
  • Playwright desktop/mobile e Cypress de aceitação externa;
  • CodeQL, análise estática, secret scanning, auditoria de dependências e Dependency Review;
  • promoção controlada feature/fix → develop → development → main/master → production;
  • releases versionadas, smoke tests e possibilidade de rollback.

Resultados gerados por IA são tratados como candidatos, não como verdade automática. Quando não há ground truth, a interface deve sinalizar menor confiança e exigir revisão humana.


Marcos de evolução

O ecossistema já passou de uma prova isolada de parsing para uma plataforma web integrada. Entre os marcos recentes estão:

  • fronteira web com BFF, Microsoft Entra OIDC e identidade propagada até a API;
  • autorização e auditoria dos endpoints privilegiados da API (PR #43);
  • HTTPS e isolamento de rede na implantação (PR #54);
  • execução de múltiplos candidatos e fallback de IA com Ollama (PRs #52 e #57);
  • extração do núcleo compartilhado XslSynth.Core (PR #61);
  • editor transacional de TXT posicional, com validação de comprimento e regressão desktop/mobile (Epic #87);
  • árvore XML navegável e polling resiliente dos candidatos gerados em segundo plano (Issues #127 e #140);
  • diagnóstico estruturado por pathway e correlação ponta a ponta em finalização na API (PR #200).

Roadmap

flowchart LR
    NOW["Agora<br/>TXT posicional → XML<br/>parse · edição · múltiplos candidatos"] -->
    TRACE["Rastreabilidade<br/>campo TXT ↔ nó XML<br/>N:1 · 1:N · repetição"] -->
    ADAPTERS["Adapter SDK<br/>XML→XML · XML→TXT · TXT→JSON"] -->
    GOVERN["Mapping Registry<br/>versão · promoção · rollback · métricas"] -->
    SCALE["Escala<br/>catálogo reutilizável · templates · novos domínios"]
Loading

Prioridades arquiteturais:

  1. concluir o contrato de rastreabilidade por campo entre TXT e XML;
  2. estabilizar o modelo canônico e o SDK de adapters;
  3. implementar XML→XML como próximo fluxo estruturado;
  4. validar reconstrução XML→TXT sem perda posicional;
  5. implementar TXT→JSON com JSON Schema e validação determinística;
  6. evoluir governança de mappers, promoção, rollback e métricas;
  7. ampliar o loop de auto-correção XSLT com evidência e revisão humana.

Contribuição e governança

  • Commits seguem Conventional Commits.
  • Mudanças são desenvolvidas em branch e promovidas por PR.
  • O fluxo de promoção passa primeiro pelo ambiente de desenvolvimento.
  • Contratos entre repositórios exigem documentação, teste e handoff.
  • Issues e PRs públicos nunca devem conter documentos reais ou segredos.
  • Cada repositório mantém seus próprios comandos de build, quality gates e regras de agentes.

Licenciamento, uso de componentes de terceiros e condições de oferta devem ser verificados no repositório e no contexto de cada implantação.


LayoutParser — de layouts e regras dispersas para transformações explicáveis, testáveis e operáveis.

Documentação técnica em PT-BR, com visão internacional resumida em inglês.

Popular repositories Loading

  1. LayoutParserApi LayoutParserApi Public

    C#

  2. LayoutParserDecrypt LayoutParserDecrypt Public

    C#

  3. LayoutParserLib LayoutParserLib Public

    C#

  4. LayoutParserReact LayoutParserReact Public

    TypeScript

  5. LayoutParserLowCodeRunner LayoutParserLowCodeRunner Public

    C#

  6. LayoutParserCypress LayoutParserCypress Public

    JavaScript

Repositories

Showing 7 of 7 repositories

People

This organization has no public members. You must be a member to see who’s a part of this organization.

Top languages

Loading…

Most used topics

Loading…