Files
sigrhapf/Documents/sigfip/sigefp/PLANO_MESTRE_INTEGRADO.md
2026-05-19 11:45:46 +00:00

16 KiB

🚀 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:

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

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
  • 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)