69 lines
2.5 KiB
TypeScript
69 lines
2.5 KiB
TypeScript
export type AiPreparation = {
|
|
status:
|
|
| 'not_configured'
|
|
| 'outside_scope'
|
|
| 'no_permitted_facts'
|
|
| 'input_exceeds_limit'
|
|
| 'draft';
|
|
external_execution_enabled: false;
|
|
usage_checked: false;
|
|
policy_revision: number;
|
|
provider: string;
|
|
model: string;
|
|
max_input_bytes: number;
|
|
max_output_tokens: number;
|
|
input_bytes: number;
|
|
facts: {
|
|
id: string;
|
|
text: string;
|
|
source: { label: string; href: string; pointer: string };
|
|
}[];
|
|
};
|
|
|
|
export function AiPreparationPreview({ data }: { data: AiPreparation }) {
|
|
if (data.status === 'not_configured') return null;
|
|
const messages = {
|
|
outside_scope:
|
|
'Este percurso não está abrangido pelo plano da empresa.',
|
|
no_permitted_facts:
|
|
'Não há factos autorizados pelas categorias escolhidas para este relatório.',
|
|
input_exceeds_limit:
|
|
'Os dados excedem o limite planeado por pedido. Reveja o âmbito em Administração.',
|
|
draft: 'Pré-visualização do âmbito planeado. Nenhum dado foi enviado.',
|
|
};
|
|
return (
|
|
<details className="rounded-xl border p-4 text-sm print:hidden">
|
|
<summary className="cursor-pointer font-medium">
|
|
Pré-visualização de IA — plano da empresa
|
|
</summary>
|
|
<div className="mt-4 space-y-3">
|
|
<p>{messages[data.status]}</p>
|
|
<p>
|
|
Revisão {data.policy_revision} · Fornecedor pretendido:{' '}
|
|
{data.provider} · Modelo: {data.model}
|
|
</p>
|
|
<p>
|
|
Dados pré-visualizados: {data.input_bytes} /{' '}
|
|
{data.max_input_bytes} bytes. Limite de saída pretendido:{' '}
|
|
{data.max_output_tokens} tokens.
|
|
</p>
|
|
<ul className="space-y-3">
|
|
{data.facts.map((fact) => (
|
|
<li key={fact.id}>
|
|
<p>{fact.text}</p>
|
|
<a className="underline" href={fact.source.href}>
|
|
Fonte: {fact.source.label}
|
|
</a>
|
|
</li>
|
|
))}
|
|
</ul>
|
|
<p>
|
|
Os limites mensais de consumo ainda não foram conferidos. O
|
|
plano não autoriza execução externa; os relatórios e
|
|
decisões mantêm o seu circuito.
|
|
</p>
|
|
</div>
|
|
</details>
|
|
);
|
|
}
|