webmoney/ESTRUTURA_PROJETO.md
marco 54cccdd095 refactor: migração para desenvolvimento direto no servidor
- 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
2025-12-19 11:45:32 +01:00

12 KiB
Executable File
Raw Permalink Blame History

ESTRUTURA DO PROJETO WEBMONEY

Versão: 1.27.1
Última atualização: 13 de Dezembro de 2025


📁 Estrutura Geral

webmoney/
├── backend/                    # Laravel 12 API
├── frontend/                   # React 18 SPA
├── VERSION                     # Versão atual
├── CHANGELOG.md                # Histórico de versões
├── README.md                   # Documentação principal
├── ESTRUTURA_PROJETO.md        # Este arquivo
├── CREDENCIAIS_SERVIDOR.md     # Acessos (confidencial)
├── ESPECIFICACIONES_WEBMONEY.md # Especificação funcional
├── APRENDIZADOS_TECNICOS.md    # Soluções de problemas
└── .DIRETRIZES_DESENVOLVIMENTO_v3  # Regras de dev

🔧 Backend (Laravel 12)

backend/
├── app/
│   ├── Http/
│   │   ├── Controllers/Api/
│   │   │   ├── AccountController.php
│   │   │   ├── AuthController.php
│   │   │   ├── CategoryController.php
│   │   │   ├── CostCenterController.php
│   │   │   ├── DashboardController.php
│   │   │   ├── EmailTestController.php
│   │   │   ├── ImportController.php
│   │   │   ├── LiabilityAccountController.php
│   │   │   ├── RecurringTemplateController.php  # Transações recorrentes
│   │   │   ├── TransactionController.php
│   │   │   └── TransferDetectionController.php  # Inclui RefundDetection
│   │   │
│   │   └── Middleware/
│   │       └── SecurityHeaders.php          # Headers de segurança
│   │
│   ├── Models/
│   │   ├── Account.php
│   │   ├── Category.php
│   │   ├── CategoryKeyword.php
│   │   ├── CostCenter.php
│   │   ├── CostCenterKeyword.php
│   │   ├── ImportLog.php
│   │   ├── ImportMapping.php
│   │   ├── LiabilityAccount.php
│   │   ├── LiabilityInstallment.php
│   │   ├── RecurringInstance.php            # Parcelas de recorrência
│   │   ├── RecurringTemplate.php            # Templates de recorrência
│   │   ├── Transaction.php
│   │   └── User.php
│   │
│   ├── Services/
│   │   ├── Import/
│   │   │   ├── ImportService.php
│   │   │   ├── ExcelParser.php
│   │   │   ├── CsvParser.php
│   │   │   ├── OfxParser.php
│   │   │   └── PdfParser.php
│   │   └── RecurringService.php             # Lógica de recorrências
│   │
│   ├── Policies/
│   │   └── RecurringTemplatePolicy.php      # Autorização
│   │
│   └── Providers/
│       └── AppServiceProvider.php           # Rate limiting config
│
├── config/
│   ├── cors.php                             # CORS configuration
│   ├── sanctum.php                          # Token expiration
│   └── session.php                          # Cookie settings
│
├── database/migrations/                     # 30+ migrations
│
├── routes/
│   └── api.php                              # Todas as rotas da API
│
└── deploy.sh                                # Script de deploy

🎨 Frontend (React 18)

frontend/
├── src/
│   ├── components/
│   │   ├── CookieConsent.jsx               # Banner LGPD/GDPR
│   │   ├── CreateRecurrenceModal.jsx       # Modal criar recorrência
│   │   ├── CurrencySelector.jsx
│   │   ├── Footer.jsx                      # Rodapé
│   │   ├── IconSelector.jsx
│   │   ├── LanguageSelector.jsx
│   │   ├── Layout.jsx                      # Menu com grupos colapsáveis
│   │   ├── Modal.jsx
│   │   ├── ProtectedRoute.jsx
│   │   ├── Toast.jsx
│   │   └── dashboard/
│   │       ├── CalendarWidget.jsx          # Calendário interativo
│   │       ├── CashflowChart.jsx           # Gráfico fluxo de caixa
│   │       ├── OverdueWidget.jsx           # Widget de vencidos
│   │       ├── OverpaymentsAnalysis.jsx    # Análise sobrepagamentos
│   │       ├── PaymentVariancesChart.jsx   # Variações de pagamento
│   │       └── UpcomingWidget.jsx          # Próximos 7 dias
│   │
│   ├── pages/
│   │   ├── Accounts.jsx
│   │   ├── Categories.jsx
│   │   ├── CostCenters.jsx
│   │   ├── Dashboard.jsx                   # Inclui todos os widgets
│   │   ├── ImportTransactions.jsx
│   │   ├── LiabilityAccounts.jsx
│   │   ├── Login.jsx
│   │   ├── RecurringTransactions.jsx       # Página de recorrentes
│   │   ├── RefundDetection.jsx             # Detecção de reembolsos
│   │   ├── Register.jsx
│   │   ├── TransactionsByWeek.jsx
│   │   └── TransferDetection.jsx
│   │
│   ├── services/
│   │   └── api.js                          # Axios + todos services
│   │
│   ├── i18n/
│   │   ├── index.js                        # Config i18next + detecção país
│   │   └── locales/
│   │       ├── es.json
│   │       ├── en.json
│   │       └── pt-BR.json
│   │
│   ├── context/
│   │   └── AuthContext.jsx
│   │
│   └── App.jsx
│
├── dist/                                    # Build de produção
└── deploy.sh                                # Script de deploy

