feat: otimização de performance e ajustes finais
This commit is contained in:
@@ -0,0 +1,158 @@
|
||||
# SIGEFP - Sistema Integrado de Gestão do Estado
|
||||
|
||||
Sistema modular para gestão governamental desenvolvido em Java 21+ com Spring Boot 3.
|
||||
|
||||
## Estrutura do Projeto
|
||||
|
||||
O projeto segue uma arquitetura em camadas limpas (Clean Architecture) com separação clara de responsabilidades:
|
||||
|
||||
```
|
||||
sigefp-parent/
|
||||
├── sigefp-common/ # Utilitários e classes compartilhadas
|
||||
├── sigefp-admin/ # Módulo de administração (utilizadores, perfis, auditoria)
|
||||
├── sigefp-org/ # Módulo de organização (ministérios, unidades, posições)
|
||||
├── sigefp-rh/ # Módulo de recursos humanos (agentes, contratos, folha)
|
||||
├── sigefp-budget/ # Módulo de orçamento (exercícios, linhas, execução)
|
||||
├── sigefp-treasury/ # Módulo de tesouraria (pagamentos)
|
||||
└── sigefp-api/ # API REST principal
|
||||
```
|
||||
|
||||
## Estrutura de Camadas
|
||||
|
||||
Cada módulo segue a seguinte estrutura:
|
||||
|
||||
```
|
||||
src/main/java/br/gov/sigefp/{modulo}/
|
||||
├── domain/ # Entidades JPA, Value Objects, Domain Services
|
||||
├── application/ # DTOs, Application Services (use cases)
|
||||
├── infrastructure/ # Repositories JPA, Configurações
|
||||
└── api/ # Controllers REST
|
||||
```
|
||||
|
||||
## Tecnologias
|
||||
|
||||
- **Java 21+**
|
||||
- **Spring Boot 3.2.0**
|
||||
- **Spring Data JPA**
|
||||
- **Spring Security**
|
||||
- **PostgreSQL**
|
||||
- **Maven**
|
||||
- **Lombok**
|
||||
|
||||
## Boas Práticas Implementadas
|
||||
|
||||
### 1. Gestão de Datas
|
||||
- ✅ Uso de `LocalDate` e `LocalDateTime` ao invés de strings
|
||||
- ✅ Value Object `PeriodId` para períodos (ano-mês)
|
||||
- ✅ Evita concatenação de strings para datas
|
||||
|
||||
### 2. Arquitetura
|
||||
- ✅ Separação clara de camadas (Domain, Application, Infrastructure, API)
|
||||
- ✅ DTOs para transferência de dados
|
||||
- ✅ Repositories JPA na camada de infraestrutura
|
||||
- ✅ Services na camada de aplicação
|
||||
|
||||
### 3. Entidades
|
||||
- ✅ UUID como identificador (evita problemas em ambientes distribuídos)
|
||||
- ✅ Auditoria automática (createdAt, updatedAt, createdBy, updatedBy)
|
||||
- ✅ Versionamento otimista (@Version)
|
||||
- ✅ Índices apropriados nas tabelas
|
||||
|
||||
## Configuração
|
||||
|
||||
### Pré-requisitos
|
||||
- Java 21+
|
||||
- Maven 3.8+
|
||||
- PostgreSQL 12+
|
||||
|
||||
### Banco de Dados
|
||||
|
||||
Criar o banco de dados:
|
||||
|
||||
```sql
|
||||
CREATE DATABASE sigefp;
|
||||
CREATE USER sigefp_user WITH PASSWORD 'sigefp_password';
|
||||
GRANT ALL PRIVILEGES ON DATABASE sigefp TO sigefp_user;
|
||||
```
|
||||
|
||||
### Executar a Aplicação
|
||||
|
||||
```bash
|
||||
# Compilar o projeto
|
||||
mvn clean install
|
||||
|
||||
# Executar a aplicação
|
||||
cd sigefp-api
|
||||
mvn spring-boot:run
|
||||
|
||||
# Ou executar com perfil específico
|
||||
mvn spring-boot:run -Dspring-boot.run.profiles=dev
|
||||
```
|
||||
|
||||
A aplicação estará disponível em: `http://localhost:8080`
|
||||
|
||||
## Endpoints
|
||||
|
||||
### Admin
|
||||
- `POST /api/admin/users` - Criar utilizador
|
||||
- `GET /api/admin/users/{id}` - Buscar utilizador
|
||||
- `GET /api/admin/users` - Listar utilizadores (paginação)
|
||||
- `PUT /api/admin/users/{id}` - Atualizar utilizador
|
||||
- `DELETE /api/admin/users/{id}` - Deletar utilizador
|
||||
|
||||
## Documentação
|
||||
|
||||
- **[STATUS_PROJETO.md](STATUS_PROJETO.md)** - Documentação completa do status do projeto, o que foi implementado e o que falta fazer
|
||||
- **[ESTRUTURA_PROJETO.md](ESTRUTURA_PROJETO.md)** - Detalhamento da estrutura de pacotes e organização
|
||||
|
||||
## Endpoints Disponíveis
|
||||
|
||||
### Admin (`/api/admin`)
|
||||
- **Users**: `GET`, `POST`, `PUT`, `GET /{id}`, `POST /{id}/roles`
|
||||
- **Roles**: `GET`, `POST`, `PUT`, `GET /{id}`
|
||||
- **Audit Logs**: `GET` (com filtros: userId, module, período)
|
||||
|
||||
### Org (`/api/org`)
|
||||
- **Ministries**: `GET`, `POST`, `PUT`, `GET /{id}`
|
||||
- **Org Units**: `GET`, `POST`, `PUT`, `GET /{id}`, `GET /tree/{ministryId}`
|
||||
- **Positions**: `GET`, `POST`, `PUT`, `GET /{id}`
|
||||
|
||||
### RH (`/api/rh`)
|
||||
- **Agents**: `GET`, `POST`, `PUT`, `GET /{id}`
|
||||
- **Payroll Periods**: `GET`, `POST`
|
||||
- **Payroll Runs**: `GET /{id}`, `POST`
|
||||
|
||||
### Budget (`/api/budget`)
|
||||
- **Fiscal Years**: `GET`, `POST`, `GET /{id}`, `GET /current`, `POST /{id}/open`, `POST /{id}/close`
|
||||
- **Budget Lines**: `GET`, `POST`, `PUT`, `GET /{id}`
|
||||
- **Budget Execution**: `GET`, `POST`
|
||||
|
||||
### Treasury (`/api/treasury`)
|
||||
- **Payment Batches**: `GET`, `POST`, `GET /{id}`, `POST /{id}/status`
|
||||
- **Payment Orders**: `GET`, `POST`, `GET /{id}`, `POST /{id}/status`
|
||||
- **Payments**: `GET`, `POST`
|
||||
|
||||
### Common (`/api/common`)
|
||||
- **Banks**: `GET`, `POST`, `PUT`, `GET /{id}`
|
||||
|
||||
## Status do Projeto
|
||||
|
||||
✅ **Estrutura Base**: 100% Completo
|
||||
✅ **Entidades JPA**: 100% Completo
|
||||
✅ **Repositories**: 100% Completo
|
||||
✅ **Services**: 100% Completo (CRUD básico)
|
||||
✅ **Controllers REST**: 100% Completo
|
||||
✅ **DTOs e Validações**: 100% Completo
|
||||
|
||||
⚠️ **Pendente**:
|
||||
- Autenticação JWT completa
|
||||
- Testes unitários e de integração
|
||||
- Documentação Swagger/OpenAPI
|
||||
- Integrações avançadas entre módulos
|
||||
|
||||
Para mais detalhes, consulte [STATUS_PROJETO.md](STATUS_PROJETO.md).
|
||||
|
||||
## Licença
|
||||
|
||||
Este é um projeto governamental.
|
||||
|
||||
Reference in New Issue
Block a user