Files
compras/resources/js/components/evidence-brief.tsx
T
nala c6373365bf
tests / ci (push) Canceled after 0s
commit9
2026-10-30 20:02:30 +02:00

58 lines
2.1 KiB
TypeScript

import { Panel } from '@/components/procurement';
export type EvidenceBriefData = {
method: 'procurement_evidence_brief_v1' | 'people_evidence_brief_v1';
generated_at: string;
basis_sha256: string;
finance_visible: boolean;
claims: {
id: string;
text: string;
basis_sha256: string;
source: { label: string; href: string; pointer: string };
}[];
};
export function EvidenceBrief({ data }: { data: EvidenceBriefData }) {
return (
<Panel title="Síntese com fontes">
<div className="space-y-4 text-sm">
<p>
Síntese factual desta consulta. Cada ponto remete para a
secção de origem; confirme os registos antes de os usar numa
decisão.
</p>
<ul className="space-y-3">
{data.claims.map((claim) => (
<li key={claim.id}>
<p>{claim.text}</p>
<a className="underline" href={claim.source.href}>
Fonte: {claim.source.label}
</a>
</li>
))}
</ul>
{!data.finance_visible && (
<p>
O âmbito financeiro está reservado ao seu perfil e não
integra esta síntese.
</p>
)}
<details>
<summary className="cursor-pointer">
Método e referência da base consultada
</summary>
<p className="mt-2">
Método: síntese por regras, versão 1, sem modelo de IA
activo. O identificador permite comparar a base desta
síntese; não é uma assinatura ou aprovação.
</p>
<p className="mt-2 font-mono text-xs break-all">
SHA-256: {data.basis_sha256}
</p>
</details>
</div>
</Panel>
);
}