feat: expose adaptive preparation status and next action

This commit is contained in:
2026-10-29 22:51:15 +02:00
parent fb9a363e9e
commit d662e63469
4 changed files with 90 additions and 27 deletions
@@ -2110,3 +2110,12 @@ Corrigidos dois defeitos sobre `4f72751b`: uma oportunidade explícita fora de u
Ambos reproduzidos antes da correcção. Passaram 3 testes Unit novos (5 asserções) e 20 testes Feature existentes dirigidos (461 asserções), incluindo os estados MFA incompletos. PHPStan e Pint passaram no âmbito registado no recibo. Reutilizadas as provas históricas de 798 PHP e 1190 frontend: não se afirma uma nova execução integral. Conferidos os 32 ficheiros de provas anteriores, sem divergências; contrato de migrações mantém-se compatível, sem novo delta de schema.
Diagnóstico autenticado apenas de leitura às 20:40:29 UTC: destino continua em `fde73438`, nenhum erro Laravel datado de hoje no conjunto limitado examinado (até quatro logs recentes, últimos 2MiB por ficheiro), nenhum índice não sistémico inválido e nenhuma conta com confirmação MFA sem segredo em `teste_investidor:5432`. Não é uma auditoria histórica completa. Nenhuma instalação ou escrita na base activa. Conferência visual dirigida da candidata continua pendente; incluir estes dois comportamentos nos percursos já afectados. Evidências e hashes do novo delta no campo `targeted_error_consistency_review` do recibo existente.
### 29/10/2026 — percurso adaptativo: situação e próxima acção visíveis no resumo
Incremento de apresentação sobre `fb9a363e`, nos requisitos existentes V2-07/V2-10 e na orientação da Tempo de 23/10: com preparação activa, a situação do pedido, próxima acção e informação em falta passam a estar visíveis antes da secção fechada de detalhe. O investidor mantém a ligação existente para continuar o formulário; fontes, documentos e histórico sem aplicação continuam consultáveis. A preparação inactiva não passa a exigir passos novos. O componente partilhado cobre o percurso do investidor, a avaliação de contexto e a comparação de impacto. A alteração não edita declarações nem altera regras de enquadramento, cálculo, permissões ou schema.
Conferência dirigida: seis testes frontend existentes passaram; 22 verificações SSR cobriram os três modos, rótulos de dados em falta, preparação inactiva/ausente, ligação de continuação, histórico preservado e imutabilidade da origem. Tipos, formatação, lint e compilação QA passaram. Provas anteriores reutilizadas. Recibo no campo `adaptive_summary_increment` de `local-validation-20261029.json`.
**Conferência visual pendente pela equipa:** na candidata, abrir o resumo de preparação activo, conferir situação/próxima acção/dados em falta sem expandir detalhes, continuar pelo formulário e consultar histórico/fontes; verificar também preparação inactiva e ausência de dados em falta. Registar revisão, perfil, percurso e resultado nesta matriz. SSR não comprova apresentação no navegador. Sem instalação ou avanço de main; este incremento não encerra os requisitos transversais.
@@ -1182,5 +1182,39 @@
"deployment_triggered": false
},
"installation": "not triggered; directed candidate visual acceptance remains pending"
},
"adaptive_summary_increment": {
"recorded_at": "2026-10-29T20:51:14.826754+00:00",
"base_commit": "fb9a363e9ec2ea6a4171f818f7066524001f0d2b",
"requirements": [
"V2-07",
"V2-10",
"AGENTS.md: adaptive journey, Tempo decision 2026-10-23"
],
"behavior": "Enabled private-investment preparation shows mode, next action and missing information before collapsed details; existing continuation link, sources and history retained.",
"scope": "Presentation increment in existing component used by investor path, context assessment and impact comparison; no backend, schema, permissions or tax-rule changes.",
"source_sha256": "3ece2a02e8850ba51b95fd26c54b591734b7b16d9f4acb4d668900edb4f48bd1",
"checks": {
"existing_directed_frontend_tests": 6,
"ssr_assertions": 22,
"types": "passed",
"format": "passed",
"lint": "passed",
"qa_build": "passed"
},
"build_notes": "Initial build emitted a successful bundle but PowerShell reported nonzero with native stderr warnings. Native subprocess rerun records the actual exit code; existing optional font-fallback and chunk-size warnings remain.",
"evidence": {
"outputs/validation-20261029/adaptive-summary-frontend.log": "994d2f903754de5b3e55ca7d16c663df028d2690ad9bb7f53d40dc04b0a4b493",
"outputs/validation-20261029/adaptive-summary-ssr.log": "007b949eb7de05a6a8b459d5f0d761e059b138ffdaa6ca6be2359aad2ccd29ce",
"outputs/validation-20261029/adaptive-summary-types.log": "82962651e47f564de653ad2883f8fd34e7dae4b4468e4ac459cb3331962a3879",
"outputs/validation-20261029/adaptive-summary-format-check.log": "05dfa2b9a446accfd3ca297b76ae4959329b3d74ecfaac9778401687b641c4e3",
"outputs/validation-20261029/adaptive-summary-lint.log": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"outputs/validation-20261029/adaptive-summary-build.log": "aeac00243008a6264c1d1472bacd83b7f3a1608e29422c8d5fcef2d3cfc7ce66",
"outputs/validation-20261029/adaptive-summary-build-native.log": "458a59f4a8d794887576a417a90529cf29775cb17f58cd27137f54ee7a25d227",
"outputs/validation-20261029/adaptive-summary-build-exit.json": "48c0a1c3e213fae8dd8cd86e6c1d5ce41d5584b9f81e2c1022c51481f7a2e487"
},
"baseline_evidence": "Reused accepted PHP/frontend baseline; no full-suite rerun.",
"visual_acceptance": "Pending team execution and recording against candidate; SSR does not replace browser acceptance.",
"installation": "Not triggered; main and active release unchanged."
}
}
@@ -7647,3 +7647,12 @@ Corrigidos dois defeitos sobre `4f72751b`: uma oportunidade explícita fora de u
Ambos reproduzidos antes da correcção. Passaram 3 testes Unit novos (5 asserções) e 20 testes Feature existentes dirigidos (461 asserções), incluindo os estados MFA incompletos. PHPStan e Pint passaram no âmbito registado no recibo. Reutilizadas as provas históricas de 798 PHP e 1190 frontend: não se afirma uma nova execução integral. Conferidos os 32 ficheiros de provas anteriores, sem divergências; contrato de migrações mantém-se compatível, sem novo delta de schema.
Diagnóstico autenticado apenas de leitura às 20:40:29 UTC: destino continua em `fde73438`, nenhum erro Laravel datado de hoje no conjunto limitado examinado (até quatro logs recentes, últimos 2MiB por ficheiro), nenhum índice não sistémico inválido e nenhuma conta com confirmação MFA sem segredo em `teste_investidor:5432`. Não é uma auditoria histórica completa. Nenhuma instalação ou escrita na base activa. Conferência visual dirigida da candidata continua pendente; incluir estes dois comportamentos nos percursos já afectados. Evidências e hashes do novo delta no campo `targeted_error_consistency_review` do recibo existente.
### 29/10/2026 — percurso adaptativo: situação e próxima acção visíveis no resumo
Incremento de apresentação sobre `fb9a363e`, nos requisitos existentes V2-07/V2-10 e na orientação da Tempo de 23/10: com preparação activa, a situação do pedido, próxima acção e informação em falta passam a estar visíveis antes da secção fechada de detalhe. O investidor mantém a ligação existente para continuar o formulário; fontes, documentos e histórico sem aplicação continuam consultáveis. A preparação inactiva não passa a exigir passos novos. O componente partilhado cobre o percurso do investidor, a avaliação de contexto e a comparação de impacto. A alteração não edita declarações nem altera regras de enquadramento, cálculo, permissões ou schema.
Conferência dirigida: seis testes frontend existentes passaram; 22 verificações SSR cobriram os três modos, rótulos de dados em falta, preparação inactiva/ausente, ligação de continuação, histórico preservado e imutabilidade da origem. Tipos, formatação, lint e compilação QA passaram. Provas anteriores reutilizadas. Recibo no campo `adaptive_summary_increment` de `local-validation-20261029.json`.
**Conferência visual pendente pela equipa:** na candidata, abrir o resumo de preparação activo, conferir situação/próxima acção/dados em falta sem expandir detalhes, continuar pelo formulário e consultar histórico/fontes; verificar também preparação inactiva e ausência de dados em falta. Registar revisão, perfil, percurso e resultado nesta matriz. SSR não comprova apresentação no navegador. Sem instalação ou avanço de main; este incremento não encerra os requisitos transversais.
@@ -73,6 +73,44 @@ export function PreparationSummary({
<h2 className="text-xl font-bold">
Preparar o pedido de investimento privado
</h2>
{data.enabled && (
<div
className="space-y-2"
aria-label="Situação e próxima acção"
>
<p>
<strong>Situação:</strong> {preparationMode(data.mode)}.
</p>
<p>
<strong>Próxima acção:</strong> {data.next}.
</p>
{data.missing_fields.length > 0 && (
<p>
Informação em falta:{' '}
{(
data.missing_labels ??
data.missing_fields.map(
(key) =>
data.questions?.find(
(q) => q.key === key,
)?.label ??
(
{
currency: 'Moeda do projecto',
expected_start_date:
'Data prevista de início',
entity_stage:
'Situação da entidade',
} as Record<string, string>
)[key] ??
key,
)
).join('; ')}
.
</p>
)}
</div>
)}
{caseId && (
<p>
<Link
@@ -103,33 +141,6 @@ export function PreparationSummary({
'',
)}
</p>
<p>{data.next}</p>
{data.missing_fields.length > 0 && (
<p>
Informação em falta:{' '}
{(
data.missing_labels ??
data.missing_fields.map(
(key) =>
data.questions?.find(
(q) => q.key === key,
)?.label ??
(
{
currency:
'Moeda do projecto',
expected_start_date:
'Data prevista de início',
entity_stage:
'Situação da entidade',
} as Record<string, string>
)[key] ??
key,
)
).join('; ')}
.
</p>
)}
{!data.period_covered && (
<p>
Este incremento cobre pedidos com início