Skip to content

Commit 16fcdee

Browse files
committed
implementação de banco de memoria do projeto
1 parent d11d5e7 commit 16fcdee

File tree

7 files changed

+700
-0
lines changed

7 files changed

+700
-0
lines changed

.cursorrules

+114
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
# Cursor Rules for Parse-EFD-Fiscal
2+
3+
## Padrões de Código
4+
5+
1. **Nomenclatura de Pacotes**
6+
- Utilize nomes significativos que reflitam o domínio do problema
7+
- Exemplo: `Models/Bloco0`, `Controllers/repository`
8+
9+
2. **Estrutura de Arquivos**
10+
- Arquivos modelo devem estar no diretório `Models/`
11+
- Controllers principais em `Controllers/`
12+
- Repositórios em `Controllers/repository/`
13+
- Serviços em `Controllers/service/`
14+
15+
3. **Convenções de Naming**
16+
- Structs e interfaces usam PascalCase: `RegC100`, `Inventario`
17+
- Métodos e funções usam PascalCase: `ProcessarInventario`
18+
- Variáveis locais usam camelCase: `itemNota`, `valorTotal`
19+
- Constantes usam UPPER_SNAKE_CASE: `PLANILHA`, `BLOCO_C`
20+
21+
4. **Tratamento de Erros**
22+
- Utilizar wrapping de erros com contexto: `fmt.Errorf("erro ao processar: %v", err)`
23+
- Logar em pontos estratégicos: `log.Printf("Iniciando processamento em %v", time.Now())`
24+
- Retornar erros explícitos em funções públicas
25+
26+
## Padrões Arquiteturais
27+
28+
1. **Processamento em Fases**
29+
- Operações complexas são divididas em fases (primeira, segunda, terceira)
30+
- Cada fase possui pré-requisitos das fases anteriores
31+
- Exemplo: `// Primeira fase`, `// Segunda fase`, etc. no processamento de inventário
32+
33+
2. **Paralelismo com Workers**
34+
- Utilizar `pkg/worker` para processamento paralelo
35+
- Submeter tarefas independentes: `pool.Submit(func() { ... })`
36+
- Aguardar conclusão com: `errs := pool.Wait()`
37+
38+
3. **Dependency Injection**
39+
- Passar dependências explicitamente como parâmetros
40+
- Exemplo: `func ProcessarDiferencas(db *gorm.DB) {}`
41+
- Facilitar testes através de interfaces para abstração de dependências
42+
43+
## Conhecimento Específico do Domínio
44+
45+
1. **Estrutura SPED**
46+
- Blocos são separados por letras (Bloco 0, Bloco C, Bloco H)
47+
- Registros seguem formato padrão: `REG|CAMPO1|CAMPO2|...|CAMPOn`
48+
- Blocos importantes:
49+
- Bloco 0: Abertura e identificação
50+
- Bloco C: Documentos fiscais
51+
- Bloco H: Inventário físico
52+
53+
2. **Inventário**
54+
- Processamento envolve cálculo de:
55+
- Entradas = Soma de todas as entradas do período
56+
- Saídas = Soma de todas as saídas do período
57+
- Diferenças = (InventárioFinal) - (InventárioInicial + Entradas - Saídas)
58+
- Análise por anos (Ano1, Ano2, ..., Ano6) para avaliação histórica
59+
60+
3. **Notas Fiscais**
61+
- XMLs NFe contêm detalhes completos de notas
62+
- Itens de notas são mapeados para análise de movimentação
63+
- É necessário tratamento para notas canceladas
64+
65+
## Fluxos de Trabalho
66+
67+
1. **Processo de Importação**
68+
```
69+
1. Configurar banco de dados (.env)
70+
2. Criar schema (parse-efd-fiscal -schema)
71+
3. Importar SPEDs (parse-efd-fiscal -importar-sped)
72+
4. Importar XMLs (parse-efd-fiscal -importar-xml)
73+
```
74+
75+
2. **Análise de Inventário**
76+
```
77+
1. Processar inventário (parse-efd-fiscal -inventario -anoInicial=2012 -anoFinal=2016)
78+
2. Gerar Excel (parse-efd-fiscal -excel)
79+
3. Analisar resultados (AnaliseInventario.xlsx)
80+
```
81+
82+
## Preferências do Projeto
83+
84+
1. **Logs**
85+
- Incluir timestamps em logs de operações demoradas
86+
- Logar início e fim de processos principais
87+
- Incluir informações relevantes para diagnóstico
88+
89+
2. **Banco de Dados**
90+
- Preferência por MySQL
91+
- Utilizar índices para campos frequentemente consultados
92+
- Campos de valor numérico em DECIMAL(19,3) para precisão
93+
94+
3. **Relatórios**
95+
- Estrutura padronizada com cabeçalho e formatação
96+
- Valores formatados com precisão de 3 casas decimais
97+
- Destaque visual para inconsistências
98+
99+
## Desafios Comuns
100+
101+
1. **Problemas de Memória**
102+
- Arquivos SPED podem ser muito grandes (varios MB)
103+
- Processamento em lotes para grandes volumes
104+
- Utilizar streaming para leitura de arquivos grandes
105+
106+
2. **Performance de Consultas**
107+
- Otimizar queries para análises complexas
108+
- Utilizar JOINs eficientes
109+
- Considerar índices para campos frequentemente filtrados
110+
111+
3. **Consistência de Dados**
112+
- Verificar inconsistências em arquivos de entrada
113+
- Validar estrutura de registros SPED
114+
- Tratar campos numéricos com precisão adequada

