# 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