169 lines
7.3 KiB
Markdown
169 lines
7.3 KiB
Markdown
# 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.js` com 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_
|
|
|
|
- [ ] 2. Implementar DataStore (camada de armazenamento)
|
|
- Criar arquivo `js/core/data-store.js` com 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_
|
|
|
|
- [ ] 3. Implementar CSVParser (processamento de dados)
|
|
- Criar arquivo `js/core/csv-parser.js` com 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_
|
|
|
|
- [ ] 4. Implementar SyncManager (sincronização)
|
|
- Criar arquivo `js/core/sync-manager.js` com 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_
|
|
|
|
- [ ] 5. Implementar DataService (API pública)
|
|
- Criar arquivo `js/core/data-service.js` com 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_
|
|
|
|
- [ ] 6. Integrar sistema de cache com código existente
|
|
- Atualizar `app.js` para 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_
|
|
|
|
- [ ] 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
|