Files
SteelBase/.kiro/specs/sistema-cache-perfis/tasks.md

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