Files
sigrhapf/Documents/sigfip/sigefp/ANALISE_PROFUNDA_FRONTEND_TESOURO.md
T

484 lines
16 KiB
Markdown
Raw Normal View History

# 🔍 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/plans` em `App.tsx`
- ❌ Item de menu "Planos de Tesouraria" em `navigation.ts`
- ❌ Integração com `PaymentAuthorizationService` para 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`, `taxCollectionAccountId` em `PaymentOrderDTO`
- ❌ 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`, `overdraftLimit` em `CashAccountDTO`
- ❌ Campo `parentId` em `CreateCashAccountDTO`
- ❌ 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:**
-`CashAccountDTO` não tem: `parentId`, `category`, `iban`, `swiftCode`, `overdraftLimit`
-`PaymentOrderDTO` não tem: `taxAmount`, `taxRetentionType`, `taxCollectionAccountId`
- ❌ Não existe `TreasuryPlanDTO` e `CreateTreasuryPlanDTO`
- ❌ 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 `BudgetExecution` relacionado
- ❌ 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/entries` mas não está no menu)
- ❌ Falta item "Fluxo de Caixa" (já existe rota `/treasury/cash-flow` mas não está no menu)
- ❌ Ordem dos itens não reflete fluxo lógico
**Menu atual:**
```typescript
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):**
```typescript
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/plans` para Planos de Tesouraria
- ✅ Rotas existentes: `/treasury/entries`, `/treasury/cash-flow` (mas não estão no menu)
**Rotas atuais:**
```tsx
<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:**
```tsx
<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 `CashAccountDTO` e `CreateCashAccountDTO`**
- Adicionar: `parentId`, `category`, `iban`, `swiftCode`, `overdraftLimit`
- [ ] **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`
- [ ] **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`
### 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:**
1. Criar tipos TypeScript
2. Criar serviço API
3. Criar página e componentes
4. Adicionar ao menu e rotas
5. 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:**
1. Atualizar tipos TypeScript
2. Atualizar formulário com novos campos
3. Atualizar página para mostrar hierarquia
4. Implementar edição
### 3. **Preparar para Retenção de Impostos**
**Motivo:** Backend em implementação, frontend precisa estar pronto.
**Ações:**
1. Atualizar `PaymentOrderDTO` com campos de retenção
2. Preparar UI para mostrar splits
3. 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 ✅
1. **Estrutura Organizada:** Páginas bem separadas por funcionalidade
2. **Componentes Reutilizáveis:** Uso de `ServerDataTable`, `PageHeader`, `StatusBadge`
3. **TypeScript:** Tipos definidos (mas desatualizados)
4. **Error Handling:** Uso de `toast` para feedback
5. **Loading States:** Implementados na maioria das páginas
### Pontos de Melhoria ⚠️
1. **Validações:** Falta validação de formato (IBAN, SWIFT)
2. **Error Messages:** Mensagens genéricas, falta contexto
3. **TODO Comments:** Vários TODOs não implementados
4. **Consistência:** Algumas páginas usam padrões diferentes
5. **Acessibilidade:** Falta labels ARIA, keyboard navigation
---
## 🎨 Análise UX/UI
### Pontos Positivos ✅
1. **Design Consistente:** Uso de Shadcn/ui components
2. **Feedback Visual:** Status badges, ícones
3. **Navegação:** Menu lateral organizado
### Pontos de Melhoria ⚠️
1. **Hierarquia Visual:** Falta mostrar relacionamentos (conta pai/filha)
2. **Feedback de Validação:** Falta mostrar quando teto é excedido
3. **Workflow Visual:** Falta indicar fluxo completo (Plano → Autorização → Pagamento)
4. **Dashboard:** Falta visão consolidada de Tesouro
5. **Alertas:** Falta sistema de alertas (nivelamento pendente, teto excedido)
---
## 📝 Conclusão
O frontend do módulo Tesouro está **parcialmente implementado** com **gaps críticos**:
1. **🔴 Crítico:** Plano de Tesouraria não existe no frontend (backend implementado)
2. **🔴 Crítico:** Hierarquia CUT não implementada (campos não expostos)
3. **🔴 Crítico:** Retenção de impostos não preparada (backend em implementação)
4. **🟡 Alta:** Sweeping não tem interface manual
5. **🟡 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