Files

513 lines
16 KiB
Markdown
Raw Permalink Normal View History

# 🚀 PLANO MESTRE INTEGRADO DE IMPLEMENTAÇÃO: SIGEFP
**Versão:** 2.0 (Integrado - Auto + Antigravity)
**Data:** Dezembro 2024
**Objetivo:** Transitar de um protótipo funcional (~90%) para um Sistema de Estado de alta disponibilidade, corrigindo riscos críticos e completando todas as funcionalidades pendentes.
---
## 📊 STATUS ATUAL (Baseado em Ambas as Análises)
### Backend: ~90-95% Completo
- ✅ Estrutura completa (100%)
- ✅ Integrações funcionais (100%)
- ⚠️ Testes (0% - CRÍTICO)
- ⚠️ Riscos técnicos identificados
### Frontend: ~70-75% Completo
- ✅ Módulos ADMIN, ORG, RH, COMMON (100%)
- ❌ Módulos BUDGET, TREASURY (0%)
- ⚠️ Dashboard com dados mockados
---
## 🏗️ FASE 1: HARDENING E SEGURANÇA (PRIORIDADE CRÍTICA)
**Duração Estimada:** 2-3 semanas
**Objetivo:** Eliminar riscos de integridade de dados e preparar o sistema para escala nacional.
### 1.1 Refatoração de Identificadores (UUID Bridge) 🔴 CRÍTICO
**Problema Identificado por Antigravity:**
- `PaymentOrderService` usa `.hashCode()` para referências Long entre módulos
- Risco de colisão em volumes massivos de dados
**Ações:**
- [ ] **Análise do código atual**
- Localizar todas as ocorrências de `.hashCode()` para conversão UUID → Long
- Identificar impactos em outros módulos
- [ ] **Implementar estratégia de ID sequencial real**
- Criar tabela de mapeamento UUID ↔ Long (se necessário)
- OU migrar referências cruzadas para UUID nativo no banco de dados
- [ ] **Arquivos Alvo:**
- `sigefp-treasury/src/main/java/br/gov/sigefp/treasury/service/PaymentOrderService.java`
- `sigefp-budget/src/main/java/br/gov/sigefp/budget/integration/BudgetIntegrationService.java`
- Verificar outros serviços que usam conversão de IDs
**Critérios de Sucesso:**
- ✅ Zero uso de `.hashCode()` para conversão de IDs
- ✅ Testes de integridade de dados passando
- ✅ Documentação da estratégia de IDs
---
### 1.2 Iniciação da Suíte de Testes (0% → 40%) 🔴 CRÍTICO
**Foco:** Motores de Cálculo e Integração Orçamentária
#### Testes Unitários (Prioridade ALTA)
**1. PayrollServiceTest**
- [ ] Validar cálculos de INPS
- [ ] Validar cálculos de IRPS (escalonados 10-25%)
- [ ] Validar cálculos de Selo
- [ ] Validar geração de itens de folha
- [ ] Validar processamento em lote
**2. BudgetExecutionServiceTest**
- [ ] Testar bloqueio de saldo insuficiente
- [ ] Validar criação de COMMITMENT
- [ ] Validar criação de LIQUIDATION
- [ ] Validar criação de PAYMENT
- [ ] Validar cálculos de saldo disponível
**3. AgentServiceTest**
- [ ] Validar validações do Decreto 12-A/94
- [ ] Validar regra de 3 anos de avaliações "Bom" para promoção
- [ ] Validar criação de eventos de carreira
- [ ] Validar estatísticas de agentes
**4. TaxServiceTest**
- [ ] Validar escalões de IRPS
- [ ] Validar regras globais de desconto
- [ ] Validar escalões ativos por data
#### Testes de Integração (Prioridade ALTA)
**5. Fluxo RH → Budget → Treasury**
- [ ] Testar: Criação de folha → Compromisso orçamentário
- [ ] Testar: Pagamento → Execução orçamentária
- [ ] Testar: Integridade de dados entre módulos
- [ ] Testar: Validações cruzadas
**6. BudgetIntegrationServiceTest**
- [ ] `createCommitmentFromPayrollItem()` - Integração RH → Budget
- [ ] `createPaymentFromTreasury()` - Integração Treasury → Budget
- [ ] Conversão de períodos (fiscalYear + month → periodId)
**Estrutura de Testes:**
```
sigefp-rh/src/test/java/br/gov/sigefp/rh/service/
├── PayrollServiceTest.java
├── AgentServiceTest.java
└── TaxServiceTest.java
sigefp-budget/src/test/java/br/gov/sigefp/budget/service/
├── BudgetExecutionServiceTest.java
└── integration/
└── BudgetIntegrationServiceTest.java
sigefp-treasury/src/test/java/br/gov/sigefp/treasury/service/
└── PaymentOrderServiceTest.java
```
**Critérios de Sucesso:**
- ✅ Cobertura de testes: 40% mínimo
- ✅ Todos os testes de integração passando
- ✅ CI/CD configurado para executar testes
---
### 1.3 Padronização de Exceções e Respostas de Erro
**Ação:** Expandir o `GlobalExceptionHandler` com códigos de erro específicos
**Exceções Customizadas a Criar:**
- [ ] `InsufficientBudgetException` - Saldo orçamentário insuficiente
- [ ] `AgentInactiveException` - Agente inativo
- [ ] `PeriodClosedException` - Período fechado
- [ ] `InvalidPromotionException` - Promoção inválida (Decreto 12-A/94)
- [ ] `DuplicateEntityException` - Entidade duplicada
- [ ] `BusinessRuleException` - Regra de negócio violada
**Estrutura de ErrorCode:**
```java
public enum ErrorCode {
INSUFFICIENT_BUDGET("BUDGET_001", "Saldo orçamentário insuficiente"),
AGENT_INACTIVE("RH_001", "Agente inativo"),
PERIOD_CLOSED("RH_002", "Período de folha fechado"),
INVALID_PROMOTION("RH_003", "Promoção inválida: requer 3 anos de avaliações 'Bom'"),
// ...
}
```
**Critérios de Sucesso:**
- ✅ Todas as exceções customizadas implementadas
- ✅ Códigos de erro padronizados
- ✅ Logging estruturado de exceções
- ✅ Documentação de códigos de erro
---
## 💻 FASE 2: COMPLETUDE DO FRONTEND (MÓDULOS PLACEHOLDER)
**Duração Estimada:** 3-4 semanas
**Objetivo:** Transformar rotas vazias em interfaces funcionais baseadas na lógica já existente no backend.
### 2.1 Módulo de Orçamento (Budget UI) ❌ 0% → 100%
#### Páginas a Implementar
**1. FiscalYearsPage** (`/budget/fiscal-years`)
- [ ] Listagem de anos fiscais (com status: DRAFT, OPEN, CLOSED)
- [ ] Criar novo exercício fiscal
- [ ] Abrir exercício (com validações)
- [ ] Fechar exercício (com validações)
- [ ] Visualizar exercício corrente
- [ ] Filtros por status e ano
**Componentes:**
- [ ] `FiscalYearFormModal` - Formulário de criação
- [ ] `FiscalYearStatusBadge` - Badge de status
- [ ] `FiscalYearActions` - Botões de ação (abrir/fechar)
**Hooks:**
- [ ] `useFiscalYears` - Hook para gestão de anos fiscais
**Serviços:**
- [ ] `budgetService.ts` - Serviço de orçamento
**Endpoints Backend (já existem):**
- `GET /api/budget/fiscal-years`
- `GET /api/budget/fiscal-years/current`
- `POST /api/budget/fiscal-years`
- `POST /api/budget/fiscal-years/{id}/open`
- `POST /api/budget/fiscal-years/{id}/close`
---
**2. BudgetLinesPage** (`/budget/lines`)
- [ ] Listagem de linhas orçamentárias (com paginação)
- [ ] Visualização de saldos (alocado, comprometido, liquidado, disponível)
- [ ] Criar nova linha orçamentária
- [ ] Editar linha orçamentária
- [ ] Filtros por exercício fiscal, ministério, unidade orgânica
- [ ] Visualização de execuções por linha
**Componentes:**
- [ ] `BudgetLineFormModal` - Formulário de criação/edição
- [ ] `BudgetLineCard` - Card com saldos
- [ ] `BudgetExecutionChart` - Gráfico de execução
- [ ] `AdvancedFilters` - Filtros avançados
**Hooks:**
- [ ] `useBudgetLines` - Hook para gestão de linhas
- [ ] `useBudgetExecution` - Hook para execuções
**Endpoints Backend (já existem):**
- `GET /api/budget/lines`
- `GET /api/budget/lines/{id}`
- `POST /api/budget/lines`
- `PUT /api/budget/lines/{id}`
---
**3. BudgetExecutionPage** (`/budget/execution`)
- [ ] Listagem de execuções orçamentárias
- [ ] Filtros por linha, período, tipo de movimento
- [ ] Visualização de movimentos (COMMITMENT, LIQUIDATION, PAYMENT)
- [ ] Gráficos de execução por período
- [ ] Exportação de relatórios
**Componentes:**
- [ ] `ExecutionTable` - Tabela de execuções
- [ ] `ExecutionFilters` - Filtros
- [ ] `ExecutionChart` - Gráficos de execução
- [ ] `ExportButton` - Exportação
**Hooks:**
- [ ] `useBudgetExecution` - Hook para execuções
**Endpoints Backend (já existem):**
- `GET /api/budget/execution`
- `POST /api/budget/execution`
---
### 2.2 Módulo de Tesouraria (Treasury UI) ❌ 0% → 100%
#### Páginas a Implementar
**1. PaymentBatchesPage** (`/treasury/batches`)
- [ ] Listagem de lotes de pagamento
- [ ] Criar novo lote
- [ ] Alterar status do lote
- [ ] Visualizar ordens do lote
- [ ] Filtros por período, ministério, status
- [ ] Integração com Banco Central (preparado)
**Componentes:**
- [ ] `PaymentBatchFormModal` - Formulário de criação
- [ ] `PaymentBatchStatusBadge` - Badge de status
- [ ] `PaymentBatchActions` - Ações do lote
**Hooks:**
- [ ] `usePaymentBatches` - Hook para lotes
**Endpoints Backend (já existem):**
- `GET /api/treasury/payment-batches`
- `GET /api/treasury/payment-batches/{id}`
- `POST /api/treasury/payment-batches`
- `POST /api/treasury/payment-batches/{id}/status`
---
**2. PaymentOrdersPage** (`/treasury/orders`)
- [ ] Listagem de ordens de pagamento
- [ ] Visualizar detalhes da ordem
- [ ] Alterar status da ordem
- [ ] Filtros por lote, status, agente
- [ ] Visualização de pagamentos confirmados
**Componentes:**
- [ ] `PaymentOrderCard` - Card da ordem
- [ ] `PaymentOrderDetails` - Detalhes
- [ ] `PaymentOrderStatusBadge` - Badge de status
**Hooks:**
- [ ] `usePaymentOrders` - Hook para ordens
**Endpoints Backend (já existem):**
- `GET /api/treasury/payment-orders`
- `GET /api/treasury/payment-orders/{id}`
- `POST /api/treasury/payment-orders`
- `POST /api/treasury/payment-orders/{id}/status`
---
**3. TreasuryPaymentsPage** (`/treasury/confirmations`)
- [ ] Listagem de pagamentos confirmados
- [ ] Registrar confirmação de pagamento
- [ ] Visualizar histórico de pagamentos
- [ ] Filtros por ordem, status, data
**Componentes:**
- [ ] `TreasuryPaymentFormModal` - Formulário de confirmação
- [ ] `PaymentHistoryTable` - Histórico
**Hooks:**
- [ ] `useTreasuryPayments` - Hook para pagamentos
**Endpoints Backend (já existem):**
- `GET /api/treasury/payments`
- `POST /api/treasury/payments`
---
### 2.3 Dashboard Real-Time ⚠️ 50% → 100%
**Ação:** Substituir gráficos mockados por chamadas reais aos endpoints
**Implementações:**
- [ ] Integrar `/api/rh/agents/stats` para estatísticas de agentes
- [ ] Criar endpoint `/api/budget/execution/stats` para estatísticas orçamentárias
- [ ] Criar endpoint `/api/treasury/payments/stats` para estatísticas de pagamentos
- [ ] Implementar gráficos reais (Chart.js ou Recharts)
- [ ] Atualização em tempo real (polling ou WebSocket)
- [ ] Filtros por período no dashboard
**Componentes:**
- [ ] `DashboardStats` - Cards de estatísticas
- [ ] `DashboardCharts` - Gráficos
- [ ] `DashboardFilters` - Filtros de período
**Critérios de Sucesso:**
- ✅ Zero dados mockados no dashboard
- ✅ Gráficos funcionais com dados reais
- ✅ Atualização automática de métricas
---
## ⚖️ FASE 3: LÓGICA DE NEGÓCIO E CONFORMIDADE LEGAL
**Duração Estimada:** 2-3 semanas
**Objetivo:** Assegurar que o sistema execute as regras do Decreto 12-A/94 de forma automática.
### 3.1 Automação de Progressão/Promoção
**Problema:** Lógica de fechamento de ciclo de avaliação ainda é manual
**Ações:**
- [ ] **Criar PerformanceEvaluationService**
- Registrar avaliações de desempenho
- Calcular pontuação acumulada
- Validar requisitos para promoção (3 anos de "Bom")
- [ ] **Integrar com CareerEventService**
- Ao atingir pontuação necessária, sugerir promoção
- Criar evento de carreira automaticamente
- Atualizar salário baseado na nova posição
- [ ] **Interface Frontend**
- Página de avaliações de desempenho
- Dashboard de progressão de carreira
- Alertas de promoções disponíveis
**Arquivos a Criar:**
- `sigefp-rh/src/main/java/br/gov/sigefp/rh/service/PerformanceEvaluationService.java`
- `sigefp-rh/src/main/java/br/gov/sigefp/rh/domain/PerformanceEvaluation.java`
- `sigefp-rh/src/main/java/br/gov/sigefp/rh/api/PerformanceEvaluationController.java`
- `sigefp-frontend/src/modules/rh/pages/PerformanceEvaluationsPage.tsx`
**Critérios de Sucesso:**
- ✅ Sistema sugere promoções automaticamente
- ✅ Validações do Decreto 12-A/94 implementadas
- ✅ Interface para gestão de avaliações
---
### 3.2 Fechamento de Ciclo de Folha
**Ação:** Implementar no Frontend a funcionalidade de "Encerrar Período"
**Implementações:**
- [ ] **Backend: Endpoint de Encerramento**
- `POST /api/rh/payroll-runs/{id}/close`
- Validar que todos os itens foram processados
- Disparar liquidação orçamentária definitiva
- Atualizar status do período
- [ ] **Frontend: Interface de Encerramento**
- Botão "Encerrar Período" na PayrollRunsPage
- Modal de confirmação com resumo
- Visualização de status do encerramento
- Histórico de períodos encerrados
**Fluxo:**
1. Processar folha (`/payroll-runs/{id}/process`)
2. Gerar itens (`/payroll-runs/{id}/generate`)
3. Validar itens
4. Encerrar período (`/payroll-runs/{id}/close`)
5. Criar execuções orçamentárias (LIQUIDATION)
**Critérios de Sucesso:**
- ✅ Encerramento de período funcional
- ✅ Liquidação orçamentária automática
- ✅ Validações de integridade
---
## 📊 FASE 4: MELHORIAS E OTIMIZAÇÕES (PRIORIDADE MÉDIA)
**Duração Estimada:** 2-3 semanas
### 4.1 Performance e Otimização
- [ ] Implementar cache (Spring Cache) para dados mestres
- [ ] Otimizar queries N+1
- [ ] Adicionar índices adicionais no banco
- [ ] Implementar paginação em todas as listagens
- [ ] Batch processing para operações em massa
### 4.2 Relatórios e Exportação
- [ ] Endpoints de relatórios consolidados
- [ ] Exportação para Excel/PDF
- [ ] Relatórios de execução orçamentária
- [ ] Relatórios de folha de pagamento
- [ ] Relatórios de pagamentos
### 4.3 Documentação
- [ ] Documentação Swagger completa
- [ ] Guias de uso
- [ ] Documentação de API
- [ ] Vídeos tutoriais
---
## 📊 MÉTRICAS DE SUCESSO DO PLANO
| KPI | Atual | Meta Fase 1 | Meta Fase 2 | Meta Fase 3 | Meta Final |
|:---|:---|:---|:---|:---|:---|
| **Cobertura de Testes** | 0% | 40% | 50% | 60% | 70% |
| **Interfaces Financeiras** | Placeholder | - | 100% | 100% | 100% |
| **Risco de Colisão IDs** | Alto | Zero | Zero | Zero | Zero |
| **Dashboard** | Mockado | - | Real-Time | Real-Time | Real-Time |
| **Conformidade Legal** | Manual | - | - | Automático | Automático |
| **Frontend Completo** | 75% | 75% | 100% | 100% | 100% |
| **Backend Completo** | 90% | 95% | 95% | 98% | 98% |
---
## 🎯 CRONOGRAMA SUGERIDO
### Semana 1-2: Fase 1.1 e 1.2 (Hardening)
- Refatoração de IDs
- Início dos testes
### Semana 3-4: Fase 1.3 e 2.1 (Exceções + Budget UI)
- Padronização de exceções
- Implementação do módulo Budget
### Semana 5-6: Fase 2.2 e 2.3 (Treasury UI + Dashboard)
- Implementação do módulo Treasury
- Dashboard real-time
### Semana 7-8: Fase 3 (Conformidade Legal)
- Automação de promoções
- Fechamento de ciclo de folha
### Semana 9-10: Fase 4 (Melhorias)
- Performance
- Relatórios
- Documentação
**Total Estimado:** 10 semanas (2.5 meses)
---
## ✅ CHECKLIST DE VALIDAÇÃO
Antes de considerar cada fase completa, validar:
### Fase 1 (Hardening)
- [ ] Zero uso de `.hashCode()` para IDs
- [ ] Cobertura de testes ≥ 40%
- [ ] Todas as exceções customizadas implementadas
- [ ] Testes de integração passando
### Fase 2 (Frontend)
- [ ] Todas as páginas Budget implementadas
- [ ] Todas as páginas Treasury implementadas
- [ ] Dashboard com dados reais
- [ ] Testes E2E básicos
### Fase 3 (Conformidade)
- [ ] Sistema sugere promoções automaticamente
- [ ] Encerramento de período funcional
- [ ] Validações do Decreto 12-A/94 implementadas
### Fase 4 (Melhorias)
- [ ] Cache implementado
- [ ] Relatórios funcionais
- [ ] Documentação completa
---
## 📝 NOTAS IMPORTANTES
1. **Validação de Auditoria**: Sempre validar a trilha de auditoria em `STATUS_PROJETO.md` para garantir que nenhuma regra do Decreto 12-A/94 seja violada.
2. **Priorização**: Fase 1 é CRÍTICA e deve ser feita antes de qualquer deploy em produção.
3. **Testes**: Não avançar para Fase 2 sem completar pelo menos 40% de cobertura de testes.
4. **Integrações**: Testar todas as integrações entre módulos após cada fase.
5. **Documentação**: Documentar todas as decisões técnicas e mudanças.
---
**Última atualização:** Dezembro 2024
**Versão:** 2.0 (Integrado)
**Baseado em:** PLANO_MESTRE_IMPLEMENTACAO.md (Antigravity) + ANALISE_COMPLETA_PROJETO.md (Auto)