memory-bank/activeContext.md

+80
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
# Active Context - Parse-EFD-Fiscal
2+
3+
## Foco Atual
4+
5+
O foco atual do projeto Parse-EFD-Fiscal está na consolidação das funcionalidades existentes e na melhoria da arquitetura para suportar futuras expansões. As principais áreas de atenção são:
6+
7+
1. **Otimização de Performance**: Melhorar o desempenho do processamento de grandes volumes de dados
8+
2. **Ampliação das Análises**: Implementar novas verificações fiscais baseadas em critérios dos fiscos estaduais
9+
3. **Preparação para Microserviços**: Refatoração inicial para eventual migração para uma arquitetura de microserviços
10+
11+
## Mudanças Recentes
12+
13+
### Implementadas
14+
- Refatoração do sistema de processamento para utilizar worker pools e melhorar performance
15+
- Otimização das consultas SQL para reduzir tempo de processamento
16+
- Melhoria na geração de relatórios Excel com formatação mais clara e intuitiva
17+
- Documentação dos principais fluxos de trabalho e arquitetura do sistema
18+
19+
### Em Andamento
20+
- Revisão da lógica de cálculo de diferenças de inventário
21+
- Implementação de validações adicionais para inconsistências específicas
22+
- Testes automatizados para componentes críticos
23+
- Documentação mais detalhada para usuários finais
24+
25+
## Decisões Ativas
26+
27+
### Tecnológicas
28+
- Manutenção da versão atual do GORM (v1) enquanto avaliamos a migração para v2
29+
- Decisão de manter a abordagem CLI em vez de desenvolver uma interface web neste momento
30+
- Priorização da otimização de memória sobre tempo de processamento em operações com arquivos grandes
31+
32+
### Arquiteturais
33+
- Separação mais clara entre camadas de repositório e serviço
34+
- Implementação gradual de padrões de injeção de dependência
35+
- Consolidação da estrutura de logs para facilitar diagnóstico de problemas
36+
37+
## Próximos Passos
38+
39+
### Curto Prazo (1-2 meses)
40+
1. Completar a implementação de testes automatizados para componentes críticos
41+
2. Finalizar a refatoração do sistema de cálculo de diferenças de inventário
42+
3. Melhorar o sistema de logging para facilitar diagnóstico de problemas
43+
4. Documentar os principais fluxos de trabalho do ponto de vista do usuário
44+
45+
### Médio Prazo (3-6 meses)
46+
1. Iniciar implementação de microserviço para processamento de estoque
47+
2. Desenvolver novas análises fiscais conforme critérios dos fiscos estaduais
48+
3. Melhorar a experiência de configuração e uso do sistema
49+
4. Avaliar possibilidade de interface web simples para visualização de resultados
50+
51+
### Longo Prazo (6+ meses)
52+
1. Implementar sistema de notificações e alertas
53+
2. Desenvolver dashboard para acompanhamento fiscal
54+
3. Integrar com sistema Fix Auditoria
55+
4. Expandir suporte para outros módulos do SPED além do Fiscal
56+
57+
## Considerações em Aberto
58+
59+
- Como estruturar a migração para microserviços sem disrução do sistema atual
60+
- Quais novas análises fiscais prioritárias a serem implementadas
61+
- Como melhorar a experiência de uso para usuários não técnicos
62+
- Quais métricas de desempenho e qualidade devem ser priorizadas
63+
64+
## Estado Atual do Código
65+
66+
O código atual está funcional para os casos de uso principais, mas apresenta oportunidades de melhoria em:
67+
68+
1. **Cobertura de Testes**: Atualmente limitada, com foco em testes manuais
69+
2. **Estrutura de Pacotes**: Algumas responsabilidades estão misturadas
70+
3. **Documentação interna**: Comentários de código podem ser melhorados
71+
4. **Tratamento de Erros**: Poderia ser mais robusto e informativo
72+
73+
## Contexto para Desenvolvimento
74+
75+
Ao trabalhar no projeto, considere:
76+
77+
- Manter compatibilidade com a estrutura existente de arquivos SPED
78+
- Priorizar otimizações que beneficiem usuários com grandes volumes de dados
79+
- Documentar decisões técnicas e lógica de negócio complexa
80+
- Seguir as convenções de código Go estabelecidas (go fmt, golint)

