7.3 KiB
Implementation Plan - Sistema de Cache de Perfis
Overview
Este plano implementa um sistema de cache intermediário usando IndexedDB para armazenar dados de perfis estruturais, permitindo carregamento rápido, sincronização sob demanda, e gerenciamento flexível de fontes de dados.
Tasks
-
1. Criar estrutura base do sistema de cache
- Criar arquivo
js/core/cache-manager.jscom classe CacheManager - Implementar inicialização do IndexedDB
- Criar schema do banco de dados com stores para cada tipo de perfil
- Implementar tratamento de erros e fallback
- Requirements: 1.1, 1.2, 1.3, 1.4
- Criar arquivo
-
2. Implementar DataStore (camada de armazenamento)
- Criar arquivo
js/core/data-store.jscom classe DataStore - Implementar operações CRUD (get, getAll, set, delete, clear)
- Implementar contagem de registros
- Adicionar suporte a índices para busca rápida
- Requirements: 1.2, 1.3, 9.2
- Criar arquivo
-
3. Implementar CSVParser (processamento de dados)
- Criar arquivo
js/core/csv-parser.jscom classe CSVParser - Implementar parse de CSV para objetos JavaScript
- Adicionar validação de schema
- Implementar transformações de dados (trim, parseFloat, etc)
- Tratar linhas vazias e caracteres especiais
- Requirements: 2.3, 4.2
- Criar arquivo
-
4. Implementar SyncManager (sincronização)
- Criar arquivo
js/core/sync-manager.jscom classe SyncManager - Implementar sincronização de todos os tipos de perfis
- Implementar sincronização seletiva por tipo
- Adicionar cálculo de hash MD5 para detecção de mudanças
- Implementar callback de progresso
- Armazenar metadados de sincronização (timestamp, hash, count)
- Requirements: 3.1, 3.2, 3.3, 4.1, 4.2, 4.3
- Criar arquivo
-
5. Implementar DataService (API pública)
- Criar arquivo
js/core/data-service.jscom classe DataService - Implementar
getPerfis(tipo, options)com fallback para CSV - Implementar
searchPerfis(tipo, filters)com suporte a múltiplos filtros - Implementar
getPerfilById(tipo, id)para busca por ID - Implementar
getMetadata(tipo)para informações de sincronização - Adicionar cache em memória para dados frequentemente acessados
- Requirements: 2.1, 2.2, 5.1, 5.2, 5.3, 5.5
- Criar arquivo
-
6. Integrar sistema de cache com código existente
- Atualizar
app.jspara inicializar CacheManager na inicialização - Modificar
carregarCantoneiras()para usar DataService - Adicionar tratamento de erros com fallback para CSV
- Manter compatibilidade com código existente
- Testar carregamento de cantoneiras com cache
- Requirements: 2.1, 2.2, 2.4, 7.3, 7.4
- Atualizar
-
7. Criar interface de administração do cache
- Adicionar seção "Cache Manager" no painel administrativo
- Criar botão "🔄 Sincronizar Todos" com barra de progresso
- Exibir estatísticas de cache (espaço usado, última sync, count)
- Adicionar botões para sincronizar tipos individuais
- Implementar botão "🗑️ Limpar Cache" com confirmação
- Exibir timestamp da última sincronização por tipo
- Requirements: 3.1, 3.2, 3.3, 3.4, 6.1, 6.2, 6.3
-
8. Implementar configuração de fontes de dados
- Adicionar seção "Configurar Fontes CSV" no painel admin
- Permitir editar caminho base dos CSVs
- Permitir editar nome de arquivo para cada tipo
- Validar se arquivos existem antes de salvar
- Salvar configuração no localStorage
- Fornecer botão "Restaurar Padrões"
- Requirements: 10.1, 10.2, 10.3, 10.4, 10.5
-
9. Implementar detecção automática de atualizações
- Calcular hash MD5 dos arquivos CSV na inicialização
- Comparar com hash armazenado no cache
- Exibir notificação quando dados estiverem desatualizados
- Adicionar opção de atualização automática ou manual
- Implementar configuração de intervalo de verificação
- Requirements: 4.1, 4.2, 4.3, 4.4, 4.5
-
10. Adicionar ferramentas de diagnóstico e debug
- Criar seção "Diagnóstico" no painel admin
- Exibir estatísticas de hit/miss do cache
- Implementar botão "Exportar Cache" (JSON)
- Implementar botão "Importar Cache" (JSON)
- Adicionar modo debug com logs detalhados no console
- Exibir informações de saúde do IndexedDB
- Requirements: 8.1, 8.2, 8.3, 8.4, 8.5
-
11. Implementar gerenciamento de espaço
- Calcular espaço total usado pelo cache
- Exibir espaço disponível no navegador
- Implementar aviso quando espaço < 10MB
- Adicionar botão para limpar tipos específicos
- Implementar limpeza automática de dados antigos (opcional)
- Requirements: 6.1, 6.2, 6.3, 6.4
-
12. Implementar fallback e compatibilidade
- Detectar se IndexedDB está disponível
- Implementar fallback completo para CSV quando IndexedDB não disponível
- Adicionar opção para desabilitar cache via configuração
- Garantir que aplicativo funciona sem cache
- Testar em navegadores sem IndexedDB
- Requirements: 6.5, 7.4, 7.5
-
13. Otimizações de performance
- Implementar lazy loading para perfis não utilizados
- Adicionar cache em memória para dados recentes
- Otimizar queries com índices apropriados
- Implementar batch insert para sincronização rápida
- Medir e otimizar tempo de carregamento
- Requirements: 9.1, 9.2, 9.4, 9.5
-
* 14. Implementar Web Workers para parsing (opcional)
- Criar Web Worker para parse de CSV em background
- Mover processamento pesado para worker thread
- Implementar comunicação via postMessage
- Testar performance com arquivos grandes
- Requirements: 9.3
-
* 15. Implementar compressão de dados (opcional)
- Adicionar biblioteca de compressão (pako.js ou similar)
- Comprimir dados antes de armazenar se > 1MB
- Descomprimir ao carregar
- Medir ganho de espaço vs overhead de CPU
- Requirements: 9.5
-
16. Criar documentação do sistema
- Documentar API pública do DataService
- Criar guia de uso para desenvolvedores
- Documentar configurações disponíveis
- Adicionar exemplos de uso
- Documentar troubleshooting comum
- Requirements: Todos
-
17. Aplicar sistema de cache a todos os tipos de perfis
- Atualizar funções de carregamento de barras redondas
- Atualizar funções de carregamento de tubos circulares
- Atualizar funções de carregamento de perfis I
- Atualizar funções de carregamento de perfis W
- Atualizar funções de carregamento de tubos RHS
- Atualizar funções de carregamento de chapas
- Atualizar funções de carregamento de perfis HP
- Atualizar funções de carregamento de barras roscadas
- Atualizar funções de carregamento de barras chatas
- Requirements: 2.1, 2.2, 5.1
-
18. Testes de integração e validação final
- Testar carregamento inicial (primeira vez)
- Testar carregamento do cache (segunda vez)
- Testar sincronização manual
- Testar detecção de atualizações
- Testar fallback quando CSV não disponível
- Testar limpeza de cache
- Testar configuração de fontes
- Validar performance (< 100ms para cache hit)
- Requirements: Todos
Notes
- Tarefas marcadas com * são opcionais e podem ser implementadas posteriormente
- Cada tarefa deve ser testada individualmente antes de prosseguir
- Manter compatibilidade com código existente durante toda implementação
- Priorizar funcionalidade básica antes de otimizações avançadas