import { useForm } from '@inertiajs/react'; import { Panel, FormErrors, controlClass } from '@/components/procurement'; import { Button } from '@/components/ui/button'; export type AiPlan = { state: 'draft'; provider: 'none' | 'openai'; model: string; domains: string[]; data_scopes: string[]; monthly_budget_usd: string; monthly_requests: number; max_input_bytes: number; max_output_tokens: number; }; export function AiPlanSettings({ plan, domains, scopes, version, ready, }: { plan: AiPlan; domains: Record; scopes: Record; version: number; ready: boolean; }) { const form = useForm({ version, provider: plan.provider, model: plan.model, domains: plan.domains, data_scopes: plan.data_scopes, monthly_budget_usd: plan.monthly_budget_usd, monthly_requests: plan.monthly_requests, max_input_bytes: plan.max_input_bytes, max_output_tokens: plan.max_output_tokens, reason: '', }); function choices( field: 'domains' | 'data_scopes', labels: Record, ) { return Object.entries(labels).map(([id, label]) => ( )); } return (

Prepare o fornecedor, o âmbito e os limites pretendidos. Guardar este plano permite pré-visualizar os factos autorizados nos relatórios; não envia dados nem activa chamadas externas.

{!ready ? (

Instalação da configuração pendente.

) : (
{ event.preventDefault(); form.post('/administracao/parametrizacao/ai_plan', { preserveScroll: true, }); }} >
Percursos abrangidos {choices('domains', domains)}
Categorias de factos permitidas {choices('data_scopes', scopes)}

As permissões dos documentos continuam a aplicar-se. Esta escolha não concede acesso a candidaturas, entrevistas ou finanças.

Limites de planeamento: ainda não existe contador mensal, reserva de orçamento ou cobrança por este plano.