9.8 KiB
9.8 KiB
📋 Requisitos Técnicos - Sistema de Persistência Robustas
🎯 Objetivo
Implementar um sistema de persistência robusto que garanta que todas as personalizações e configurações do painel administrativo do Aço Calc Pro permaneçam inalteradas durante o uso e recarregamento do aplicativo.
📊 Situação Atual
Sistema Existente
- ✅ Data Manager com cache localStorage (24h TTL)
- ✅ Storage Manager para preferências básicas
- ✅ Cache Manager com IndexedDB
- ❌ Admin Panel sem persistência de configurações
Problemas Identificados
- Configurações do admin panel não são salvas
- Sem sistema de backup/restauração
- Sem migração de dados entre versões
- Sem monitoramento de integridade
- Falta feedback visual de persistência
🏗️ Requisitos Funcionais
RF01 - Sistema de Configurações Administrativas
- Criar sistema centralizado de configurações admin
- Persistir nome do aplicativo
- Persistir subtítulo do aplicativo
- Persistir texto do rodapé
- Persistir tema padrão (escuro/claro)
- Persistir modo padrão (simples/experto)
- Persistir visibilidade de cada ferramenta (20+ ferramentas)
- Persistir intervalo de atualização de dados
- Persistir configurações de backup automático
RF02 - Interface de Configuração
- Adicionar seção de configurações no painel admin
- Criar formulários para cada tipo de configuração
- Implementar salvamento automático (onchange)
- Adicionar botão de reset para configurações padrão
- Mostrar preview das mudanças em tempo real
- Adicionar validação de inputs
RF03 - Sistema de Backup/Restauração
- Criar backup automático antes de mudanças significativas
- Implementar backup manual via botão
- Criar lista de backups disponíveis
- Implementar restauração seletiva por backup
- Adicionar confirmação antes de restaurar
- Limitar número de backups (máx 5)
- Exportar backup como arquivo JSON
RF04 - Persistência de Estado da UI
- Salvar última aba ativa do sidebar
- Salvar estado de colapsos/expansões
- Salvar filtros aplicados em cada seção
- Salvar ordenação de tabelas
- Salvar tamanho de colunas redimensionadas
- Salvar posição de scroll quando relevante
RF05 - Sistema de Migração
- Detectar versão atual vs salva
- Executar migrações automáticas quando necessário
- Criar logs de migração
- Implementar rollback em caso de falha
- Notificar usuário sobre migrações realizadas
RF06 - Monitoramento e Debugging
- Criar dashboard de saúde do sistema
- Mostrar uso de storage (localStorage/IndexedDB)
- Exibir últimas operações realizadas
- Adicionar sistema de logs persistentes
- Exportar logs para troubleshooting
- Mostrar erros de forma amigável
RF07 - Feedback Visual
- Adicionar toast notifications para ações
- Mostrar indicador de salvamento
- Adicionar animações de sucesso
- Mostrar progresso de operações longas
- Adicionar indicadores de erro
🔧 Requisitos Técnicos
RT01 - Armazenamento
- localStorage: Para configurações pequenas (< 5MB)
- IndexedDB: Para dados grandes e backups
- Fallback: Funcionar sem storage (modo básico)
- Quota: Monitorar e respeitar limites do navegador
- Validação: Validar dados antes de salvar
RT02 - Performance
- Salvamento: < 100ms para configurações simples
- Carregamento: < 200ms para restaurar estado completo
- Backup: < 1s para criar backup completo
- Memória: < 10MB adicionais em memória
- CPU: Operações assíncronas, não bloquear UI
RT03 - Segurança
- Sanitização: Sanitizar todos os inputs
- Validação: Validar tipos e ranges de dados
- Escopo: Isolar dados por aplicação
- Limpeza: Remover dados sensíveis de logs
RT04 - Compatibilidade
- Browsers: Chrome 60+, Firefox 55+, Safari 11+, Edge 79+
- Mobile: Suporte para navegadores mobile modernos
- Storage: Detectar e lidar com storage indisponível
- Fallback: Funcionalidade básica sem storage
RT05 - Manutenibilidade
- Modular: Cada sistema em classe separada
- Documentado: JSDoc completo para todas funções
- Testável: Funções puras quando possível
- Logs: Logging adequado para debugging
📐 Arquitetura Proposta
Estrutura de Classes
// Gerenciadores principais
class AdminConfigManager // Configurações administrativas
class BackupManager // Backup e restauração
class MigrationManager // Migração entre versões
class PersistentLogger // Logs persistentes
class SystemHealthMonitor // Monitoramento de saúde
// Integração com existente
class EnhancedDataManager extends DataManager
class EnhancedStorage extends Storage
Estrutura de Dados
// Config admin persistida
interface AdminConfig {
version: string;
appName: string;
appSubtitle: string;
footerText: string;
themeDefault: 'escuro' | 'claro';
modeDefault: 'simples' | 'experto';
toolsVisibility: Record<string, boolean>;
dataRefreshInterval: number; // horas
autoBackup: boolean;
backupInterval: number; // dias
lastBackup: number | null;
uiState: {
activeSidebarTab: number;
collapsedSections: string[];
appliedFilters: Record<string, any>;
tableSort: Record<string, { column: string; direction: 'asc' | 'desc' }>;
columnWidths: Record<string, number>;
scrollPositions: Record<string, number>;
};
}
// Backup completo
interface BackupData {
timestamp: number;
version: string;
config: AdminConfig;
preferences: UserPreferences;
cacheStats: CacheStats;
logs: LogEntry[];
}
🎨 Interface de Usuário
Novos Elementos no Admin Panel
-
Aba "Configurações"
- Formulário de config gerais
- Toggle switches para ferramentas
- Inputs para textos customizados
- Selects para temas e modos
-
Aba "Backup & Restore"
- Botão "Criar Backup Agora"
- Lista de backups existentes
- Botões "Restaurar" para cada backup
- Botão "Exportar Config"
- Botão "Importar Config"
-
Aba "System Health"
- Uso de storage (gráfico/barra)
- Status de cada componente
- Últimas operações
- Botão "Exportar Logs"
- Botão "Limpar Tudo"
Toast Notifications
// Novo sistema de notificações
class ToastManager {
show(message, type = 'info', duration = 3000) {
// Criar e exibir toast
}
success(message) { this.show(message, 'success'); }
error(message) { this.show(message, 'error', 5000); }
warning(message) { this.show(message, 'warning', 4000); }
info(message) { this.show(message, 'info'); }
}
🧪 Testes Requeridos
Testes Unitários
- AdminConfigManager.saveConfig() persiste corretamente
- AdminConfigManager.getConfig() retorna valores salvos
- BackupManager.createBackup() cria backup válido
- BackupManager.restoreBackup() restaura corretamente
- MigrationManager detecta e executa migrações
Testes de Integração
- Configurações sobrevivem a reload da página
- Backup é criado antes de mudanças críticas
- Restauração funciona de backups antigos
- UI reflete mudanças de configuração
- Performance dentro dos limites especificados
Testes de Aceitação
- Usuário consegue alterar nome do app
- Usuário consegue mostrar/ocultar ferramentas
- Usuário consegue criar e restaurar backup
- Usuário recebe feedback de ações
- Sistema funciona após reload do navegador
📋 Checklist de Implementação
Fase 1 - Core (Semana 1)
- Criar AdminConfigManager
- Adicionar seção de config no admin panel
- Implementar salvamento de config básicas
- Adicionar feedback visual básico
Fase 2 - Backup (Semana 2)
- Criar BackupManager
- Adicionar UI de backup/restauração
- Implementar backup automático
- Adicionar exportação/importação
Fase 3 - Estado UI (Semana 3)
- Implementar persistência de estado da UI
- Adicionar sistema de logs
- Criar dashboard de saúde
- Adicionar monitoramento
Fase 4 - Polish (Semana 4)
- Adicionar sistema de migração
- Implementar toast notifications completas
- Adicionar animações e transições
- Escrever testes e documentação
🚨 Riscos e Mitigação
Risco: Storage Insuficiente
- Mitigação: Monitorar uso, limpar dados antigos, usar IndexedDB
- Fallback: Funcionalidade básica sem persistência
Risco: Performance Degradada
- Mitigação: Operações assíncronas, lazy loading, cache
- Monitoramento: Métricas de performance em tempo real
Risco: Dados Corrompidos
- Mitigação: Validação rigorosa, backups frequentes, rollback
- Recuperação: Sistema de migração e restauração
Risco: Complexidade Excessiva
- Mitigação: Implementação incremental, código modular
- Documentação: Documentação clara e exemplos
📊 Métricas de Sucesso
Funcionais
- 100% das configurações persistem após reload
- 0% perda de dados durante operações normais
- < 1 segundo para criar backup completo
- < 200ms para aplicar configurações
Qualidade
- 0 erros críticos em produção
-
90% cobertura de testes para core
- Código com complexidade ciclomática < 10
- Documentação 100% atualizada
Usabilidade
- Usuário consegue completar tarefas sem documentação
- Feedback visual em < 100ms
- Interface intuitiva e consistente
- Erros claros e acionáveis
Documento de Requisitos - Versão 1.0
Data: Janeiro 2025
Status: Aprovado para Implementação