T-079 - Implementar POST /jobs/id/reprocessar - #172
Merged
Merged
Conversation
- 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
pedro-fs-garcia
requested changes
Sep 23, 2026
pedro-fs-garcia
left a comment
Collaborator
There was a problem hiding this comment.
• 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
…-jobs/id/reprocessar
- 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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Resumo
Implementa a T-079, adicionando o endpoint
POST /jobs/{id}/reprocessarpara 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
POST /jobs/{id}/reprocessar;arquivado;aguardando_confirmacao_parametros;usuario_iddo job de origem;job_origem_id;versao = 1;origem = reprocessamento;regra_origem_idapontando para a versão original;nucleo,especificacoesehash;regra-submetidapelo outbox com origemreprocessamento.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}ePOST /jobs/{id}/parametersforam ajustados para suportar jobs originados de reprocessamento.Para esses jobs:
origem = reprocessamento;job_origem_ididentifica o job arquivado;submissao_idnão é retornado;Evento
O novo job publica
regra-submetidana 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>" }