159 lines
4.7 KiB
Markdown
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.
|
|
|