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 compartilhadosbr.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 principaissigefp-api/src/main/java/br/gov/sigefp/api/SigefpApplication.java- Classe mainsigefp-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.ymleapplication-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
PeriodIdpara períodos de folha de pagamento
br.gov.sigefp.budget
- domain:
BudgetExercise,BudgetLine,BudgetExecution - Usa
PeriodIdeLocalDatepara 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
-
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; -
Configuração de Ambiente:
- Use
application-dev.ymlpara desenvolvimento - Use
application-prod.ymlpara produção (com variáveis de ambiente)
- Use
-
Segurança: A configuração de segurança está básica. Implemente JWT para produção.
-
Estrutura de Pacotes: A estrutura usa
br.gov.sigefp(padrão brasileiro) ao invés decom.gov.sissugerido, mas segue o mesmo princípio de organização modular.