🔗 Endpoints da API

Autenticação

Método Endpoint Descrição
POST /api/register Criar conta
POST /api/login Login (retorna token)
POST /api/logout Logout
GET /api/user Usuário autenticado

Contas Bancárias

Método Endpoint Descrição
GET /api/accounts Listar contas
POST /api/accounts Criar conta
PUT /api/accounts/{id} Atualizar conta
DELETE /api/accounts/{id} Excluir conta
POST /api/accounts/{id}/recalculate-balance Recalcular saldo

Transações

Método Endpoint Descrição
GET /api/transactions Listar (com filtros)
GET /api/transactions/by-week Agrupadas por semana
POST /api/transactions Criar
PUT /api/transactions/{id} Atualizar
DELETE /api/transactions/{id} Excluir
POST /api/transactions/{id}/toggle-status Alternar status
POST /api/transactions/{id}/split Dividir transação

Dashboard

Método Endpoint Descrição
GET /api/dashboard/stats Estatísticas gerais
GET /api/dashboard/cashflow Fluxo de caixa mensal
GET /api/dashboard/overpayments Análise de sobrepagamentos
GET /api/dashboard/calendar Dados do calendário (mês)
GET /api/dashboard/calendar-day Transações de um dia
GET /api/dashboard/upcoming Próximos N dias pendentes
GET /api/dashboard/overdue Transações vencidas pendentes

Transações Recorrentes

Método Endpoint Descrição
GET /api/recurring Listar templates
POST /api/recurring Criar template
POST /api/recurring/from-transaction Criar de transação
GET /api/recurring/{id} Detalhe do template
PUT /api/recurring/{id} Atualizar template
DELETE /api/recurring/{id} Excluir template
POST /api/recurring/{id}/pause Pausar template
POST /api/recurring/{id}/resume Retomar template
GET /api/recurring/{id}/instances Listar parcelas
GET /api/recurring/pending Todas pendentes
GET /api/recurring/overdue Vencidas
GET /api/recurring/due-soon Próximas do vencimento
GET /api/recurring/frequencies Frequências disponíveis
POST /api/recurring-instances/{id}/pay Pagar (cria transação)
POST /api/recurring-instances/{id}/reconcile Conciliar
POST /api/recurring-instances/{id}/skip Pular
POST /api/recurring-instances/{id}/cancel Cancelar
GET /api/recurring-instances/{id}/candidates Transações candidatas

Duplicatas

Método Endpoint Descrição
GET /api/duplicates Listar grupos
POST /api/duplicates/{id}/ignore Ignorar par
DELETE /api/duplicates/{id}/auto-delete Auto-delete grupo
POST /api/duplicates/batch-ignore Ignorar em lote
DELETE /api/duplicates/batch-auto-delete Auto-delete em lote

Transferências

Método Endpoint Descrição
GET /api/transfers/potential Transferências potenciais
POST /api/transfers/confirm Confirmar transferência
POST /api/transfers/ignore Ignorar par

Detecção de Reembolsos

Método Endpoint Descrição
GET /api/refund-detection/potential Pares despesa/reembolso potenciais
POST /api/refund-detection/confirm Confirmar par de reembolso
POST /api/refund-detection/ignore Ignorar par

Importação

Método Endpoint Descrição
POST /api/import/parse Parsear arquivo
POST /api/import/execute Executar importação

<EFBFBD><EFBFBD> Banco de Dados

Tabelas Principais

Tabela Descrição
users Usuários do sistema
accounts Contas bancárias
transactions Transações financeiras
categories Categorias (175 pré-configuradas)
category_keywords Keywords para auto-classificação
cost_centers Centros de custo
cost_center_keywords Keywords de centros de custo
liability_accounts Contas passivo (financiamentos)
liability_installments Parcelas de financiamentos
recurring_templates Templates de transações recorrentes
recurring_instances Parcelas/instâncias de recorrências
import_logs Log de importações
import_mappings Mapeamentos salvos
ignored_duplicate_pairs Pares de duplicatas ignorados
ignored_transfer_pairs Pares de transferências ignorados
ignored_refund_pairs Pares de reembolso ignorados

Campos Especiais de Transações

Campo Tipo Descrição
is_transfer boolean É uma transferência
transfer_pair_id int ID da transação par
is_refund_pair boolean É parte de par reembolso
refund_linked_id int ID da transação vinculada (reembolso)
is_split boolean Foi dividida
split_from_id int ID da transação original
recurring_instance_id int ID da instância recorrente vinculada
import_hash string Hash SHA-256 para duplicidade
original_description string Descrição original do banco

🖥️ Servidor de Produção

Item Valor
IP 213.165.93.60
Domínio webmoney.cnxifly.com
Backend /var/www/webmoney/backend
Frontend /var/www/webmoney/frontend/dist
PHP 8.4-FPM
Web Server Nginx
SSL Let's Encrypt
Sessões Redis

🔐 Segurança Implementada

Recurso Configuração
Rate Limiting Login: 5/min, Register: 10/hour, API: 60/min
CORS Restrito a webmoney.cnxifly.com
Token Expiration 7 dias
Cookies HttpOnly, Secure, SameSite=lax, Encrypt=true
Headers X-XSS-Protection, X-Content-Type-Options, X-Frame-Options, CSP

📝 Comandos Úteis

Deploy

# Frontend
cd frontend && ./deploy.sh

# Backend
cd backend && ./deploy.sh

Conectar ao Servidor

sshpass -p 'Master9354' ssh root@213.165.93.60

Artisan no Servidor

cd /var/www/webmoney/backend && php artisan [comando]