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

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.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