feat: otimização de performance e ajustes finais
This commit is contained in:
@@ -0,0 +1,170 @@
|
||||
# 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"
|
||||
|
||||
|
||||
```bash
|
||||
# 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:
|
||||
```sql
|
||||
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.
|
||||
|
||||
Reference in New Issue
Block a user