Skip to content

Latest commit

 

History

History
227 lines (178 loc) · 5.94 KB

File metadata and controls

227 lines (178 loc) · 5.94 KB

Especificações Técnicas - ProcessarLoteNFe

Visão Geral da Arquitetura

O ProcessarLoteNFe é um script PowerShell especializado para processamento automatizado de arquivos XML de Nota Fiscal Eletrônica (NF-e). O sistema utiliza tecnologias nativas do .NET Framework através do PowerShell para manipulação eficiente de documentos XML.

Arquitetura do Sistema

Componentes Principais

  1. Validador de Ambiente (Linhas 27-40)

    • Verificação de existência da pasta de origem
    • Validação de permissões de acesso
    • Contagem de arquivos XML disponíveis
  2. Processador XML (Linhas 42-108)

    • Carregamento de documentos XML
    • Gerenciamento de namespaces
    • Extração e substituição de dados
  3. Sistema de Logs (Distribuído)

    • Feedback visual colorido
    • Diferentes níveis de informação
    • Tratamento de erros

Especificações Técnicas Detalhadas

Tecnologias Utilizadas

Componente Versão Propósito
PowerShell 7.5.2+ Ambiente de execução
.NET Framework 6.0+ Bibliotecas XML
System.Xml.XmlDocument Nativo Manipulação XML
Regex Engine Nativo Extração de padrões

Estrutura de Dados

XML de Entrada (NF-e)

<?xml version="1.0" encoding="UTF-8"?>
<nfeProc xmlns="http://www.portalfiscal.inf.br/nfe">
    <NFe>
        <infNFe>
            <det nItem="1">
                <prod>
                    <cProd>001</cProd>
                </prod>
                <infAdProd>Código do produto: 12345</infAdProd>
            </det>
        </infNFe>
    </NFe>
</nfeProc>

XML de Saída (Processado)

<?xml version="1.0" encoding="UTF-8"?>
<nfeProc xmlns="http://www.portalfiscal.inf.br/nfe">
    <NFe>
        <infNFe>
            <det nItem="1">
                <prod>
                    <cProd>12345</cProd>
                </prod>
                <infAdProd>Código do produto: 12345</infAdProd>
            </det>
        </infNFe>
    </NFe>
</nfeProc>

Algoritmo de Processamento

Fluxo Principal

  1. Inicialização

    • Carregamento de configurações
    • Validação do ambiente
    • Preparação de variáveis
  2. Descoberta de Arquivos

    • Busca recursiva por arquivos .xml
    • Filtragem por extensão
    • Contagem de arquivos encontrados
  3. Processamento Individual

    • Carregamento do XML
    • Configuração de namespaces
    • Iteração pelos itens da NF-e
  4. Extração e Substituição

    • Aplicação da regex
    • Validação de padrões
    • Substituição de valores
  5. Persistência

    • Salvamento do arquivo modificado
    • Nomenclatura padronizada
    • Logs de conclusão

Expressão Regular Detalhada

(?:c[oó]d|c[oó]digo|ref|refer[eê]ncia|produto)[\s\w\p{P}]*?(\d+)$

Análise da Regex:

  • (?:...) - Grupo não-capturante
  • c[oó]d|c[oó]digo - Palavras "cod", "cód", "codigo", "código"
  • ref|refer[eê]ncia - Palavras "ref", "referencia", "referência"
  • produto - Palavra "produto"
  • [\s\w\p{P}]*? - Qualquer caractere (não-guloso)
  • (\d+) - Grupo capturante: um ou mais dígitos
  • $ - Fim da string

Performance e Otimizações

Métricas de Performance

  • Tempo de processamento: ~50ms por arquivo (médio)
  • Uso de memória: ~10MB por arquivo processado
  • Escalabilidade: Suporta lotes de 1000+ arquivos

Otimizações Implementadas

  1. Carregamento Lazy: XML carregado apenas quando necessário
  2. Regex Otimizada: Padrão não-guloso para melhor performance
  3. Namespace Manager: Reutilização de instância
  4. Streaming: Processamento item por item

Tratamento de Erros

Tipos de Erro

  1. Erro de Ambiente

    • Pasta não encontrada
    • Permissões insuficientes
    • PowerShell não disponível
  2. Erro de Arquivo

    • XML malformado
    • Namespace inválido
    • Estrutura não esperada
  3. Erro de Processamento

    • Regex sem match
    • Nó XML não encontrado
    • Falha na substituição

Estratégias de Recuperação

  • Fail-Fast: Para erros críticos de ambiente
  • Continue-on-Error: Para erros de arquivo individual
  • Logging Detalhado: Para debugging e auditoria

Segurança

Considerações de Segurança

  1. Validação de Entrada

    • Verificação de extensão de arquivo
    • Validação de caminhos
    • Sanitização de strings
  2. Isolamento

    • Processamento em contexto isolado
    • Não modifica arquivos originais
    • Criação de cópias seguras
  3. Logs Seguros

    • Não expõe dados sensíveis
    • Logs de auditoria
    • Rastreamento de operações

Compatibilidade

Sistemas Operacionais

  • Windows 10/11 (PowerShell 7.0+)
  • macOS 10.15+ (PowerShell Core)
  • Linux (Ubuntu 18.04+, CentOS 7+)

Versões do PowerShell

  • PowerShell 7.0+ (Recomendado)
  • ⚠️ PowerShell 6.0 (Suporte limitado)
  • PowerShell 5.1 (Não suportado)

Limitações Conhecidas

  1. Tamanho de Arquivo

    • Máximo recomendado: 50MB por arquivo
    • Limite prático: 100MB por arquivo
  2. Estrutura XML

    • Suporte apenas a NF-e (modelo 55)
    • Namespace específico obrigatório
  3. Performance

    • Degradação com arquivos muito grandes
    • Limitação de memória em lotes grandes

Roadmap Técnico

Versão 3.0 (Planejada)

  • Suporte a outros modelos de NF
  • Processamento paralelo
  • Interface gráfica
  • API REST

Versão 2.3 (Próxima)

  • Validação de XML Schema
  • Backup automático
  • Configuração via JSON
  • Testes unitários

Métricas e Monitoramento

KPIs do Sistema

  • Taxa de Sucesso: >99%
  • Tempo Médio de Processamento: <100ms/arquivo
  • Taxa de Erro: <1%
  • Throughput: 1000 arquivos/minuto

Logs de Monitoramento

  • Timestamp de início/fim
  • Contagem de arquivos processados
  • Contagem de alterações realizadas
  • Tempo total de execução
  • Erros e exceções

Documentação técnica v2.2.0 - Dezembro 2024