Skip to content

DoutorCil/nfe-analytics

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NFe-Analytics

Sistema robusto e escalável para importação, armazenamento, gerenciamento e análise de Notas Fiscais Eletrônicas (NFe) em formato XML.

🎯 Objetivo

Automatizar a extração de informações fiscais e comerciais de arquivos XML de NFe, permitindo a geração de relatórios analíticos customizáveis que auxiliem na tomada de decisões estratégicas, conformidade fiscal e gestão de compras e vendas.

✨ Diferenciais

Arquitetura Híbrida Preparada para o Futuro

O NFe-Analytics foi projetado considerando a evolução constante do padrão NFe, regulamentado pelo Manual de Orientação ao Contribuinte (MOC). A arquitetura híbrida combina:

  • Dados Estruturados: Campos essenciais em colunas relacionais indexadas para máxima performance
  • Dados Flexíveis (JSONB): Estrutura completa do XML armazenada em JSON para adaptabilidade total

Principais Benefícios

Resiliência a Mudanças: Novos campos do MOC são automaticamente capturados sem necessidade de migração de banco de dados
Performance Otimizada: Consultas rápidas em campos estruturados para relatórios frequentes
Manutenção Reduzida: 0-4 horas de trabalho para adicionar novos campos vs. dias na abordagem tradicional
Sem Perda de Dados: Toda a estrutura do XML é preservada e consultável
Código Simplificado: Parser 80% mais simples e robusto usando xmltodict

📊 Funcionalidades

Importação de NFe

  • Upload de múltiplos arquivos XML simultaneamente
  • Processamento assíncrono para não bloquear a interface
  • Validação e armazenamento em banco de dados híbrido

Relatórios Analíticos

  • Lista completa de produtos com todos os detalhes
  • Agrupamento por NCM (Nomenclatura Comum do Mercosul)
  • Agrupamento por CEST (Código Especificador da Substituição Tributária)
  • Agrupamento por alíquota de ICMS com valores totais
  • Identificação de produtos com IPI e respectivos valores
  • Consultas customizadas em qualquer campo do XML via JSONB

🏗️ Arquitetura

┌─────────────┐
│   Frontend  │  React/Vue.js (SPA)
│   (Client)  │
└──────┬──────┘
       │
       ▼
┌─────────────┐
│   Backend   │  Python/Django (API RESTful)
│     API     │
└──────┬──────┘
       │
       ├────────► RabbitMQ (Fila de Tarefas)
       │                │
       │                ▼
       │         ┌─────────────┐
       │         │   Worker    │  Celery (Processamento Assíncrono)
       │         │   (Parser)  │
       │         └──────┬──────┘
       │                │
       ▼                ▼
┌──────────────────────────┐
│      PostgreSQL          │
│  (Relacional + JSONB)    │
└──────────────────────────┘

🗄️ Modelagem de Dados

Tabela: notas_fiscais

  • Campos estruturados: chave_acesso, número, série, data, valores, emitente, destinatário
  • Campo flexível: dados_completos (JSONB) - estrutura completa da NFe

Tabela: produtos_nfe

  • Campos estruturados: código, descrição, NCM, CFOP, quantidade, valores
  • Campos flexíveis:
    • impostos_completos (JSONB) - ICMS, IPI, PIS, COFINS, etc.
    • dados_adicionais (JSONB) - outros dados do produto

🚀 Tecnologias

Componente Tecnologia
Frontend React.js ou Vue.js
Backend Python com Django ou Flask
Banco de Dados PostgreSQL (com suporte a JSONB)
Fila de Tarefas RabbitMQ ou Redis
Worker Assíncrono Celery
Parsing de XML xmltodict
Containerização Docker e Docker Compose

📚 Documentação

💡 Exemplos

Parser Flexível

Veja um exemplo funcional do parser em examples/parser_example.py.

O parser converte automaticamente o XML para JSON e extrai dados estruturados:

import xmltodict

# Converte XML inteiro para dicionário
nfe_dict = xmltodict.parse(xml_content)

# Extrai campos estruturados
nota_fiscal = {
    'numero': safe_get(inf_nfe, 'ide.nNF'),
    'dados_completos': json.dumps(inf_nfe)  # Salva tudo em JSONB
}

Consulta Flexível (SQL + JSONB)

Consultar impostos que não estão em colunas estruturadas:

SELECT 
    descricao,
    impostos_completos -> 'PIS' -> 'PISAliq' ->> 'pPIS' as aliquota_pis,
    impostos_completos -> 'PIS' -> 'PISAliq' ->> 'vPIS' as valor_pis
FROM produtos_nfe
WHERE impostos_completos -> 'PIS' -> 'PISAliq' ->> 'CST' = '01';

🔧 Instalação e Configuração

Pré-requisitos

  • Docker e Docker Compose
  • Git

Passos

  1. Clone o repositório:
git clone <url_do_repositorio> nfe-analytics
cd nfe-analytics
  1. Configure as variáveis de ambiente:
cp .env.example .env
# Edite o arquivo .env com suas configurações
  1. Inicie os containers:
docker-compose up --build -d
  1. Execute as migrações do banco de dados:
docker-compose exec backend python manage.py migrate
  1. Acesse a aplicação:

📈 Estimativa de Desenvolvimento

Fase Descrição Tempo
Setup Inicial Configuração do ambiente e estrutura 1 semana
Modelagem e BD Implementação dos modelos com JSONB 1 semana
Backend - Importação Endpoint de upload e worker com parser 2 semanas
Backend - API Endpoints para relatórios 2 semanas
Frontend - Base Estrutura da SPA, login, layout 2 semanas
Frontend - Upload Funcionalidade de upload e listagem 1,5 semanas
Frontend - Relatórios Telas de visualização de relatórios 2 semanas
Testes Testes de integração e refinamento 2 semanas
Deploy Preparação e deploy em produção 1 semana
Total ~3,5 meses

🔐 Segurança

  • Autenticação via JSON Web Tokens (JWT)
  • Proteção contra SQL Injection, XSS, CSRF
  • Senhas criptografadas com bcrypt/Argon2
  • Comunicação via HTTPS em produção
  • Logs de auditoria para ações críticas

🛣️ Roadmap

  • Implementação do backend (API + Worker)
  • Desenvolvimento do frontend (SPA)
  • Dashboards interativos com gráficos
  • Integração com SEFAZ para validação de chaves
  • Sistema de alertas e notificações
  • Exportação de relatórios para PDF/Excel
  • Gerenciamento avançado de usuários e permissões

📄 Licença

Este projeto é um protótipo de engenharia de software desenvolvido para fins educacionais e de planejamento.

👥 Autores

Manus AI - Especificação e Arquitetura do Sistema


Versão: 2.0
Data: Novembro de 2025

About

Sistema robusto e escalável para análise de Notas Fiscais Eletrônicas (NFe) com arquitetura híbrida preparada para evolução do padrão MOC

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors