16 KiB
🔍 Análise Profunda do Frontend - Módulo Tesouro
Data: 2025-01-XX
Objetivo: Analisar o frontend do módulo Tesouro e identificar gaps, melhorias e funcionalidades faltantes
📊 Resumo Executivo
| Categoria | Status | Problemas Identificados |
|---|---|---|
| Páginas Implementadas | ⚠️ Parcial | 8/10 páginas (faltam 2 críticas) |
| Tipos TypeScript | ❌ Desatualizados | Não refletem melhorias do backend |
| Integrações API | ⚠️ Incompletas | Faltam endpoints novos |
| Funcionalidades Backend | ❌ Não expostas | Plano de Tesouraria, Sweeping, Retenção Impostos |
| UX/UI | ⚠️ Básico | Falta feedback visual, validações, hierarquia CUT |
🔴 Problemas Críticos Identificados
1. Plano de Tesouraria (PT) - NÃO IMPLEMENTADO 🔴 CRÍTICO
Backend: ✅ Implementado (TreasuryPlanService, TreasuryPlanRepository)
Frontend: ❌ NÃO EXISTE
Impacto:
- Usuário não pode criar/gerenciar planos de tesouraria
- Não há validação visual de tetos diários
- Não há feedback quando teto é excedido
- Funcionalidade crítica do Master Plan não acessível
O que falta:
- ❌ Página
TreasuryPlansPage.tsx - ❌ Componente
TreasuryPlanFormModal.tsx - ❌ Tipos TypeScript (
TreasuryPlanDTO,CreateTreasuryPlanDTO) - ❌ Serviço
treasuryService.getTreasuryPlans(),createTreasuryPlan(),approvePlan() - ❌ Rota
/treasury/plansemApp.tsx - ❌ Item de menu "Planos de Tesouraria" em
navigation.ts - ❌ Integração com
PaymentAuthorizationServicepara mostrar validação de teto
2. Retenção de Impostos (RN03) - NÃO IMPLEMENTADO 🔴 CRÍTICO
Backend: ⏳ Em implementação (Agent - Fase 2.0)
Frontend: ❌ NÃO EXISTE
Impacto:
- Não há visualização de splits de pagamento (líquido + imposto)
- Não há campos para retenção em
PaymentOrderDTO - Não há feedback visual do Two-Legged Payment
O que falta:
- ❌ Campos
taxAmount,taxRetentionType,taxCollectionAccountIdemPaymentOrderDTO - ❌ Visualização de splits em
PaymentOrdersPage - ❌ Indicador visual de retenção aplicada
- ❌ Detalhes de transferências (Vendor + Tax) em
TreasuryPaymentsPage
3. Hierarquia CUT - NÃO IMPLEMENTADO 🔴 CRÍTICO
Backend: ⏳ Campos adicionados (Agent - Fase 1.0)
Frontend: ❌ NÃO EXISTE
Impacto:
- Não é possível configurar hierarquia de contas
- Não há visualização de contas filhas
- Não há consolidação visual de saldos da CUT
- Não há seleção de conta pai ao criar conta
O que falta:
- ❌ Campos
parentId,category,iban,swiftCode,overdraftLimitemCashAccountDTO - ❌ Campo
parentIdemCreateCashAccountDTO - ❌ Select de conta pai em
CashAccountFormModal - ❌ Select de categoria (CENTRAL_CUT, SUB_ACCOUNT, TRANSIT, REVENUE)
- ❌ Campos IBAN, SWIFT em
CashAccountFormModal - ❌ Visualização hierárquica em
CashAccountsPage(árvore) - ❌ Cálculo e exibição de saldo consolidado da CUT
4. Sweeping Service - NÃO IMPLEMENTADO 🟡 ALTA
Backend: ✅ Implementado (SweepingService com job agendado)
Frontend: ❌ NÃO EXISTE
Impacto:
- Não há interface para nivelamento manual
- Não há visualização de histórico de nivelamentos
- Não há alertas de nivelamento pendente
- Não há dashboard de contas de trânsito
O que falta:
- ❌ Página ou seção para nivelamento manual
- ❌ Botão "Nivelar Conta" em
CashAccountsPage(para contas TRANSIT) - ❌ Histórico de nivelamentos
- ❌ Alertas visuais de contas com saldo > 0
🟡 Problemas de Média Prioridade
5. Tipos TypeScript Desatualizados
Arquivo: sigefp-frontend/src/types/treasury.ts
Problemas:
- ❌
CashAccountDTOnão tem:parentId,category,iban,swiftCode,overdraftLimit - ❌
PaymentOrderDTOnão tem:taxAmount,taxRetentionType,taxCollectionAccountId - ❌ Não existe
TreasuryPlanDTOeCreateTreasuryPlanDTO - ❌ Não existe
PaymentSplitDTO(para Two-Legged Payment)
Impacto:
- TypeScript não valida campos novos
- Autocomplete não funciona
- Compilação pode falhar quando backend retornar novos campos
6. Serviços API Incompletos
Arquivo: sigefp-frontend/src/services/treasuryService.ts
Faltam métodos:
- ❌
getTreasuryPlans()- Listar planos - ❌
getTreasuryPlanById()- Buscar plano - ❌
createTreasuryPlan()- Criar plano - ❌
approveTreasuryPlan()- Aprovar plano - ❌
updateCashAccount()- Atualizar conta (com novos campos) - ❌
sweepAccountManually()- Nivelamento manual - ❌
getCUTConsolidatedBalance()- Saldo consolidado CUT
Impacto:
- Frontend não consegue chamar endpoints novos
- Funcionalidades do backend não acessíveis
7. Páginas Existentes - Melhorias Necessárias
7.1 CashAccountsPage.tsx
Problemas:
- ❌ Não mostra hierarquia (contas filhas)
- ❌ Não mostra categoria (CENTRAL_CUT, TRANSIT, etc.)
- ❌ Não mostra IBAN, SWIFT
- ❌ Não permite editar conta (comentário: "Update not implemented yet")
- ❌ Não mostra limite de descoberto
- ❌ Não permite selecionar conta pai ao criar
Melhorias sugeridas:
- Adicionar coluna "Categoria"
- Adicionar coluna "Conta Pai" (com link)
- Adicionar visualização hierárquica (árvore)
- Adicionar botão "Nivelar" para contas TRANSIT
- Implementar edição de conta
7.2 CashAccountFormModal.tsx
Problemas:
- ❌ Não tem campo
parentId(conta pai) - ❌ Não tem campo
category(categoria) - ❌ Não tem campo
iban(IBAN) - ❌ Não tem campo
swiftCode(SWIFT) - ❌ Não tem campo
overdraftLimit(limite descoberto) - ❌ Validação não inclui novos campos
Melhorias sugeridas:
- Adicionar Select de conta pai (filtrado por categoria CUT_PRINCIPAL)
- Adicionar Select de categoria
- Adicionar Input para IBAN (com validação formato)
- Adicionar Input para SWIFT (com validação formato)
- Adicionar Input numérico para limite de descoberto
7.3 PaymentOrdersPage.tsx
Problemas:
- ❌ Não mostra
taxAmount(retenção de impostos) - ❌ Não mostra splits de pagamento (Two-Legged)
- ❌ Não mostra link para
BudgetExecutionrelacionado - ❌ Não mostra validação de teto do Plano de Tesouraria
- ❌ Botão "Visualizar detalhes" não implementado (TODO)
Melhorias sugeridas:
- Adicionar coluna "Imposto Retido" (quando aplicável)
- Adicionar coluna "Valor Líquido" destacada
- Adicionar badge se excedeu teto diário
- Implementar modal de detalhes com splits
- Adicionar link para execução orçamentária
7.4 PaymentAuthorizationsPage.tsx
Problemas:
- ❌ Não mostra validação de teto do Plano de Tesouraria
- ❌ Não mostra motivo de rejeição se teto excedido
- ❌ Não mostra valor do teto disponível
- ❌ Não integra com
TreasuryPlanService.validateAvailability()
Melhorias sugeridas:
- Adicionar validação antes de aprovar (chamar API)
- Mostrar alerta se teto excedido
- Mostrar teto disponível no card de autorização
- Adicionar motivo de rejeição "CEILING_EXCEEDED"
8. Menu de Navegação Incompleto
Arquivo: sigefp-frontend/src/config/navigation.ts
Problemas:
- ❌ Falta item "Planos de Tesouraria" (
/treasury/plans) - ❌ Falta item "Entradas" (já existe rota
/treasury/entriesmas não está no menu) - ❌ Falta item "Fluxo de Caixa" (já existe rota
/treasury/cash-flowmas não está no menu) - ❌ Ordem dos itens não reflete fluxo lógico
Menu atual:
items: [
{ name: 'Contas de Caixa', href: '/treasury/cash-accounts', icon: Wallet },
{ name: 'Autorizações', href: '/treasury/authorizations', icon: ShieldCheck },
{ name: 'Lotes de Pagamento', href: '/treasury/batches', icon: Send },
{ name: 'Ordens de Pagamento', href: '/treasury/orders', icon: FileText },
{ name: 'Conciliação', href: '/treasury/reconciliation', icon: Layers },
{ name: 'Confirmações', href: '/treasury/confirmations', icon: CheckCircle },
]
Menu sugerido (fluxo lógico):
items: [
{ name: 'Planos de Tesouraria', href: '/treasury/plans', icon: Calendar }, // NOVO
{ name: 'Contas de Caixa', href: '/treasury/cash-accounts', icon: Wallet },
{ name: 'Entradas', href: '/treasury/entries', icon: FileText }, // ADICIONAR
{ name: 'Autorizações', href: '/treasury/authorizations', icon: ShieldCheck },
{ name: 'Lotes de Pagamento', href: '/treasury/batches', icon: Send },
{ name: 'Ordens de Pagamento', href: '/treasury/orders', icon: FileText },
{ name: 'Confirmações', href: '/treasury/confirmations', icon: CheckCircle },
{ name: 'Fluxo de Caixa', href: '/treasury/cash-flow', icon: TrendingUp }, // ADICIONAR
{ name: 'Conciliação', href: '/treasury/reconciliation', icon: Layers },
]
9. Rotas em App.tsx - Incompletas
Arquivo: sigefp-frontend/src/App.tsx
Problemas:
- ❌ Falta rota
/treasury/planspara Planos de Tesouraria - ✅ Rotas existentes:
/treasury/entries,/treasury/cash-flow(mas não estão no menu)
Rotas atuais:
<Route path="/treasury/cash-accounts" element={<CashAccountsPage />} />
<Route path="/treasury/entries" element={<TreasuryEntriesPage />} />
<Route path="/treasury/authorizations" element={<PaymentAuthorizationsPage />} />
<Route path="/treasury/cash-flow" element={<CashFlowPage />} />
<Route path="/treasury/reconciliation" element={<BankReconciliationPage />} />
<Route path="/treasury/batches" element={<PaymentBatchesPage />} />
<Route path="/treasury/orders" element={<PaymentOrdersPage />} />
<Route path="/treasury/confirmations" element={<TreasuryPaymentsPage />} />
Falta:
<Route path="/treasury/plans" element={<TreasuryPlansPage />} /> // NOVO
🟢 Problemas de Baixa Prioridade (Melhorias UX)
10. Feedback Visual e Validações
Problemas:
- ⚠️ Falta feedback quando teto de tesouraria é excedido
- ⚠️ Falta indicador visual de hierarquia de contas
- ⚠️ Falta validação de formato IBAN/SWIFT no frontend
- ⚠️ Falta tooltip explicando categorias de conta
- ⚠️ Falta loading states em algumas operações
11. Dashboard e KPIs
Problemas:
- ⚠️ Dashboard não mostra KPIs de Tesouro
- ⚠️ Não há visão consolidada de saldo CUT
- ⚠️ Não há alertas de nivelamento pendente
- ⚠️ Não há gráficos de fluxo de caixa
📋 Checklist de Implementação
Prioridade 1: Crítico (Funcionalidades Backend Não Expostas)
-
Criar
TreasuryPlansPage.tsx- Listar planos (DRAFT, APPROVED, CLOSED)
- Criar novo plano
- Aprovar plano
- Visualizar teto vs executado
- Gráfico de execução
-
Atualizar
CashAccountDTOeCreateCashAccountDTO- Adicionar:
parentId,category,iban,swiftCode,overdraftLimit
- Adicionar:
-
Atualizar
CashAccountFormModal.tsx- Adicionar campos novos
- Select de conta pai
- Select de categoria
- Validação IBAN/SWIFT
-
Atualizar
CashAccountsPage.tsx- Mostrar hierarquia (árvore)
- Mostrar categoria
- Botão "Nivelar" para contas TRANSIT
- Implementar edição
-
Atualizar
PaymentOrderDTO- Adicionar:
taxAmount,taxRetentionType,taxCollectionAccountId
- Adicionar:
-
Atualizar
PaymentOrdersPage.tsx- Mostrar retenção de impostos
- Mostrar splits (Two-Legged Payment)
- Implementar modal de detalhes
-
Atualizar
PaymentAuthorizationsPage.tsx- Integrar validação de teto
- Mostrar alerta se teto excedido
- Mostrar teto disponível
-
Adicionar métodos em
treasuryService.ts- Métodos para TreasuryPlan
- Método para nivelamento manual
- Método para saldo consolidado CUT
-
Atualizar
navigation.ts- Adicionar "Planos de Tesouraria"
- Adicionar "Entradas" e "Fluxo de Caixa" ao menu
- Reorganizar ordem lógica
-
Atualizar
App.tsx- Adicionar rota
/treasury/plans
- Adicionar rota
Prioridade 2: Alta (Melhorias UX)
- Visualização hierárquica de contas (árvore)
- Dashboard de KPIs de Tesouro
- Alertas de nivelamento pendente
- Validação de formato IBAN/SWIFT
- Tooltips explicativos
Prioridade 3: Média (Otimizações)
- Loading states consistentes
- Error handling melhorado
- Cache de dados frequentes
- Otimização de queries
📊 Matriz de Gaps Backend vs Frontend
| Funcionalidade Backend | Status Backend | Status Frontend | Gap |
|---|---|---|---|
| TreasuryPlan (PT) | ✅ Implementado | ❌ Não existe | 🔴 Crítico |
| Retenção Impostos (RN03) | ⏳ Em implementação | ❌ Não existe | 🔴 Crítico |
| Hierarquia CUT | ⏳ Campos adicionados | ❌ Não existe | 🔴 Crítico |
| Sweeping Service | ✅ Implementado | ❌ Não existe | 🟡 Alta |
| Campos novos CashAccount | ✅ Implementado | ❌ Não existe | 🔴 Crítico |
| Validação teto diário | ✅ Implementado | ❌ Não integrado | 🔴 Crítico |
| TreasuryEntry | ✅ Implementado | ✅ Existe | ✅ OK |
| CashFlow | ✅ Implementado | ✅ Existe | ✅ OK |
| BankReconciliation | ✅ Implementado | ✅ Existe | ✅ OK |
| PaymentAuthorization | ✅ Implementado | ✅ Existe | ⚠️ Melhorias |
🎯 Recomendações Prioritárias
1. Implementar Plano de Tesouraria (URGENTE)
Motivo: Funcionalidade crítica do Master Plan, backend já implementado, usuário não consegue usar.
Ações:
- Criar tipos TypeScript
- Criar serviço API
- Criar página e componentes
- Adicionar ao menu e rotas
- Integrar validação em
PaymentAuthorizationsPage
2. Atualizar CashAccount (URGENTE)
Motivo: Backend tem novos campos, frontend não consegue criar/editar contas com hierarquia CUT.
Ações:
- Atualizar tipos TypeScript
- Atualizar formulário com novos campos
- Atualizar página para mostrar hierarquia
- Implementar edição
3. Preparar para Retenção de Impostos
Motivo: Backend em implementação, frontend precisa estar pronto.
Ações:
- Atualizar
PaymentOrderDTOcom campos de retenção - Preparar UI para mostrar splits
- Adicionar visualização de Two-Legged Payment
📈 Estatísticas
| Métrica | Valor |
|---|---|
| Páginas Implementadas | 8/10 (80%) |
| Páginas Faltantes Críticas | 1 (TreasuryPlansPage) |
| Tipos TypeScript Atualizados | 0/5 (0%) |
| Serviços API Completos | 60% |
| Integrações Backend | 40% |
| Gap Crítico | 🔴 Alto |
🔍 Análise de Qualidade do Código
Pontos Positivos ✅
- Estrutura Organizada: Páginas bem separadas por funcionalidade
- Componentes Reutilizáveis: Uso de
ServerDataTable,PageHeader,StatusBadge - TypeScript: Tipos definidos (mas desatualizados)
- Error Handling: Uso de
toastpara feedback - Loading States: Implementados na maioria das páginas
Pontos de Melhoria ⚠️
- Validações: Falta validação de formato (IBAN, SWIFT)
- Error Messages: Mensagens genéricas, falta contexto
- TODO Comments: Vários TODOs não implementados
- Consistência: Algumas páginas usam padrões diferentes
- Acessibilidade: Falta labels ARIA, keyboard navigation
🎨 Análise UX/UI
Pontos Positivos ✅
- Design Consistente: Uso de Shadcn/ui components
- Feedback Visual: Status badges, ícones
- Navegação: Menu lateral organizado
Pontos de Melhoria ⚠️
- Hierarquia Visual: Falta mostrar relacionamentos (conta pai/filha)
- Feedback de Validação: Falta mostrar quando teto é excedido
- Workflow Visual: Falta indicar fluxo completo (Plano → Autorização → Pagamento)
- Dashboard: Falta visão consolidada de Tesouro
- Alertas: Falta sistema de alertas (nivelamento pendente, teto excedido)
📝 Conclusão
O frontend do módulo Tesouro está parcialmente implementado com gaps críticos:
- 🔴 Crítico: Plano de Tesouraria não existe no frontend (backend implementado)
- 🔴 Crítico: Hierarquia CUT não implementada (campos não expostos)
- 🔴 Crítico: Retenção de impostos não preparada (backend em implementação)
- 🟡 Alta: Sweeping não tem interface manual
- 🟡 Média: Tipos TypeScript desatualizados
Recomendação: Priorizar implementação do Plano de Tesouraria e atualização dos tipos/campos de CashAccount, pois são funcionalidades críticas já implementadas no backend.
Documento gerado em: 2025-01-XX
Versão: 1.0