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

109 lines
4.3 KiB
TypeScript

import { useForm } from '@inertiajs/react';
import { Panel, FormErrors, controlClass } from '@/components/procurement';
import { Button } from '@/components/ui/button';
export type IntelligencePolicy = {
revision: number;
configured: boolean;
procurement_brief: boolean;
people_brief: boolean;
};
export function IntelligenceSettings({
policy,
version,
ready,
}: {
policy: IntelligencePolicy;
version: number;
ready: boolean;
}) {
const form = useForm({
version,
procurement_brief: policy.procurement_brief,
people_brief: policy.people_brief,
reason: '',
});
return (
<Panel title="Inteligência e sínteses com fontes">
<div className="space-y-4 text-sm">
<p>
{policy.configured
? `Configuração da empresa · revisão ${policy.revision}.`
: 'Configuração inicial: sínteses locais disponíveis nos dois percursos.'}
</p>
<p>
Defina onde apresentar as sínteses factuais. A mudança
aplica-se às próximas consultas e não altera processos,
avaliações, decisões ou permissões de acesso aos documentos.
</p>
{!ready ? (
<p>
Instalação da configuração de inteligência pendente
neste ambiente.
</p>
) : (
<form
className="space-y-4"
onSubmit={(event) => {
event.preventDefault();
form.post(
'/administracao/parametrizacao/intelligence',
{ preserveScroll: true },
);
}}
>
<FormErrors errors={form.errors} />
<label className="flex items-center gap-2">
<input
type="checkbox"
checked={form.data.procurement_brief}
onChange={(event) =>
form.setData(
'procurement_brief',
event.target.checked,
)
}
/>
Síntese com fontes em Compras
</label>
<label className="flex items-center gap-2">
<input
type="checkbox"
checked={form.data.people_brief}
onChange={(event) =>
form.setData(
'people_brief',
event.target.checked,
)
}
/>
Síntese com fontes em Pessoas e contratações
</label>
<label className="grid gap-1">
Motivo e efeito pretendido
<textarea
className={controlClass}
minLength={10}
maxLength={4000}
required
value={form.data.reason}
onChange={(event) =>
form.setData('reason', event.target.value)
}
/>
</label>
<Button disabled={form.processing}>
Guardar configuração das sínteses
</Button>
</form>
)}
<p>
Sínteses factuais calculadas localmente, com fontes e sem
envio externo de documentos.
</p>
</div>
</Panel>
);
}