Repository navigation
Closed
Labels
raiztarefas que dizem repseito à raiz do monorepotarefas que dizem repseito à raiz do monorepo
Milestone
Description
T-316 - Definir o contrato da explicação da simulação
- Componente: raiz (
contracts/edocs/decisoes/dec-087.md), sujeito a autorização. - Depende de: T-315 respondida, T-300 e T-304 no
develop, porque esta tarefa altera os mesmos schemas e a mesma decisão. - Data máxima: 10/11/2026
- Estimativa: 3 pontos (Fibonacci)
Entregável
- Campo
desfecho_explicacaona conclusão da trilha. - Descrição de
explicacao_idno eventono-concluidoalinhada à gravação da explicação reprovada. - Campo
explicacaona simulação deGET /jobs/{id}e descrição da flag de baixa rastreabilidade alinhada à regra que a liga. - Evento
explicacaono stream do job. - Exemplos novos registrados no manifesto.
- DEC-087 com o acesso à explicação conforme as respostas da PO.
Descrição
A etapa de explicação (T-317) grava a narrativa e publica a conclusão. A API (T-318) liga a flag de baixa rastreabilidade, devolve a narrativa na consulta do job e avisa o frontend pelo stream quando a narrativa fica pronta. Esta tarefa define esses contratos.
Contexto e decisões tomadas
explicacoesguarda a narrativa comaderencia_conferida, que éfalsequando algum número citado não corresponde ao apurado. A narrativa reprovada é gravada, para o auditor, e não é exibida ao profissional de RH.- Hoje a descrição de
explicacao_idemno-concluido.schema.jsondiz que o campo fica ausente "quando não houve narrativa utilizável". Com a gravação da reprovada, o campo passa a vir sempre que existe linha emexplicacoes, e só fica ausente quando o modelo não devolveu texto. - A flag fica em
simulacoes.flag_baixa_rastreabilidadee já sai emGET /jobs/{id}. A API a liga quando a etapa termina sem explicação ou com a explicação reprovada. - O evento
resultadodo stream anuncia a simulação, e a narrativa chega alguns segundos depois. O evento novoexplicacaoavisa a tela para buscar o job de novo, no mesmo padrão: carrega referências e desfecho, nunca o texto. - A DEC-087 nega ao profissional de RH, na matriz, o acesso à explicação gerada pela IA para conferência, e o concede na seção de critérios satisfeitos. A versão assumida na T-315 concede o acesso aos dois papéis.
Escopo
Dentro do escopo
contracts/domain/trilha-conclusao.schema.json,contracts/events/no-concluido.schema.json,contracts/http/openapi.yaml, os exemplos e o manifesto, edocs/decisoes/dec-087.md.
Fora do escopo
- Implementação no codegen, na API e no frontend.
- A explicação na resposta da consulta de auditoria, que já tem a seção
explicacoes(T-304).
Requisitos
- Antes de editar, pedir autorização conforme contract-change (
.agents/skills/contract-change/SKILL.md), informando os arquivos, o produtor do evento e da coluna (codegen), os consumidores (API e frontend), a compatibilidade (campos novos e opcionais; descrições alinhadas) e as validações. - Em
trilha-conclusao.schema.json, acrescentardesfecho_explicacao, descrito como "Nó explicacao", comenumconferida,reprovada,sem_respostaeprovedor_indisponivel. A descrição explica cada valor e diz que sóconferidaproduz narrativa exibível. - Em
no-concluido.schema.json, reescrever a descrição deexplicacao_id. O campo vem sempre que a etapa gravou linha emexplicacoes, conferida ou reprovada, e fica ausente quando o modelo não devolveu texto. A linha da etapa traz tambémresultado_idcom o resultado explicado. - Em
comum.schema.json, na descrição deno_grafo, tirarexplicacaodos nomes reservados e dizer que a etapa roda depois da decisão, só em simulação com sucesso. - Em
openapi.yaml, acrescentar àSimulacaoo campo opcionalexplicacao, comtextoecriada_em. Ele vem só quando a explicação do resultado vigente foi conferida. Fica ausente enquanto a explicação não chegou, quando ela faltou ou reprovou, e quando o resultado vigente é uma meta aceita. - Reescrever a descrição de
flag_baixa_rastreabilidade. Ela fica verdadeira quando a etapa de explicação terminou sem texto ou com o texto reprovado na conferência, e falsa enquanto a explicação não chegou. - Acrescentar o schema
EventoExplicacao(job_id,simulacao_id,disponivel) aoEventoProgresso, documentá-lo na descrição deGET /jobs/{id}/eventsao lado deresultadoe incluí-lo no exemplo do stream.disponivelé verdadeiro quando a explicação foi conferida. - Criar exemplos novos de conclusão e de evento com
desfecho_explicacaoe registrá-los emcontracts/examples/manifesto.json, sem alterar os exemplos existentes. - Na DEC-087, ajustar a linha "Acessar explicação gerada pela IA para conferência" e o "Mapa História × Papel" da US05 conforme as respostas da T-315.
Contexto técnico
- Entradas: as respostas da T-315.
- Saídas: os contratos da explicação.
- Componentes afetados:
contracts/edocs/decisoes/. - Restrições: evolução aditiva; nenhum campo existente muda de tipo ou de obrigatoriedade; o evento do stream não carrega o texto.
- Referências:
contracts/domain/trilha-conclusao.schema.json,contracts/events/no-concluido.schema.json,contracts/http/openapi.yaml,api/src/main/resources/db/changelog/changesets/011-cria-explicacoes.sql, DEC-087 (docs/decisoes/dec-087.md), contract-change (.agents/skills/contract-change/SKILL.md).
Critérios de aceitação
-
python contracts/validar-exemplos.pypassa com os exemplos novos. - Os exemplos existentes continuam válidos sem alteração.
- Os testes do codegen e da API passam sem mudança de código.
Definição de concluído (DoD)
- Autorização registrada antes da edição.
python contracts/validar-exemplos.pyegit diff --checksem falha, e gate dos quatro componentes verde.
Metadata
Metadata
Assignees
Labels
raiztarefas que dizem repseito à raiz do monorepotarefas que dizem repseito à raiz do monorepo
Activity