fix: remove internal metadata from investor dossier presentation
tests / ci (push) Canceled after 0s
tests / ci (push) Canceled after 0s
This commit is contained in:
@@ -1,5 +1,13 @@
|
||||
# Rastreabilidade, utilização e formação
|
||||
|
||||
## Dossier orientado ao investidor — 23/10/2026
|
||||
|
||||
Correcção da apresentação solicitada pela Tempo: o componente partilhado de documentos do contexto mostrava, por defeito, identidade técnica, versões, hashes, notas de permissões e mensagens de ausência de suporte. Era reutilizado na entrada, edição e consulta do dossier; a entrada repetia ainda a mesma oportunidade num bloco de origem técnica.
|
||||
|
||||
O investidor vê agora a escolha pelo título e respectiva ligação. **Documentos de apoio** só aparece quando existem documentos, com título, edição disponível, referência de secção e consulta do documento. Sem documentos, não se apresenta uma caixa vazia nem uma pendência genérica da biblioteca. Retirados também UUID, motor de cálculo, versões internas e chaves de origem dos resumos, prévia e consulta do dossier. Mantidas as informações operacionais relevantes: escolhas, localização, impactos da alteração, resultados que precisam de revisão, documentos e pedidos identificados por protocolo. As rotas e verificações de acesso são as mesmas; não há mudança de dados, histórico, fontes, permissões, cálculos ou publicações.
|
||||
|
||||
Tipos e build passaram. Reproduzido o exemplo Florestas/Beira (`opportunity:53`) na homologação antes da integração, sem criar ou alterar um dossier. Esta é uma correcção de apresentação nos componentes e páginas do percurso, não uma declaração de revisão integral do portal.
|
||||
|
||||
## Explorar oportunidades por corredor — 23/10/2026
|
||||
|
||||
Disponível e conferido no navegador da homologação, revisão funcional `20349299`: [explorar Agronegócio por corredor](https://teste-investidor.tempo.co.mz/oportunidades?sector=agronegocio&view=corridors). Conferidos os seis grupos, 34 resultados, acesso no início de Agronegócio e escolha dos IDs 54/64 de corredores diferentes, mantida depois do filtro Soja. [Recibo da passagem](agribusiness-corridor-explorer-20261023.json).
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import { Link } from '@inertiajs/react';
|
||||
import type { ContextReference } from '@/lib/investor-context';
|
||||
|
||||
export default function ContextDocuments({
|
||||
@@ -6,49 +5,28 @@ export default function ContextDocuments({
|
||||
}: {
|
||||
source?: ContextReference;
|
||||
}) {
|
||||
if (!source) return null;
|
||||
if (!source?.documents?.length) return null;
|
||||
return (
|
||||
<section
|
||||
aria-label="Fonte e documentos do contexto"
|
||||
aria-label="Documentos de apoio"
|
||||
className="space-y-2 rounded border p-4"
|
||||
>
|
||||
<h2 className="font-semibold">Fonte e documentos do contexto</h2>
|
||||
<p>
|
||||
<Link className="underline" href={source.href}>
|
||||
{source.title}
|
||||
</Link>{' '}
|
||||
· versão da oportunidade {source.version ?? 'não indicada'} ·{' '}
|
||||
{source.visibility === 'private'
|
||||
? 'Preparação privada — não publicada'
|
||||
: 'Referência pública'}
|
||||
</p>
|
||||
<h2 className="font-semibold">Documentos de apoio</h2>
|
||||
{(source.documents ?? []).map((doc) => (
|
||||
<article
|
||||
key={doc.support_id}
|
||||
className="space-y-1 rounded border p-3"
|
||||
>
|
||||
<p>
|
||||
{doc.title} · {doc.edition ?? 'Edição não indicada'} ·
|
||||
versão documental {doc.document_version} · metadados v
|
||||
{doc.metadata_version}
|
||||
{doc.title}{doc.edition ? ` · ${doc.edition}` : ''}
|
||||
</p>
|
||||
<p className="break-all">SHA256: {doc.sha256}</p>
|
||||
{doc.section && <p>Referência utilizada: {doc.section}</p>}
|
||||
<p>{doc.source_reference}</p>
|
||||
<a className="underline" href={doc.download_url}>
|
||||
Consultar original autorizado —{' '}
|
||||
Consultar documento —{' '}
|
||||
{doc.edition ?? doc.title}
|
||||
</a>
|
||||
</article>
|
||||
))}
|
||||
{!source.documents?.length && (
|
||||
<p>Sem suporte da biblioteca associado nesta versão.</p>
|
||||
)}
|
||||
<p>
|
||||
Referência guardada nesta versão do dossier. A consulta do
|
||||
original continua sujeita às permissões actuais; esta ligação
|
||||
não publica nem concede acesso adicional.
|
||||
</p>
|
||||
</section>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -33,14 +33,10 @@ export default function ContextStart({
|
||||
<ContextDocuments source={source ?? undefined} />
|
||||
{source && (
|
||||
<section className={card}>
|
||||
<h2 className="font-bold">Origem consultada</h2>
|
||||
<h2 className="font-bold">A sua escolha</h2>
|
||||
<Link className="underline" href={source.href}>
|
||||
{source.title}
|
||||
</Link>
|
||||
<p>
|
||||
{source.kind} · v{source.version ?? 'não exposta'} ·{' '}
|
||||
{source.key}
|
||||
</p>
|
||||
</section>
|
||||
)}
|
||||
<section className={card + ' space-y-3'}>
|
||||
|
||||
@@ -195,8 +195,7 @@ export default function ContextEditor({
|
||||
Voltar ao mesmo dossier
|
||||
</Link>
|
||||
<p>
|
||||
{view.case.title} · UUID {view.case.id} · dossier v
|
||||
{view.case.version} · contexto v{view.context.revision}
|
||||
{view.case.title}
|
||||
</p>
|
||||
<p className="rounded border border-emerald-300 bg-emerald-50 p-3">
|
||||
As referências apoiam a preparação. Associar uma
|
||||
@@ -379,8 +378,7 @@ export default function ContextEditor({
|
||||
{view.context.selection.territory && (
|
||||
<p>
|
||||
Referência guardada:{' '}
|
||||
{view.context.selection.territory.title} · v
|
||||
{view.context.selection.territory.version}.
|
||||
{view.context.selection.territory.title}
|
||||
</p>
|
||||
)}
|
||||
{manageChoices && <p>Confirme a localização em cada ficha acima; a localização geral não substitui as escolhas individuais.</p>}
|
||||
@@ -603,7 +601,6 @@ export default function ContextEditor({
|
||||
Mantido
|
||||
</th>
|
||||
<td className="p-2">
|
||||
UUID, identidade e{' '}
|
||||
{plan.documents_preserved}{' '}
|
||||
documentos.{' '}
|
||||
{plan.maintained.map((x) => (
|
||||
@@ -648,11 +645,7 @@ export default function ContextEditor({
|
||||
href={r.href}
|
||||
>
|
||||
{r.title}
|
||||
</Link>{' '}
|
||||
· {r.kind} · v
|
||||
{r.version ??
|
||||
'não exposta'}{' '}
|
||||
· origem {r.key}
|
||||
</Link>
|
||||
</p>
|
||||
),
|
||||
)}
|
||||
@@ -664,14 +657,7 @@ export default function ContextEditor({
|
||||
</th>
|
||||
<td className="p-2">
|
||||
{plan.dependent_results.length}{' '}
|
||||
resultados financeiros acessíveis
|
||||
afetados:{' '}
|
||||
{plan.dependent_results
|
||||
.map((r) => r.id)
|
||||
.join(', ') || 'nenhum'}
|
||||
. Etapas:{' '}
|
||||
{plan.review_steps.join(', ') ||
|
||||
'nenhuma alteração de dependências'}
|
||||
resultados financeiros afectados. Etapas a rever: {plan.review_steps.length}
|
||||
. Dados já preenchidos nos
|
||||
formulários conservam-se até à sua
|
||||
conferência.
|
||||
@@ -683,12 +669,11 @@ export default function ContextEditor({
|
||||
</th>
|
||||
<td className="p-2">
|
||||
{plan.requests.length} pedidos e os
|
||||
snapshots, decisões e resultados
|
||||
dados, decisões e resultados
|
||||
anteriores.{' '}
|
||||
{plan.requests.map((r) => (
|
||||
<p key={r.id}>
|
||||
{r.protocol || r.id} · v
|
||||
{r.version} · {r.status}
|
||||
{r.protocol || 'Pedido guardado'}
|
||||
</p>
|
||||
))}
|
||||
</td>
|
||||
@@ -732,7 +717,7 @@ export default function ContextEditor({
|
||||
</h2>
|
||||
{view.results.map((r) => (
|
||||
<p key={r.id}>
|
||||
{r.id} · {r.engine} ·{' '}
|
||||
Resultado guardado —{' '}
|
||||
{r.context_state === 'review_required'
|
||||
? 'Desatualizado para o contexto atual — exige revisão/recálculo'
|
||||
: 'Guardado para o contexto indicado no dossier'}
|
||||
@@ -744,7 +729,7 @@ export default function ContextEditor({
|
||||
className="underline"
|
||||
href={'/balcao-virtual/pedidos/' + r.id}
|
||||
>
|
||||
{r.protocol || r.id}
|
||||
{r.protocol || 'Consultar pedido'}
|
||||
</Link>{' '}
|
||||
· {r.status} ·{' '}
|
||||
{r.context_state === 'historical_submission'
|
||||
|
||||
@@ -36,7 +36,7 @@ export default function InvestmentContexts({
|
||||
<main className="mx-auto max-w-5xl space-y-6 p-4 md:p-8">
|
||||
<Head title="Os meus investimentos" />
|
||||
<h1 className="text-2xl font-semibold">Os meus investimentos</h1>
|
||||
{zoneSource && <section className="rounded border p-4"><h2>Parque consultado: {zoneSource.title} · versão {zoneSource.consulted_public_version}</h2><p>{zoneSource.notice}</p><Link className="underline" href={zoneSource.href}>Voltar à ficha pública</Link></section>}
|
||||
{zoneSource && <section className="rounded border p-4"><h2>Parque escolhido: {zoneSource.title}</h2><Link className="underline" href={zoneSource.href}>Consultar parque</Link></section>}
|
||||
{sectorSource && (
|
||||
<p>
|
||||
Preparar uma ideia em{' '}
|
||||
@@ -53,7 +53,7 @@ export default function InvestmentContexts({
|
||||
<Link className="underline" href={contentSource.href}>
|
||||
{contentSource.title}
|
||||
</Link>
|
||||
. A fonte e a versão serão guardadas no dossier escolhido.
|
||||
.
|
||||
</p>
|
||||
)}
|
||||
<p>
|
||||
|
||||
@@ -119,12 +119,9 @@ function Result({ result }: { result: PathResult }) {
|
||||
</p>
|
||||
<p className="text-sm">
|
||||
Estimativa recalculada pelas fórmulas da ferramenta a partir
|
||||
das entradas guardadas, versão {result.draft_version}. Não
|
||||
dos dados preenchidos. Não
|
||||
constitui decisão de financiamento.
|
||||
</p>
|
||||
<p className="text-xs break-all">
|
||||
Evidência {result.id} · {result.engine}
|
||||
</p>
|
||||
</li>
|
||||
);
|
||||
} catch (error) {
|
||||
@@ -451,16 +448,14 @@ export default function InvestmentPath(path: Path) {
|
||||
{path.investment_context && (
|
||||
<section className="space-y-2 rounded border border-emerald-300 bg-emerald-50 p-4">
|
||||
<h2 className="font-semibold">
|
||||
Contexto atual — revisão{' '}
|
||||
{path.investment_context.revision}
|
||||
As suas escolhas
|
||||
</h2>
|
||||
{Object.values(path.investment_context.selection).map(
|
||||
(ref) => (
|
||||
<p key={ref.key}>
|
||||
<Link className="underline" href={ref.href}>
|
||||
{ref.title}
|
||||
</Link>{' '}
|
||||
· versão {ref.version ?? 'não exposta'}
|
||||
</Link>
|
||||
</p>
|
||||
),
|
||||
)}
|
||||
@@ -492,15 +487,9 @@ export default function InvestmentPath(path: Path) {
|
||||
{zone.title}
|
||||
</Link>
|
||||
<p>
|
||||
UUID {zone.zone_id} · versão consultada{' '}
|
||||
{zone.consulted_public_version} ·{' '}
|
||||
{zone.selected_at}
|
||||
</p>
|
||||
<p>{zone.notice}</p>
|
||||
<p>
|
||||
A ficha atual pode ter uma versão diferente;
|
||||
esta referência conserva a consulta registada.
|
||||
</p>
|
||||
</article>
|
||||
))}
|
||||
</section>
|
||||
|
||||
Reference in New Issue
Block a user