memory-bank/productContext.md

+59
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
# Product Context - Parse-EFD-Fiscal
2+
3+
## Problema de Negócio
4+
5+
O cenário tributário brasileiro é um dos mais complexos do mundo, com múltiplas obrigações fiscais e constantes mudanças na legislação. Empresas são obrigadas a entregar ao FISCO diversas declarações, incluindo o SPED Fiscal, que contém informações detalhadas sobre movimentações de estoque e documentos fiscais.
6+
7+
### Desafios Atuais
8+
9+
1. **Calendário Fiscal Extenso**: Empresas precisam cumprir inúmeras obrigações com prazos rígidos.
10+
2. **Complexidade das Informações**: O SPED Fiscal exige detalhamento preciso de todas as operações.
11+
3. **Pressão por Cumprimento de Prazos**: Muitas vezes a prioridade é entregar no prazo, sacrificando a qualidade.
12+
4. **Risco de Multas**: Inconsistências podem resultar em pesadas penalidades financeiras.
13+
5. **Custo Operacional**: Manter equipes dedicadas a conformidade fiscal é dispendioso.
14+
15+
### Consequências dos Problemas
16+
17+
- **Autuações Fiscais**: Erros nas declarações resultam em multas significativas
18+
- **Retrabalho**: Correções posteriores consomem tempo e recursos
19+
- **Perda de Credibilidade**: Problemas fiscais recorrentes afetam a reputação da empresa
20+
- **Ineficiência Operacional**: Processos manuais são lentos e propensos a erros
21+
- **Insegurança Jurídica**: Falta de controle sobre conformidade gera incertezas
22+
23+
## Solução Proposta
24+
25+
O Parse-EFD-Fiscal foi concebido para resolver estes problemas através da automação da análise e auditoria de arquivos SPED Fiscal.
26+
27+
### Valor para o Usuário
28+
29+
- **Prevenção Proativa**: Identificação de inconsistências antes de auditorias fiscais
30+
- **Economia de Tempo**: Análises que levariam dias são realizadas em minutos
31+
- **Redução de Erros**: Minimização do fator humano nas análises
32+
- **Conformidade Contínua**: Monitoramento constante da qualidade das informações
33+
- **Evidência Auditável**: Geração de relatórios detalhados para justificar posições fiscais
34+
35+
### Experiência do Usuário Desejada
36+
37+
Os usuários devem conseguir:
38+
39+
1. **Simplicidade de Operação**: Importar arquivos SPED e obter análises com poucos comandos
40+
2. **Informações Claras**: Visualizar inconsistências de forma intuitiva em relatórios Excel
41+
3. **Ações Corretivas**: Receber sugestões práticas para correção de problemas
42+
4. **Confiança nas Análises**: Entender a metodologia e cálculos realizados
43+
5. **Autonomia**: Operar o sistema sem necessidade de conhecimento técnico profundo
44+
45+
## Diferenciais Competitivos
46+
47+
- **Especialização**: Foco específico em análise de SPED Fiscal e inventário
48+
- **Tecnologia Moderna**: Desenvolvimento em Go, oferecendo alto desempenho
49+
- **Independência**: Não requer conhecimento de linguagens de programação pelo usuário
50+
- **Precisão**: Algoritmos específicos para tipos comuns de inconsistências fiscais
51+
- **Código Aberto**: Possibilidade de adaptação às necessidades específicas
52+
53+
## Métricas de Sucesso
54+
55+
- **Tempo Economizado**: Redução de 80% no tempo de análise manual
56+
- **Taxa de Detecção**: Identificação de 95% das inconsistências comuns
57+
- **Prevenção de Multas**: Redução mensurável em penalidades por erros evitáveis
58+
- **Adoção**: Número de empresas utilizando a ferramenta regularmente
59+
- **Satisfação**: Feedback positivo sobre utilidade e facilidade de uso

memory-bank/progress.md

