O OmniXML é uma aplicação web para leitura, conferência e auditoria de documentos fiscais eletrônicos, com foco atual em NF-e (modelo 55), NFC-e (modelo 65), eventos de cancelamento, inutilizações e diagnóstico de fechamento.
🌐 Produção: https://omnixml.onrender.com
Na arquitetura web atual, os XMLs são processados localmente no navegador do usuário. O backend entrega a aplicação, mas não recebe os arquivos fiscais selecionados no fluxo normal de auditoria.
O projeto já ultrapassou a fase inicial de refatoração e possui uma arquitetura web browser-local em produção, com testes automatizados, documentação de requisitos, hardening de segurança e fluxo de auditoria fiscal ativo.
- seleção de XMLs individuais ou de uma pasta inteira;
- processamento local dos XMLs no navegador;
- leitura de NF-e modelo 55 e NFC-e modelo 65;
- identificação da empresa auditada por CNPJ dos participantes;
- classificação de operações em Entrada, Saída ou Não classificada;
- cancelamentos relacionados pela chave da NF-e/NFC-e;
- inutilizações homologadas (
cStat = 102); - deduplicação por chave de acesso;
- validação estrutural e de autorização do documento;
- conferência de CFOP, CST/CSOSN, série, produtos e faturamento;
- diagnóstico de sequência fiscal somente das saídas;
- conciliação de lacunas numéricas com inutilizações homologadas;
- área de arquivos com erro com chave, número, valor e motivo quando disponíveis;
- exportação dos dados consolidados;
- healthcheck de produção;
- Content-Security-Policy e demais cabeçalhos HTTP de segurança;
- proteção adicional contra conteúdo hostil proveniente de XML/SPED;
- limites preventivos para cargas excessivas;
- auditoria de dependências Python no CI;
- Dependabot para Python e GitHub Actions.
Arquivos selecionados
↓
Leitura local no navegador
↓
Parsing e identificação do XML
↓
Validação estrutural/autorização
↓
Extração dos dados fiscais
↓
Identificação do CNPJ auditado
↓
Classificação Entrada / Saída
↓
Cancelamentos e inutilizações
↓
Consolidações e regras de auditoria
↓
Dashboard + Diagnóstico do fechamento
A classificação principal é determinada pelos participantes do XML:
- Saída: a empresa auditada é o emitente;
- Entrada: a empresa auditada é o destinatário;
- Não classificada: o documento não pode ser relacionado com segurança à empresa identificada.
NF-e de entrada não participa da sequência de numeração das notas emitidas pela empresa.
A conferência de sequência considera somente documentos de Saída, agrupados por modelo + série.
Dentro do intervalo entre o primeiro e o último número encontrado na pasta:
- uma nota emitida ocupa sua numeração, mesmo se posteriormente cancelada;
- uma inutilização homologada justifica um número sem nota;
- um número sem nota e sem inutilização homologada permanece como A conferir.
A ausência de um evento ou inutilização nos arquivos selecionados não prova que ele não exista na SEFAZ; indica apenas que ele não foi localizado no conjunto analisado.
O OmniXML trata documentos fiscais como dados sensíveis e adota processamento browser-local como princípio arquitetural da versão web atual.
Controles implementados incluem:
- XMLs não são enviados ao backend durante a auditoria normal;
- CSP e cabeçalhos contra framing, MIME sniffing e exposição desnecessária de referência/origem;
- tratamento de conteúdo vindo de XML como entrada não confiável;
- camada de escape antes da renderização de dados dinâmicos críticos;
- limite de até 50.000 arquivos por seleção;
- limite de 20 MB por XML;
- limite de 1,5 GB por seleção;
pip-auditno GitHub Actions;- Dependabot para dependências Python e GitHub Actions.
A remoção progressiva de renderizações legadas com innerHTML e de unsafe-inline da CSP permanece no roadmap de segurança.
A documentação do projeto é mantida junto ao código:
- Manual Operacional
- Documento de Engenharia
- ERS — Especificação de Requisitos de Software
- Matriz de Rastreabilidade da ERS
Política de engenharia do projeto:
mudança funcional = código + teste + documentação
Crie o ambiente virtual:
python -m venv .venvNo Windows:
.venv\Scripts\activate
pip install -r requirements-dev.txtPara executar a aplicação web equivalente ao fluxo atual de produção:
python web_app_browser.pyEm produção o serviço é iniciado com:
gunicorn web_app_browser:appExecute localmente:
pytest -qO GitHub Actions executa os testes automaticamente em Pull Requests para main e nos pushes configurados. O pipeline também executa auditoria das dependências de produção com pip-audit.
Nunca faça commit de:
- XMLs fiscais de clientes;
- arquivos SPED/EFD reais;
- certificados digitais;
- senhas, tokens ou credenciais;
- bases exportadas contendo dados fiscais reais.
O .gitignore bloqueia extensões e diretórios comuns, mas sempre revise git status antes de publicar alterações.
As prioridades técnicas e fiscais atuais incluem:
- concluir a auditoria XSS e reduzir/remover
unsafe-inlineda CSP; - validação XSD oficial da SEFAZ por modelo e versão;
- validação avançada de chave, protocolo e eventos;
- reconciliação fiscal XML × SPED por chave;
- motor de regras tributárias contextual e versionado;
- filtros avançados por período, modelo, série e status;
- exportação Excel profissional em múltiplas abas;
- Web Workers para grandes volumes;
- redução de dependências externas/CDNs e evolução para modo offline/PWA.
O OmniXML é uma ferramenta de apoio à auditoria fiscal. O sistema diferencia erro, inconsistência, alerta e informação sempre que possível.
Uma heurística ou combinação tributária atípica não deve ser interpretada automaticamente como infração fiscal. A conclusão final deve considerar o XML original, eventos oficiais, escrituração e análise profissional aplicável.