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