Files
sigrhapf/Documents/sigfip/sigefp/README.md
T
2026-05-19 11:45:46 +00:00

159 lines
4.7 KiB
Markdown

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