Skip to content

T-079 - Implementar POST /jobs/id/reprocessar - #172

Merged
pedro-fs-garcia merged 4 commits into
developfrom
feature/t-079-post-jobs/id/reprocessar
Sep 24, 2026
Merged

pedro-fs-garcia merged 4 commits into
developfrom
feature/t-079-post-jobs/id/reprocessar

Conversation

@eduardo-Rib

Copy link
Copy Markdown

Resumo

Implementa a T-079, adicionando o endpoint POST /jobs/{id}/reprocessar para criar um novo job a partir de um job arquivado.

O reprocessamento preserva o job original e sua trilha, cria uma nova versão independente da regra e direciona o novo job para a etapa de confirmação de parâmetros.

Implementação

  • adiciona POST /jobs/{id}/reprocessar;
  • aceita somente jobs em estado arquivado;
  • cria um novo job em aguardando_confirmacao_parametros;
  • mantém o job original inalterado;
  • copia o usuario_id do job de origem;
  • relaciona os jobs através de job_origem_id;
  • seleciona a versão mais recente da regra do job arquivado;
  • cria uma nova regra com:
    • versao = 1;
    • origem = reprocessamento;
    • regra_origem_id apontando para a versão original;
  • preserva integralmente nucleo, especificacoes e hash;
  • mantém especificações extensíveis sem perda de campos desconhecidos;
  • herda competências e orçamento quando não informados;
  • permite substituir competências e orçamento no reprocessamento;
  • registra a criação pela máquina de estados;
  • publica regra-submetida pelo outbox com origem reprocessamento.

Representação da regra

As especificações da regra passaram a ser tratadas de forma extensível, preservando integralmente estruturas JSON existentes.

Isso garante a representação completa em todo o fluxo:

job arquivado
→ POST /jobs/{id}/reprocessar
→ GET /jobs/{id}
→ confirmação de parâmetros
→ nova versão da regra

Ao confirmar alterações no núcleo, orçamento ou competências, as especificações já existentes continuam preservadas.

A versão semeada permanece imutável e novas alterações geram uma nova versão ligada através de regra_origem_id.

Consulta e confirmação

GET /jobs/{id} e POST /jobs/{id}/parameters foram ajustados para suportar jobs originados de reprocessamento.

Para esses jobs:

  • origem = reprocessamento;
  • job_origem_id identifica o job arquivado;
  • submissao_id não é retornado;
  • a representação completa da regra permanece disponível;
  • a confirmação continua seguindo o fluxo normal de versionamento.

Evento

O novo job publica regra-submetida na mesma transação da criação do job, regra e transição inicial.

Exemplo:

{
  "job_id": "<novo_job_id>",
  "origem": "reprocessamento",
  "competencias": ["2025-07", "2025-09", "2025-12"],
  "regra_id": "<nova_regra_id>"
}

- cria novo job a partir da última regra de um job arquivado
- preserva representação, vínculos de origem e versionamento da regra
- permite herdar ou ajustar competências e orçamento
- publica regra-submetida com origem reprocessamento pelo outbox
- adapta consulta e confirmação para jobs originados de reprocessamento
- adiciona cobertura de persistência, atomicidade e preservação de especificações
@eduardo-Rib eduardo-Rib self-assigned this Sep 23, 2026

@pedro-fs-garcia pedro-fs-garcia left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

• No fluxo de reprocessamento, a confirmação ainda não permite
editar a representação completa. Quando o job arquivado tem
especificacoes não vazias, enviar a regra retornada por GET /
jobs/{id} para POST /jobs/{id}/parameters resulta em 400
(ConfirmarParametrosRequisicao.validarEspecificacoes). Enviar
especificacoes: [] permite confirmar, mas o serviço reutiliza as
especificações anteriores, ignorando qualquer edição. Ajustar a
confirmação para aceitar a representação completa e gravar uma
nova versão quando as especificações mudarem, preservando a
versão semeada e a do job original.

- aceita especificações não vazias na confirmação de parâmetros
- valida especificações pelo schema canônico da representação
- considera núcleo e especificações no versionamento da regra
- persiste integralmente a representação confirmada em novas versões
- mantém versões anteriores e o job arquivado imutáveis
- registra alterações de especificações pelos refs dos elementos
- amplia testes de round-trip, versionamento, hash e preservação da regra
- inclui o autorizador real no contexto de persistência
- usa o proprietário do job no mock de usuário atual
- constrói a consulta de job com o novo grafo de dependências
@pedro-fs-garcia
pedro-fs-garcia merged commit 86fd1db into develop Sep 24, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants