Files
2026-05-19 11:45:46 +00:00

4.7 KiB

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 LocalDate e LocalDateTime ao invés de strings
  • Value Object PeriodId para 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 utilizador
  • GET /api/admin/users/{id} - Buscar utilizador
  • GET /api/admin/users - Listar utilizadores (paginação)
  • PUT /api/admin/users/{id} - Atualizar utilizador
  • DELETE /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.