+121
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
# Progress - Parse-EFD-Fiscal
2+
3+
## Funcionalidades Completas
4+
5+
### Infraestrutura
6+
- [x] Configuração do ambiente de desenvolvimento
7+
- [x] Integração com banco de dados MySQL
8+
- [x] Sistema de importação de arquivos SPED
9+
- [x] Sistema de importação de arquivos XML
10+
- [x] Estrutura de CLI com flags para diferentes operações
11+
- [x] Configuração via variáveis de ambiente (.env)
12+
- [x] Integração contínua com Travis CI
13+
14+
### Processamento de Dados
15+
- [x] Parser de arquivos SPED Fiscal
16+
- [x] Parser de XMLs de Notas Fiscais
17+
- [x] Parser de XMLs de Cupons Fiscais
18+
- [x] Mapeamento de registros SPED para estruturas Go
19+
- [x] Persistência dos dados no banco relacional
20+
- [x] Sistema básico de log de operações
21+
22+
### Análises Fiscais
23+
- [x] Processamento de inventário físico
24+
- [x] Análise de entradas e saídas
25+
- [x] Cálculo de diferenças de inventário
26+
- [x] Sugestão de correções para inventário
27+
- [x] Geração de relatórios em Excel
28+
29+
### Performance
30+
- [x] Pool de workers para processamento paralelo
31+
- [x] Otimização de consultas SQL críticas
32+
- [x] Gerenciamento básico de memória para arquivos grandes
33+
34+
## Funcionalidades em Desenvolvimento
35+
36+
### Infraestrutura
37+
- [ ] Migração para GORM v2
38+
- [ ] Configuração via arquivo de configuração (além de .env)
39+
- [ ] Separação em módulos para futuro desenvolvimento de microserviços
40+
- [ ] Melhoria no sistema de logs com níveis de detalhe configuráveis
41+
42+
### Processamento de Dados
43+
- [ ] Suporte a novos layouts de arquivos SPED (versões mais recentes)
44+
- [ ] Validação mais robusta de dados importados
45+
- [ ] Detecção automática de malformações em arquivos de entrada
46+
- [ ] Sistema de cache para melhorar performance em reprocessamentos
47+
48+
### Análises Fiscais
49+
- [ ] Novos tipos de análises baseadas em critérios dos fiscos estaduais
50+
- [ ] Análise de NCM e classificações fiscais
51+
- [ ] Validação cruzada de informações em diferentes obrigações fiscais
52+
- [ ] Detecção de duplicidades e inconsistências em documentos fiscais
53+
54+
### Performance
55+
- [ ] Otimização do uso de memória em processamentos de grandes volumes
56+
- [ ] Melhorias no sistema de concorrência
57+
- [ ] Sistema de processamento em lotes para arquivos muito grandes
58+
- [ ] Otimização de índices de banco de dados
59+
60+
## Funcionalidades Planejadas
61+
62+
### Expansão de Escopo
63+
- [ ] Suporte a outros módulos SPED (Contribuições, Contábil)
64+
- [ ] Integração com sistema Fix Auditoria
65+
- [ ] Dashboard web para visualização de resultados
66+
- [ ] API REST para integração com outros sistemas
67+
68+
### Infraestrutura Avançada
69+
- [ ] Arquitetura completa de microserviços
70+
- [ ] Sistema de autenticação e autorização
71+
- [ ] Suporte a diferentes bancos de dados
72+
- [ ] Containerização completa para fácil implantação
73+
74+
### Experiência do Usuário
75+
- [ ] Interface web para configuração e execução
76+
- [ ] Sistema de notificações e alertas
77+
- [ ] Relatórios customizáveis
78+
- [ ] Visualizações gráficas de análises
79+
80+
## Estado Atual (Progresso)
81+
82+
### Completude do Projeto
83+
- Infraestrutura Base: ~80%
84+
- Processamento de Dados: ~85%
85+
- Análises Fiscais: ~70%
86+
- Performance: ~60%
87+
- Experiência do Usuário: ~40%
88+
- **Overall**: ~65%
89+
90+
### Próximas Entregas
91+
1. Finalização da refatoração do cálculo de diferenças de inventário
92+
2. Implementação de testes automatizados para componentes críticos
93+
3. Melhoria na documentação para usuários finais
94+
4. Otimização de queries SQL para melhor performance
95+
96+
## Problemas Conhecidos
97+
98+
### Bugs
99+
- Algumas situações específicas de cálculo de inventário podem gerar resultados incorretos
100+
- Possíveis problemas de memória em arquivos muito grandes
101+
- Tratamento inadequado de algumas situações de erro
102+
103+
### Limitações Técnicas
104+
- Não suporta processamento distribuído
105+
- Interface limitada a linha de comando
106+
- Não possui sistema de recuperação automática em caso de falhas
107+
- Documentação técnica incompleta
108+
109+
## Métricas de Progresso
110+
111+
### Cobertura de Casos de Uso
112+
- Importação de Arquivos: ~90%
113+
- Análise de Inventário: ~80%
114+
- Geração de Relatórios: ~75%
115+
- Correção Automática: ~50%
116+
117+
### Qualidade de Código
118+
- Cobertura de Testes: ~30%
119+
- Documentação de Código: ~40%
120+
- Linting/Formatação: ~85%
121+
- Gestão de Erros: ~60%

0 commit comments

Comments
 (0)