58 lines
2.1 KiB
TypeScript
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>
|
|
);
|
|
}
|