# 🚀 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)