SIGEFP - Sistema Integrado de Gestão do Estado
Sistema modular para gestão governamental desenvolvido em Java 21+ com Spring Boot 3.
Estrutura do Projeto
O projeto segue uma arquitetura em camadas limpas (Clean Architecture) com separação clara de responsabilidades:
sigefp-parent/
├── sigefp-common/ # Utilitários e classes compartilhadas
├── sigefp-admin/ # Módulo de administração (utilizadores, perfis, auditoria)
├── sigefp-org/ # Módulo de organização (ministérios, unidades, posições)
├── sigefp-rh/ # Módulo de recursos humanos (agentes, contratos, folha)
├── sigefp-budget/ # Módulo de orçamento (exercícios, linhas, execução)
├── sigefp-treasury/ # Módulo de tesouraria (pagamentos)
└── sigefp-api/ # API REST principal
Estrutura de Camadas
Cada módulo segue a seguinte estrutura:
src/main/java/br/gov/sigefp/{modulo}/
├── domain/ # Entidades JPA, Value Objects, Domain Services
├── application/ # DTOs, Application Services (use cases)
├── infrastructure/ # Repositories JPA, Configurações
└── api/ # Controllers REST
Tecnologias
- Java 21+
- Spring Boot 3.2.0
- Spring Data JPA
- Spring Security
- PostgreSQL
- Maven
- Lombok
Boas Práticas Implementadas
1. Gestão de Datas
- ✅ Uso de
LocalDateeLocalDateTimeao invés de strings - ✅ Value Object
PeriodIdpara períodos (ano-mês) - ✅ Evita concatenação de strings para datas
2. Arquitetura
- ✅ Separação clara de camadas (Domain, Application, Infrastructure, API)
- ✅ DTOs para transferência de dados
- ✅ Repositories JPA na camada de infraestrutura
- ✅ Services na camada de aplicação
3. Entidades
- ✅ UUID como identificador (evita problemas em ambientes distribuídos)
- ✅ Auditoria automática (createdAt, updatedAt, createdBy, updatedBy)
- ✅ Versionamento otimista (@Version)
- ✅ Índices apropriados nas tabelas
Configuração
Pré-requisitos
- Java 21+
- Maven 3.8+
- PostgreSQL 12+
Banco de Dados
Criar o banco de dados:
CREATE DATABASE sigefp;
CREATE USER sigefp_user WITH PASSWORD 'sigefp_password';
GRANT ALL PRIVILEGES ON DATABASE sigefp TO sigefp_user;
Executar a Aplicação
# Compilar o projeto
mvn clean install
# Executar a aplicação
cd sigefp-api
mvn spring-boot:run
# Ou executar com perfil específico
mvn spring-boot:run -Dspring-boot.run.profiles=dev
A aplicação estará disponível em: http://localhost:8080
Endpoints
Admin
POST /api/admin/users- Criar utilizadorGET /api/admin/users/{id}- Buscar utilizadorGET /api/admin/users- Listar utilizadores (paginação)PUT /api/admin/users/{id}- Atualizar utilizadorDELETE /api/admin/users/{id}- Deletar utilizador
Documentação
- STATUS_PROJETO.md - Documentação completa do status do projeto, o que foi implementado e o que falta fazer
- ESTRUTURA_PROJETO.md - Detalhamento da estrutura de pacotes e organização
Endpoints Disponíveis
Admin (/api/admin)
- Users:
GET,POST,PUT,GET /{id},POST /{id}/roles - Roles:
GET,POST,PUT,GET /{id} - Audit Logs:
GET(com filtros: userId, module, período)
Org (/api/org)
- Ministries:
GET,POST,PUT,GET /{id} - Org Units:
GET,POST,PUT,GET /{id},GET /tree/{ministryId} - Positions:
GET,POST,PUT,GET /{id}
RH (/api/rh)
- Agents:
GET,POST,PUT,GET /{id} - Payroll Periods:
GET,POST - Payroll Runs:
GET /{id},POST
Budget (/api/budget)
- Fiscal Years:
GET,POST,GET /{id},GET /current,POST /{id}/open,POST /{id}/close - Budget Lines:
GET,POST,PUT,GET /{id} - Budget Execution:
GET,POST
Treasury (/api/treasury)
- Payment Batches:
GET,POST,GET /{id},POST /{id}/status - Payment Orders:
GET,POST,GET /{id},POST /{id}/status - Payments:
GET,POST
Common (/api/common)
- Banks:
GET,POST,PUT,GET /{id}
Status do Projeto
✅ Estrutura Base: 100% Completo ✅ Entidades JPA: 100% Completo ✅ Repositories: 100% Completo ✅ Services: 100% Completo (CRUD básico) ✅ Controllers REST: 100% Completo ✅ DTOs e Validações: 100% Completo
⚠️ Pendente:
- Autenticação JWT completa
- Testes unitários e de integração
- Documentação Swagger/OpenAPI
- Integrações avançadas entre módulos
Para mais detalhes, consulte STATUS_PROJETO.md.
Licença
Este é um projeto governamental.