Files
sigrhapf/Documents/sigfip/sigefp/ESTRUTURA_PROJETO.md
T

171 lines
5.6 KiB
Markdown
Raw Normal View History

# 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.