# Documentação Técnica: Gestão da Vida Laboral (Ciclo de Vida Profissional)

Esta documentação serve como memória técnica para o sistema de RH do SIGEFP, detalhando a implementação da "Vida Laboral" em conformidade com o **Decreto nº 12-A/94** da Guiné-Bissau.

---

## 1. Visão Geral
A Gestão da Vida Laboral visa rastrear todas as movimentações significativas na carreira de um agente público, garantindo que snapshots financeiros (divisão 5/6 e 1/6) e organizacionais sejam preservados para fins de auditoria, folha de pagamento e progressão de carreira.

---

## 2. Arquitetura de Dados (Modelo de Entidades)

O sistema utiliza três pilares principais para gerir a trilha de auditoria e conformidade:

### 2.1. `CareerEventType` (Enum)
Define a natureza da movimentação. Exemplos:
- `ADMISSAO`: Ingresso inicial.
- `PROMOCAO`: Mudança de categoria (ex: Técnico para Técnico Superior).
- `PROGRESSAO`: Mudança de escalão dentro da mesma categoria.
- `SUBSTITUICAO`: Exercício temporário em cargo superior.

### 2.2. `PerformanceEvaluation` (Entidade)
Armazena as avaliações anuais de desempenho.
- **Escala**: 5 a 20 pontos.
- **Menções Qualitativas**: Insatisfatório, Pouco Satisfatório, Bom, Muito Bom.
- **Importância**: Critério obrigatório para promoções e progressões por mérito.

### 2.3. `CareerEvent` (Entidade Central)
O "coração" da Vida Laboral. Cada registro captura:
- **Datas**: Eficácia do evento e publicação no Boletim Oficial (BO).
- **Referência**: Documento legal (Despacho/Portaria).
- **Snapshots**: Categoria, Grau, Escalão, Unidade Orgânica e Posição (Anteriores e Novos).
- **Snapshot Financeiro**: Valor base total, 5/6 (Cargo) e 1/6 (Exercício).

---

## 3. Regras de Negócio e Lógica Profunda

### 3.1. Divisão Salarial (Regra 5/6 e 1/6)
Segundo o Estatuto, a remuneração base é dividida para fins de cálculo de benefícios e pensões:
- **Remuneração do Cargo (5/6)**: Atribuída ao cargo ocupado.
- **Remuneração de Exercício (1/6)**: Atribuída ao exercício efetivo da função.
*Implementação*: Realizada automaticamente no método `recordCareerEvent` do `AgentService` ao consultar a `SalaryGrid`.

### 3.2. Validação de Promoção
Para que um agente seja promovido (`PROMOCAO`):
- **Requisito Legal**: Ter pelo menos **3 anos** de avaliações consecutivas.
- **Nota Mínima**: Menção mínima de **"Bom"** (>= 12 pontos) em todos os anos do triênio anterior.
*Implementação*: O `AgentService` lança uma `IllegalStateException` caso os critérios não sejam atingidos.

### 3.3. Execução via Edição de Funcionário
Na tela de edição, o sistema funciona de forma reativa:
1. **Atentividade**: O backend detecta diferenças entre o estado atual e o novo formulário.
2. **Dados Legais**: O usuário pode preencher os campos `eventDocumentRef` (Nº Despacho) e `eventEffectiveDate` diretamente no formulário de edição.
3. **Persistência**: Ao salvar, o `AgentService` cria o `CareerEvent` usando esses dados, garantindo que a linha do tempo profissional tenha a referência jurídica correta.

---

## 4. Fluxo de Trabalho (Workflows)

```mermaid
graph TD
    A[Atualização do Agente] --> B{Alteração Estrutural?}
    B -- Sim (Salário/Cargo/Unidade) --> C[Identificar CareerEventType]
    C --> D{É Promoção?}
    D -- Sim --> E[Validar Avaliações de Desempenho]
    E -- Sucesso --> F[Consultar SalaryGrid]
    D -- Não --> F
    F --> G[Calcular Split 5/6 e 1/6]
    G --> H[Salvar CareerEvent - Snapshot]
    H --> I[Salvar Agente]
```

---

## 5. Endpoints Relacionados

| Método | Endpoint | Descrição |
| :--- | :--- | :--- |
| `GET` | `/api/rh/agents/{id}/history` | Retorna a linha do tempo profissional (`CareerTimelineDTO`) do agente. |

---

## 6. Manutenção Futura
- **Progressão Automática**: Pode ser implementada via `Scheduled` tasks, verificando o tempo de escalão e avaliações.
- **Bónus de Mérito**: O sistema já prevê o campo de pontuação para reduzir o tempo de progressão de 3 para 2 anos em caso de "Muito Bom".

---
**Autor**: Antigravity (IA SIGEFP)  
**Data**: Dezembro 2024  
**Referência Legal**: Estatuto do Pessoal da Administração Pública (Decreto nº 12-A/94).
