- Adicionado selectedCategory nas dependências do useCallback
- Criado useEffect separado para recarregar quando categoria muda
- Removido loadData() dos handlers (agora feito pelo useEffect)
Isso resolve o problema de estado assíncrono onde setSelectedCategory
não atualizava antes de loadData() ser chamado.
A query padrão agora agrupa por categoria pai usando COALESCE(c.parent_id, c.id),
somando as transações de todas as subcategorias.
Antes: Transações em subcategorias (Supermercado, Restaurantes) não apareciam
Agora: Alimentação mostra total de Supermercado + Restaurantes + todas subcategorias
ADDED:
- Relatório Por Categoria agora suporta drill-down clicável
- Clicar em categoria pai exibe gráfico com suas subcategorias
- Botão Voltar para retornar às categorias principais
- Hover visual em linhas de tabela e cards clicáveis
- Backend aceita parent_id como parâmetro em /reports/by-category
CHANGED:
- Backend: query padrão mostra apenas categorias pai (parent_id IS NULL)
- Backend: nova query para subcategorias quando parent_id é fornecido
- Frontend: estado selectedCategory para rastrear navegação
- Frontend: onClick handlers em gráfico, tabela e cards
TRANSLATION:
- pt-BR: Distribuição de Subcategorias
- es: Distribución de Subcategorías
- en: Subcategory Distribution
- Usar displayColor ao passar cor para filhos (não category.color)
- Fallback para cor padrão se categoria não tiver cor
- Garante que todas as subcategorias usem a mesma cor da categoria pai
- Service Worker v1.39.0 com estratégias offline-first
- Cache-First: imagens, fontes (resposta imediata)
- Network-First: chamadas API (dados frescos)
- Stale-While-Revalidate: HTML/CSS/JS
- Verificação de atualizações a cada 1 hora
- Prompt de atualização quando nova versão disponível
- manifest.json otimizado: scope, categories, prefer_related_applications
- Meta tags iOS: apple-mobile-web-app-capable, black-translucent
- Registro automático do Service Worker em main.jsx
- Documentação completa: docs/INSTALACAO_iOS.md
- Compatível com upgrade futuro para Capacitor (30 min, zero mudanças)
Deploy: frontend/dist deployed to 213.165.93.60
Improved:
- Cards KPI com gradientes e ícones para cada métrica
- Tabela comparativa detalhada lado a lado
- Gráfico de barras agrupadas profissional
- Layout responsivo otimizado
- Badges de variação com validação NaN
- Traduções completas (pt-BR, en, es)
Fixed:
- Adicionado costCenters.name (Nome/Name/Nombre)
- Corrige coluna em relatórios por centro de custo
Added:
- 5 novas subcategorias em Filhos
- Mesada, Passeios, Festas, Material Escolar, Transporte Escolar
- Total de 12 subcategorias disponíveis
Fixed:
- Adicionado transactions.credit e transactions.debit
- Corrige exibição de tipo nos templates de recorrência
- Traduções completas em pt-BR, en, es
Fixed:
- Adicionado transactions.expense e transactions.income
- Traduções completas em pt-BR, en, es
- Corrige filtros na página de Templates de Recorrência
Fixed:
- Filtros vazios removidos antes da requisição
- Templates agora aparecem corretamente na lista
- Corrige bug que causava lista vazia ao carregar página
Improved:
- Cards KPI redesenhados com ícones e melhor hierarquia
- Badges de variação com contraste aprimorado
- Métricas de média mensal adicionadas
- Card de Taxa de Poupança com barra de progresso
- Feedback inteligente (Excelente/Boa/Pode melhorar)
- Gráfico comparativo com tooltips e bordas arredondadas
- Tradução completa (pt-BR, en, es)
Added:
- Gráfico de projeção de saldo com período ajustável (1-12 meses)
- Endpoint GET /api/reports/projection-chart
- Componente BalanceProjectionChart com Chart.js
- Projeções baseadas em recorrências, passivos e transações agendadas
- Tradução completa (pt-BR, en, es)
Fixed:
- Type casting para parâmetro months no endpoint
- Query SQL simplificada sem exchange_rates
- Ordem de execução das migrações
- Permissões do bootstrap/cache (www-data)
Changed:
- Database reset completo (migrate:fresh)
- Usuário recriado com novo token API
- Deploy completo via scripts oficiais