Plano de Refatoração de Telas Antigas
Última atualização: 30 de setembro de 2025
Visão Geral
Alinhar a equipe sobre boas práticas de código e estabelecer um plano claro para refatoração de telas antigas, garantindo padronização, redução de dívidas técnicas e melhoria na manutenção do sistema.
1. Boas Práticas
Objetivos
- Remover logs desnecessários
- Estratégia para descontinuação gradual do Redux
- Evitar novos usos
- Isolar seletores e actions legadas
- Introduzir serviços e hooks específicos por feature
- Processo de identificação e remoção de código morto
- Criação de bibliotecas reutilizáveis para funcionalidades compartilhadas entre projetos, evitando duplicidade e facilitando manutenção
- Exemplo: Rocket, listagem de produtos, calculo de preços, calculo de impostos, etc.
2. Refatoração de Telas (Prioridades)
Definição de Prioridades
Priorizar telas com maior impacto e alto custo de manutenção.
| Plataforma | Tela | Estratégia |
|---|---|---|
| Web | Catálogo de produtos | Sem Redux; filtros direto no banco de dados |
| App | Catálogo de produtos | Sem Redux; filtros direto no banco de dados |
| App | Clientes | Sem Redux; filtros direto no banco de dados |
| App | Vendas | Sem Redux; filtros direto no banco de dados |
| Rocket | Agenda | Sem Redux; filtros direto no banco de dados |
Pontos de Arquitetura
- Estratégia para substituir Redux por acesso direto via serviços (ex.: IndexedDB/DB local) com paginação, ordenação e filtros no banco
3. Primeira Refatoração (Foco)
Objetivo Inicial
Foco: Web – Tela de Catálogo de Produtos (sem Redux; filtros direto no banco de dados).
Mapeamento de Atividades
- Criar service de CRUD para banco local (IndexedDB)
- Executar testes de performance do banco local para validar viabilidade
- Definir parâmetro de feature flag para exibir a nova tela
- Criar controller para o catálogo, separando lógica de apresentação
Funcionalidades Essenciais
| Funcionalidade | Descrição |
|---|---|
| Listagem de produtos | Integração ao banco e paginação |
| Precificação centralizada | Taxas, promoções, impostos em uma única função |
| Filtro de produtos | Busca e filtros diretos no banco |
| Ordenação de produtos | Classificação dinâmica |
Regras de Negócio
- Abranger regras do TIPTABPRECOS
- Parâmetro para definir unidade padrão do catálogo
- Mapear e validar as regras atualmente usadas na tela legada
UI/UX
- Novo modal de detalhes do produto (substituir o atual que gera bugs e alto acoplamento)
Critérios de Aceite
| Critério | Descrição |
|---|---|
| Sem Redux | A listagem deve funcionar sem Redux |
| Performance | Paginação, filtros e busca executados no banco/dados |
| Testes | Controller e service com testes unitários |
| Modal | Modal novo sem regressões conhecidas da versão antiga |
| React Query | Uso de React Query para gerenciamento de estado e cache |
4. Refatoração é um item de Baixa Prioridade
Estratégia de Execução
- Refatoração com calma, priorizando qualidade
- Planejamento para não impactar tarefas paralelas
- Pode durar várias sprints, conforme complexidade e disponibilidade
5. Testes (Unitários e Integração)
Objetivos
- Cobrir funcionalidades refatoradas com testes unitários
- Testes de integração garantindo interoperabilidade com o restante do sistema
- Testes de performance (ex.: paginação e filtros em catálogos grandes)
6. Documentação
Responsabilidades
- Atualizar documentação técnica a cada mudança relevante
- Registrar contratos de serviços (inputs/outputs), decisões arquiteturais e feature flags
- Manter link entre PRs de código e PRs de documentação
Recursos Relacionados
- Processo de Documentação: ver "Processo de Documentação" neste repositório
- Template de geração com IA: ver "Gerar Documentação" em Tutoriais