109 lines
4.3 KiB
TypeScript
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>
|
|
);
|
|
}
|