171 lines
5.6 KiB
Markdown
171 lines
5.6 KiB
Markdown
|
|
# 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.
|
||
|
|
|