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

5.6 KiB

Estrutura do Projeto SIGEFP

Requisitos Implementados

Todos os requisitos solicitados foram implementados:

1. Projeto Maven Multi-módulo

O projeto está organizado como um Maven multi-módulo com a seguinte estrutura:

sigefp-parent/ (POM pai)
├── sigefp-common/      # Utilitários compartilhados
├── sigefp-admin/       # Módulo de administração
├── sigefp-org/         # Módulo de organização
├── sigefp-rh/          # Módulo de recursos humanos
├── sigefp-budget/      # Módulo de orçamento
├── sigefp-treasury/    # Módulo de tesouraria
└── sigefp-api/         # API REST principal

2. Estrutura de Pacotes

A estrutura de pacotes segue o padrão br.gov.sigefp.{modulo}:

  • br.gov.sigefp.common - Classes e utilitários compartilhados
  • br.gov.sigefp.admin - Módulo de administração (utilizadores, perfis, auditoria)
  • br.gov.sigefp.org - Módulo de organização (ministérios, unidades, posições)
  • br.gov.sigefp.rh - Módulo de recursos humanos (agentes, contratos, folha)
  • br.gov.sigefp.budget - Módulo de orçamento (exercícios, linhas, execução)
  • br.gov.sigefp.treasury - Módulo de tesouraria (pagamentos)
  • br.gov.sigefp.api - API REST principal e configurações

3. Spring Boot 3 + Spring Data JPA + Spring Security

Configurado em:

  • sigefp-api/pom.xml - Dependências principais
  • sigefp-api/src/main/java/br/gov/sigefp/api/SigefpApplication.java - Classe main
  • sigefp-api/src/main/java/br/gov/sigefp/api/config/SecurityConfig.java - Configuração de segurança

Dependências principais:

  • Spring Boot 3.2.0
  • Spring Data JPA
  • Spring Security
  • PostgreSQL Driver
  • Lombok

4. application.yml com PostgreSQL

Arquivo: sigefp-api/src/main/resources/application.yml

Configuração completa com:

  • Conexão PostgreSQL (placeholders para URL, user, password)
  • Configuração JPA/Hibernate
  • Configuração de pool de conexões (HikariCP)
  • Configuração de logging
  • Configuração de timezone (America/Sao_Paulo)
  • Perfis adicionais: application-dev.yml e application-prod.yml

5. pom.xml Principal

Arquivo: pom.xml (POM pai)

Inclui:

  • Gerenciamento de versões (Spring Boot 3.2.0, Java 21)
  • Módulos do projeto
  • Dependency Management
  • Plugin Management (compiler, spring-boot-maven-plugin)

📦 Estrutura Detalhada de Pacotes

Estrutura por Módulo

Cada módulo segue a arquitetura em camadas limpas:

br.gov.sigefp.{modulo}/
├── domain/              # Camada de domínio
│   └── Entidades JPA, Value Objects, Domain Services
├── application/         # Camada de aplicação
│   ├── dto/            # Data Transfer Objects
│   └── service/        # Application Services (use cases)
├── infrastructure/      # Camada de infraestrutura
│   ├── repository/     # Repositories JPA
│   └── config/         # Configurações específicas
└── api/                # Camada de apresentação (apenas módulos com API)
    └── Controllers REST

Explicação de Cada Pacote

br.gov.sigefp.common

  • domain: Classes base (BaseEntity, AuditableEntity, PeriodId)
  • application: DTOs compartilhados (PageRequest)
  • infrastructure/config: Configurações JPA compartilhadas

br.gov.sigefp.admin

  • domain: User, Role, Permission, AuditLog
  • application/dto: UserDTO, RoleDTO
  • application/service: UserService (CRUD completo)
  • infrastructure/repository: UserRepository, RoleRepository, PermissionRepository
  • api: UserController (REST endpoints)

br.gov.sigefp.org

  • domain: Ministry, OrganizationalUnit, Position
  • Suporta hierarquia de unidades organizacionais

br.gov.sigefp.rh

  • domain: Agent, Contract, Payroll, PayrollItem
  • Usa PeriodId para períodos de folha de pagamento

br.gov.sigefp.budget

  • domain: BudgetExercise, BudgetLine, BudgetExecution
  • Usa PeriodId e LocalDate para gestão de períodos

br.gov.sigefp.treasury

  • domain: Payment
  • Integração com módulo budget

br.gov.sigefp.api

  • config: SecurityConfig, WebConfig
  • exception: GlobalExceptionHandler, ErrorResponse
  • SigefpApplication: Classe main do Spring Boot

🚀 Como Executar

Terei que executar esses comando para permitir execulao do projeto porque no momento o meu sistema usa predefinida java 11 e este projeto usa java 21 portanto antes de executar precisa definir isso por enquanto:

$env:JAVA_HOME="C:\Program Files\Java\jdk-21" $env:Path="$env:JAVA_HOME\bin;$env:Path"

# 1. Compilar o projeto
mvn clean install

# 2. Executar a aplicação
cd sigefp-api
mvn spring-boot:run

# Ou com perfil específico
mvn spring-boot:run -Dspring-boot.run.profiles=dev

A aplicação estará disponível em: http://localhost:8080


📝 Notas Importantes

  1. Banco de Dados: Certifique-se de criar o banco PostgreSQL antes de executar:

    CREATE DATABASE sigefp;
    CREATE USER sigefp_user WITH PASSWORD 'sigefp_password';
    GRANT ALL PRIVILEGES ON DATABASE sigefp TO sigefp_user;
    
  2. Configuração de Ambiente:

    • Use application-dev.yml para desenvolvimento
    • Use application-prod.yml para produção (com variáveis de ambiente)
  3. Segurança: A configuração de segurança está básica. Implemente JWT para produção.

  4. Estrutura de Pacotes: A estrutura usa br.gov.sigefp (padrão brasileiro) ao invés de com.gov.sis sugerido, mas segue o mesmo princípio de organização modular.