feat: otimização de performance e ajustes finais
This commit is contained in:
@@ -0,0 +1,455 @@
|
||||
# 🔄 Análise Completa do Fluxo de Negócio - SIGEFP
|
||||
|
||||
**Data:** 2025-01-XX
|
||||
**Objetivo:** Analisar o fluxo completo de negócio desde a elaboração do orçamento até o pagamento, identificando lacunas e melhorias necessárias
|
||||
|
||||
---
|
||||
|
||||
## 🎯 Problema Identificado
|
||||
|
||||
O usuário está tendo dificuldade em:
|
||||
1. **Iniciar o processo de elaboração de orçamento**
|
||||
2. **Entender como a execução se conecta com o Tesouro**
|
||||
3. **Compreender o fluxo completo end-to-end**
|
||||
|
||||
---
|
||||
|
||||
## 📊 Fluxo de Negócio Completo (Como DEVERIA ser)
|
||||
|
||||
### Fase 1: Elaboração e Aprovação do Orçamento
|
||||
|
||||
```
|
||||
1. Criar Exercício Fiscal
|
||||
└─> FiscalYearsPage: Criar novo exercício (status: DRAFT)
|
||||
|
||||
2. Criar Linhas Orçamentárias
|
||||
└─> BudgetLinesPage: Criar rubricas (ex: "Aquisição de Medicamentos")
|
||||
|
||||
3. Registrar Dotações (LEI DO ORÇAMENTO) ⚠️ FALTANDO NO MENU
|
||||
└─> BudgetEntryPage: Registrar dotação inicial via Lei
|
||||
└─> Tipo: INITIAL_ALLOCATION
|
||||
└─> Referência: "Lei nº X/2024"
|
||||
└─> Atualiza: BudgetLine.totalAllocated
|
||||
|
||||
4. Aprovar e Abrir Exercício Fiscal
|
||||
└─> FiscalYearsPage: Abrir exercício (status: OPEN)
|
||||
```
|
||||
|
||||
**Status Atual:**
|
||||
- ✅ Exercício Fiscal: Implementado
|
||||
- ✅ Linhas Orçamentárias: Implementado
|
||||
- ❌ **Dotações (BudgetEntry): FALTANDO NO MENU PRINCIPAL**
|
||||
- Existe apenas dentro do modal de Linhas Orçamentárias
|
||||
- Não há página dedicada para gestão de dotações
|
||||
|
||||
---
|
||||
|
||||
### Fase 2: Execução Orçamentária
|
||||
|
||||
```
|
||||
1. Empenho (COMMITMENT)
|
||||
└─> Origem: Módulo RH (folha de pagamento) ou Compras
|
||||
└─> BudgetExecutionService: Criar COMMITMENT
|
||||
└─> Validação: Verifica availableBalance
|
||||
└─> Atualiza: BudgetLine.totalCommitted
|
||||
|
||||
2. Liquidação (LIQUIDATION)
|
||||
└─> Origem: Após entrega de bem/serviço
|
||||
└─> BudgetExecutionService: Criar LIQUIDATION
|
||||
└─> Validação: Deve ter COMMITMENT correspondente
|
||||
└─> Atualiza: BudgetLine (cálculo de saldo)
|
||||
|
||||
3. Pagamento (PAYMENT)
|
||||
└─> Origem: Módulo Tesouro (após confirmação de pagamento)
|
||||
└─> TreasuryPaymentService: Confirma pagamento
|
||||
└─> BudgetIntegrationService: Cria PAYMENT automaticamente
|
||||
└─> Atualiza: BudgetLine (cálculo final)
|
||||
```
|
||||
|
||||
**Status Atual:**
|
||||
- ✅ COMMITMENT: Implementado (via RH)
|
||||
- ✅ LIQUIDATION: Implementado (via RH)
|
||||
- ✅ PAYMENT: Implementado (via Tesouro - automático)
|
||||
- ⚠️ **Visualização: BudgetExecutionPage mostra tudo, mas não permite criar manualmente**
|
||||
|
||||
---
|
||||
|
||||
### Fase 3: Processo de Pagamento (Tesouro)
|
||||
|
||||
```
|
||||
1. Criação de Ordem de Pagamento
|
||||
└─> PaymentOrdersPage: Criar ordem
|
||||
└─> Origem: PayrollRun (RH) ou Manual
|
||||
└─> Validação: Verifica saldo orçamentário (se aplicável)
|
||||
|
||||
2. Autorização de Pagamento
|
||||
└─> PaymentAuthorizationsPage: Criar autorização
|
||||
└─> Workflow: Aprovação hierárquica (níveis 1, 2, 3)
|
||||
└─> Validação: Verifica disponibilidade de caixa
|
||||
|
||||
3. Programação de Pagamento
|
||||
└─> PaymentBatchesPage: Criar lote
|
||||
└─> Adicionar ordens ao lote
|
||||
└─> Compromete: CashAccount.availableBalance
|
||||
|
||||
4. Execução de Pagamento
|
||||
└─> TreasuryPaymentsPage: Confirmar pagamento
|
||||
└─> Atualiza: CashAccount.currentBalance
|
||||
└─> Cria: BudgetExecution (PAYMENT) automaticamente
|
||||
└─> Registra: CashFlow (OUTFLOW)
|
||||
|
||||
5. Conciliação Bancária
|
||||
└─> BankReconciliationPage: Importar extrato
|
||||
└─> Matching automático
|
||||
└─> Ajustes manuais (se necessário)
|
||||
```
|
||||
|
||||
**Status Atual:**
|
||||
- ✅ Todas as funcionalidades implementadas
|
||||
- ✅ Integração com Orçamento funcionando
|
||||
|
||||
---
|
||||
|
||||
## 🔍 Problemas Identificados
|
||||
|
||||
### 1. **Menu de Orçamento Incompleto** 🔴 CRÍTICO
|
||||
|
||||
**Menu Atual:**
|
||||
```
|
||||
Orçamento
|
||||
├── Exercícios Fiscais
|
||||
├── Linhas Orçamentais
|
||||
└── Execução
|
||||
```
|
||||
|
||||
**O que está faltando:**
|
||||
- ❌ **"Dotações" ou "Elaboração de Orçamento"** (BudgetEntry)
|
||||
- Esta é a funcionalidade PRINCIPAL para iniciar o processo
|
||||
- Atualmente só acessível via modal dentro de Linhas Orçamentárias
|
||||
- Não há página dedicada para gestão de dotações
|
||||
|
||||
**Impacto:**
|
||||
- Usuário não sabe como iniciar o processo de elaboração
|
||||
- Não há visão consolidada de todas as dotações
|
||||
- Dificulta auditoria e rastreamento
|
||||
|
||||
---
|
||||
|
||||
### 2. **Menu de Tesouro Desorganizado** 🟡 MÉDIO
|
||||
|
||||
**Menu Atual:**
|
||||
```
|
||||
Tesouro
|
||||
├── Contas de Caixa
|
||||
├── Autorizações
|
||||
├── Lotes de Pagamento
|
||||
├── Ordens de Pagamento
|
||||
├── Conciliação
|
||||
└── Confirmações
|
||||
```
|
||||
|
||||
**Problemas:**
|
||||
- Ordem não segue o fluxo lógico de negócio
|
||||
- Falta "Entradas de Tesouraria" (TreasuryEntry) no menu
|
||||
- "Fluxo de Caixa" não está no menu (existe a página)
|
||||
|
||||
**Ordem Sugerida (seguindo o fluxo):**
|
||||
```
|
||||
Tesouro
|
||||
├── Contas de Caixa (pré-requisito)
|
||||
├── Entradas de Tesouraria (novo)
|
||||
├── Autorizações (workflow de aprovação)
|
||||
├── Ordens de Pagamento (criação)
|
||||
├── Lotes de Pagamento (agrupamento)
|
||||
├── Confirmações (execução)
|
||||
├── Fluxo de Caixa (monitoramento)
|
||||
└── Conciliação (fechamento)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 3. **Falta de Página para BudgetEntry** 🔴 CRÍTICO
|
||||
|
||||
**Situação Atual:**
|
||||
- BudgetEntry só pode ser criado via modal dentro de BudgetLineEntriesModal
|
||||
- Não há página dedicada para:
|
||||
- Listar todas as dotações
|
||||
- Criar dotações independentemente
|
||||
- Visualizar histórico de alterações
|
||||
- Filtrar por exercício fiscal, rubrica, tipo
|
||||
|
||||
**Necessário:**
|
||||
- Criar `BudgetEntriesPage.tsx`
|
||||
- Adicionar rota `/budget/entries`
|
||||
- Adicionar ao menu de navegação
|
||||
|
||||
---
|
||||
|
||||
### 4. **Falta de Página para TreasuryEntry** 🟡 MÉDIO
|
||||
|
||||
**Situação Atual:**
|
||||
- TreasuryEntry existe no backend
|
||||
- Existe `TreasuryEntriesPage.tsx`
|
||||
- Mas não está no menu de navegação
|
||||
|
||||
**Necessário:**
|
||||
- Adicionar ao menu de navegação
|
||||
|
||||
---
|
||||
|
||||
## 📋 Correções Necessárias
|
||||
|
||||
### Prioridade 1: Crítico
|
||||
|
||||
#### 1. Adicionar "Dotações" ao Menu de Orçamento
|
||||
|
||||
**Arquivo:** `sigefp-frontend/src/config/navigation.ts`
|
||||
|
||||
```typescript
|
||||
{
|
||||
id: 'budget',
|
||||
name: 'Orçamento',
|
||||
description: 'Gestão orçamental',
|
||||
icon: Wallet,
|
||||
color: 'budget',
|
||||
items: [
|
||||
{ name: 'Exercícios Fiscais', href: '/budget/fiscal-years', icon: Calendar },
|
||||
{ name: 'Linhas Orçamentais', href: '/budget/lines', icon: PiggyBank },
|
||||
{ name: 'Dotações', href: '/budget/entries', icon: FileText }, // NOVO
|
||||
{ name: 'Execução', href: '/budget/execution', icon: TrendingUp },
|
||||
],
|
||||
}
|
||||
```
|
||||
|
||||
#### 2. Criar BudgetEntriesPage
|
||||
|
||||
**Arquivo:** `sigefp-frontend/src/modules/budget/pages/BudgetEntriesPage.tsx`
|
||||
|
||||
**Funcionalidades:**
|
||||
- Listar todas as dotações (BudgetEntry)
|
||||
- Criar nova dotação
|
||||
- Filtrar por:
|
||||
- Exercício Fiscal
|
||||
- Linha Orçamentária
|
||||
- Tipo (INITIAL_ALLOCATION, SUPPLEMENTARY_CREDIT, etc.)
|
||||
- Período
|
||||
- Visualizar histórico
|
||||
- Exportar relatórios
|
||||
|
||||
#### 3. Adicionar Rota
|
||||
|
||||
**Arquivo:** `sigefp-frontend/src/App.tsx`
|
||||
|
||||
```typescript
|
||||
{/* Budget Module */}
|
||||
<Route path="/budget/fiscal-years" element={<FiscalYearsPage />} />
|
||||
<Route path="/budget/lines" element={<BudgetLinesPage />} />
|
||||
<Route path="/budget/entries" element={<BudgetEntriesPage />} /> {/* NOVO */}
|
||||
<Route path="/budget/execution" element={<BudgetExecutionPage />} />
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Prioridade 2: Médio
|
||||
|
||||
#### 4. Reorganizar Menu de Tesouro
|
||||
|
||||
**Arquivo:** `sigefp-frontend/src/config/navigation.ts`
|
||||
|
||||
```typescript
|
||||
{
|
||||
id: 'treasury',
|
||||
name: 'Tesouro',
|
||||
description: 'Pagamentos e transferências',
|
||||
icon: Landmark,
|
||||
color: 'treasury',
|
||||
items: [
|
||||
{ name: 'Contas de Caixa', href: '/treasury/cash-accounts', icon: Wallet },
|
||||
{ name: 'Entradas', href: '/treasury/entries', icon: FileText }, // NOVO
|
||||
{ name: 'Autorizações', href: '/treasury/authorizations', icon: ShieldCheck },
|
||||
{ name: 'Ordens de Pagamento', href: '/treasury/orders', icon: FileText },
|
||||
{ name: 'Lotes de Pagamento', href: '/treasury/batches', icon: Send },
|
||||
{ name: 'Confirmações', href: '/treasury/confirmations', icon: CheckCircle },
|
||||
{ name: 'Fluxo de Caixa', href: '/treasury/cash-flow', icon: TrendingUp }, // NOVO
|
||||
{ name: 'Conciliação', href: '/treasury/reconciliation', icon: Layers },
|
||||
],
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔄 Fluxo Visual Completo
|
||||
|
||||
### Fluxo 1: Elaboração do Orçamento
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────┐
|
||||
│ 1. CRIAR EXERCÍCIO FISCAL │
|
||||
│ /budget/fiscal-years │
|
||||
│ Status: DRAFT │
|
||||
└─────────────────┬───────────────────────────────────────┘
|
||||
│
|
||||
▼
|
||||
┌─────────────────────────────────────────────────────────┐
|
||||
│ 2. CRIAR LINHAS ORÇAMENTÁRIAS │
|
||||
│ /budget/lines │
|
||||
│ Ex: "Aquisição de Medicamentos" │
|
||||
└─────────────────┬───────────────────────────────────────┘
|
||||
│
|
||||
▼
|
||||
┌─────────────────────────────────────────────────────────┐
|
||||
│ 3. REGISTRAR DOTAÇÕES (LEI DO ORÇAMENTO) ⚠️ FALTANDO │
|
||||
│ /budget/entries (NOVO) │
|
||||
│ Tipo: INITIAL_ALLOCATION │
|
||||
│ Referência: "Lei nº 12/2024" │
|
||||
│ Valor: 10.000.000 XOF │
|
||||
└─────────────────┬───────────────────────────────────────┘
|
||||
│
|
||||
▼
|
||||
┌─────────────────────────────────────────────────────────┐
|
||||
│ 4. ABRIR EXERCÍCIO FISCAL │
|
||||
│ /budget/fiscal-years │
|
||||
│ Status: OPEN │
|
||||
│ ✅ Orçamento pronto para execução │
|
||||
└─────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Fluxo 2: Execução Orçamentária
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────┐
|
||||
│ 1. EMPENHO (COMMITMENT) │
|
||||
│ Origem: RH (folha) ou Compras │
|
||||
│ BudgetExecutionService.createCommitment() │
|
||||
│ ✅ Saldo comprometido │
|
||||
└─────────────────┬───────────────────────────────────────┘
|
||||
│
|
||||
▼
|
||||
┌─────────────────────────────────────────────────────────┐
|
||||
│ 2. LIQUIDAÇÃO (LIQUIDATION) │
|
||||
│ Origem: Após entrega de bem/serviço │
|
||||
│ BudgetExecutionService.createLiquidation() │
|
||||
│ ✅ Dívida reconhecida │
|
||||
└─────────────────┬───────────────────────────────────────┘
|
||||
│
|
||||
▼
|
||||
┌─────────────────────────────────────────────────────────┐
|
||||
│ 3. PAGAMENTO (PAYMENT) │
|
||||
│ Origem: Tesouro (após confirmação) │
|
||||
│ BudgetIntegrationService.createPayment() │
|
||||
│ ✅ Pagamento efetivado │
|
||||
└─────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Fluxo 3: Processo de Pagamento (Tesouro)
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────┐
|
||||
│ 1. CRIAR ORDEM DE PAGAMENTO │
|
||||
│ /treasury/orders │
|
||||
│ Origem: PayrollRun ou Manual │
|
||||
└─────────────────┬───────────────────────────────────────┘
|
||||
│
|
||||
▼
|
||||
┌─────────────────────────────────────────────────────────┐
|
||||
│ 2. AUTORIZAR PAGAMENTO │
|
||||
│ /treasury/authorizations │
|
||||
│ Workflow: Aprovação hierárquica │
|
||||
└─────────────────┬───────────────────────────────────────┘
|
||||
│
|
||||
▼
|
||||
┌─────────────────────────────────────────────────────────┐
|
||||
│ 3. CRIAR LOTE DE PAGAMENTO │
|
||||
│ /treasury/batches │
|
||||
│ Adicionar ordens ao lote │
|
||||
└─────────────────┬───────────────────────────────────────┘
|
||||
│
|
||||
▼
|
||||
┌─────────────────────────────────────────────────────────┐
|
||||
│ 4. CONFIRMAR PAGAMENTO │
|
||||
│ /treasury/confirmations │
|
||||
│ ✅ Cria BudgetExecution (PAYMENT) automaticamente │
|
||||
└─────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📊 Integrações Entre Módulos
|
||||
|
||||
### RH → Orçamento
|
||||
|
||||
```
|
||||
PayrollRun (COMPLETED)
|
||||
↓
|
||||
PaymentOrder criado
|
||||
↓
|
||||
BudgetExecution (COMMITMENT) criado
|
||||
↓
|
||||
BudgetExecution (LIQUIDATION) criado (no encerramento)
|
||||
```
|
||||
|
||||
### Orçamento → Tesouro
|
||||
|
||||
```
|
||||
BudgetExecution (LIQUIDATION) existe
|
||||
↓
|
||||
PaymentOrder criado (com budgetLineId)
|
||||
↓
|
||||
PaymentOrder executado
|
||||
↓
|
||||
TreasuryPayment confirmado
|
||||
↓
|
||||
BudgetExecution (PAYMENT) criado automaticamente
|
||||
```
|
||||
|
||||
### Tesouro → Orçamento
|
||||
|
||||
```
|
||||
TreasuryPayment (status: PAID)
|
||||
↓
|
||||
BudgetIntegrationService.createPaymentFromTreasury()
|
||||
↓
|
||||
BudgetExecution (PAYMENT) criado
|
||||
↓
|
||||
BudgetLine.totalPaid atualizado
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ✅ Checklist de Correções
|
||||
|
||||
### Crítico
|
||||
- [ ] Criar `BudgetEntriesPage.tsx`
|
||||
- [ ] Adicionar rota `/budget/entries`
|
||||
- [ ] Adicionar "Dotações" ao menu de navegação
|
||||
- [ ] Criar documentação do fluxo completo
|
||||
|
||||
### Médio
|
||||
- [ ] Reorganizar menu de Tesouro (ordem lógica)
|
||||
- [ ] Adicionar "Entradas" ao menu de Tesouro
|
||||
- [ ] Adicionar "Fluxo de Caixa" ao menu de Tesouro
|
||||
- [ ] Criar guia visual do fluxo end-to-end
|
||||
|
||||
### Baixo
|
||||
- [ ] Adicionar breadcrumbs nas páginas
|
||||
- [ ] Adicionar links de navegação entre páginas relacionadas
|
||||
- [ ] Criar dashboard com visão consolidada do fluxo
|
||||
|
||||
---
|
||||
|
||||
## 🎯 Próximos Passos
|
||||
|
||||
1. **Imediato:** Criar BudgetEntriesPage e adicionar ao menu
|
||||
2. **Curto Prazo:** Reorganizar menu de Tesouro
|
||||
3. **Médio Prazo:** Criar guia visual interativo do fluxo
|
||||
4. **Longo Prazo:** Dashboard consolidado com visão end-to-end
|
||||
|
||||
---
|
||||
|
||||
**Documento gerado em:** 2025-01-XX
|
||||
**Versão:** 1.0
|
||||
|
||||
Reference in New Issue
Block a user