✨ Novo Sistema de Cancelamento com Retenção Inteligente
- Wizard de 5 etapas com mensagens emocionais personalizadas
- Oferta de 3 meses grátis para cancelamentos por preço (elegível se >= 3 meses pagos)
- Cumprimento legal: período de garantia 7 dias com reembolso total
- Rastreamento de ofertas em DB (impede reuso)
- Analytics de cancelamentos (motivo, feedback, within_guarantee)
🎨 Frontend
- CancellationWizard.jsx (1050+ linhas) com 5 steps
- Profile.jsx com nova seção de assinatura
- i18n completo em 3 idiomas (pt-BR, ES, EN)
- 40+ traduções específicas
🔧 Backend
- SubscriptionController: 4 novos métodos (eligibility, process, offer, execute)
- PayPalService: suspensão temporária de assinatura
- 2 novas tabelas: retention_offers, cancellations
- Email de retenção emotivo em Blade
⚖️ Legal
- 7 dias: cancelamento = reembolso total + acesso imediato termina
- Após 7 dias: cancelamento = acesso até fim do período, sem reembolso
- Grace period apropriado conforme período de garantia
Backend:
- AccountDeletionController com 4 endpoints principais
- requestDeletionCode: Envia código de 6 dígitos por email (válido 10min)
- exportBackup: Exporta todos os dados do usuário em JSON
- executeHardDelete: Deleta permanentemente conta e dados com validação de código
- importBackup: Importa backup completo com mapeamento de IDs
Frontend:
- FactoryResetWizard: Wizard de 4 etapas (Warning → Backup → Code → Confirmation)
- ImportBackupModal: Drag & drop para importar backup JSON
- Integração na página Profile com seção de Gerenciamento de Dados
- accountDeletionService: Serviços API completos
Email:
- Template HTML para código de confirmação
- Avisos visuais sobre irreversibilidade da ação
i18n:
- Traduções completas em pt-BR, es, en
- 50+ strings de tradução adicionadas
- Avisos e mensagens de erro traduzidos
Funcionalidades:
✅ Hard delete com confirmação dupla (código + texto DELETAR)
✅ Backup completo em JSON (transações, contas, categorias, etc)
✅ Importação de backup com mapeamento inteligente de IDs
✅ Email com código de segurança
✅ Wizard responsivo com 4 etapas
✅ Validação de arquivos e tamanho (max 50MB)
✅ Drag & drop para upload
✅ Estatísticas de importação
✅ Logout automático após delete
- Adicionar traduções para modal de keywords do centro de custo Geral
- Corrigir toasts sem i18n em Accounts e LiabilityAccounts
- Adicionar regra no copilot-instructions sobre verificação obrigatória de i18n
- Garantir que todos os textos visíveis usem t() com traduções em pt-BR, es e en
- Adicionado seletor de viewMode: 'week', 'month', 'all'
- Backend ajustado para trazer todos os dados quando viewMode é month/all
- Agrupamento por mês no frontend
- Lista flat para visualização 'todas'
- Traduções i18n para pt-BR, en, es
- Filtro 'Sem Categoria' mostra lista flat ao invés de agrupada por semanas
- Transações futuras aparecem quando qualquer filtro está ativo
- Filtro de data parcial (só data inicial ou só data final)
- COALESCE para effective_date com fallback para planned_date
- Traduções i18n para filteredResults, filterActive, uncategorized
- Removido README.md padrão do Laravel (backend)
- Removidos scripts de deploy (não mais necessários)
- Atualizado copilot-instructions.md para novo fluxo
- Adicionada documentação de auditoria do servidor
- Sincronizado código de produção com repositório
Novo workflow:
- Trabalhamos diretamente em /root/webmoney (symlink para /var/www/webmoney)
- Mudanças PHP são instantâneas
- Mudanças React requerem 'npm run build'
- Commit após validação funcional
- Redesigned all email templates with professional corporate style
- Created base layout with dark header, status cards, and footer
- Updated: subscription-cancelled, account-activation, welcome, welcome-new-user, due-payments-alert
- Removed emojis and gradients for cleaner look
- Added multi-language support (ES, PT-BR, EN)
- Fixed email delivery (sync instead of queue)
- Fixed PayPal already-cancelled subscription handling
- Cleaned orphan subscriptions from deleted users
- Nova Landing Page institucional em /
- Seções: Hero, Features, Pricing, FAQ, CTA, Footer
- Pricing integrado com API de planos
- Register.jsx agora suporta seleção de plano
- Parâmetro ?plan=slug na URL do registro
- Traduções EN, ES, PT-BR para landing
- PayPal configurado no servidor (sandbox)
Versão: 1.54.0
- Add UserManagementController@store for creating users
- Add POST /api/admin/users endpoint
- Support user types: Free, Pro, Admin
- Auto-create 100-year subscription for Pro/Admin users
- Add user creation modal to Users.jsx
- Complete SaaS limit testing:
- Free user limits: 1 account, 10 categories, 3 budgets, 100 tx
- Middleware blocks correctly at limits
- Error messages are user-friendly
- Usage stats API working correctly
- Update SAAS_STATUS.md with test results
- Bump version to 1.51.0
## New Features
- Email notifications for overdue and upcoming payments
- User preferences page for notification settings
- Daily scheduler to send alerts at user-configured time
- Smart analysis: payable items, transfer suggestions between accounts
## Backend
- Migration for user_preferences table
- SendDuePaymentsAlert Artisan command
- DuePaymentsAlert Mailable with HTML/text templates
- UserPreferenceController with test-notification endpoint
- Scheduler config for notify:due-payments command
## Frontend
- Preferences.jsx page with notification toggle
- API service for preferences
- Route and menu link for settings
- Translations (PT-BR, EN, ES)
## Server
- Cron configured for Laravel scheduler
Version: 1.44.5
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
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
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
- Novo componente CategorySelector com categorias colapsadas por padrão
- Expande subcategorias ao clicar na categoria pai
- Busca integrada para filtrar categorias
- Usa position:fixed para evitar corte por overflow:hidden
- Aplicado em: modal de edição, filtros e modal de categorizar
- Layout de filtros reorganizado em 3 linhas harmônicas
- Traduções: common.noResults em ES, PT-BR, EN
v1.31.1