ultisuite-client/components/admin/settings/sections/usage-quotas-section.tsx
2026-06-07 21:55:42 +02:00

98 lines
3.3 KiB
TypeScript

"use client"
import { OrgSettingsSection } from "@/components/admin/settings/org-settings-form"
import { useOrgSettingsStore } from "@/lib/admin-settings/org-settings-store"
import { Input } from "@/components/ui/input"
import { Label } from "@/components/ui/label"
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"
export function UsageQuotasSection() {
const usageQuotas = useOrgSettingsStore((s) => s.usageQuotas)
const setUsageQuotas = useOrgSettingsStore((s) => s.setUsageQuotas)
return (
<OrgSettingsSection
title="Quotas d'usage"
description="Limites d'utilisation des services IA, recherche web et automatisations par utilisateur."
policySection="usage_quotas"
>
<Card>
<CardHeader className="pb-3">
<CardTitle className="text-sm font-medium">Intelligence artificielle</CardTitle>
<CardDescription>Requêtes LLM et tokens consommés par mois.</CardDescription>
</CardHeader>
<CardContent className="grid gap-4 sm:grid-cols-2">
<div>
<Label>Requêtes LLM / jour</Label>
<Input
className="mt-1 h-9"
type="number"
min={0}
value={usageQuotas.llm_requests_per_day}
onChange={(e) =>
setUsageQuotas({ llm_requests_per_day: Number(e.target.value) || 0 })
}
/>
</div>
<div>
<Label>Tokens LLM / mois</Label>
<Input
className="mt-1 h-9"
type="number"
min={0}
value={usageQuotas.llm_tokens_per_month}
onChange={(e) =>
setUsageQuotas({ llm_tokens_per_month: Number(e.target.value) || 0 })
}
/>
</div>
</CardContent>
</Card>
<Card>
<CardHeader className="pb-3">
<CardTitle className="text-sm font-medium">Recherche et automatisations</CardTitle>
</CardHeader>
<CardContent className="grid gap-4 sm:grid-cols-3">
<div>
<Label>Recherches web / jour</Label>
<Input
className="mt-1 h-9"
type="number"
min={0}
value={usageQuotas.search_requests_per_day}
onChange={(e) =>
setUsageQuotas({ search_requests_per_day: Number(e.target.value) || 0 })
}
/>
</div>
<div>
<Label>Tokens API max / utilisateur</Label>
<Input
className="mt-1 h-9"
type="number"
min={0}
value={usageQuotas.max_api_tokens_per_user}
onChange={(e) =>
setUsageQuotas({ max_api_tokens_per_user: Number(e.target.value) || 0 })
}
/>
</div>
<div>
<Label>Webhooks max / utilisateur</Label>
<Input
className="mt-1 h-9"
type="number"
min={0}
value={usageQuotas.max_webhooks_per_user}
onChange={(e) =>
setUsageQuotas({ max_webhooks_per_user: Number(e.target.value) || 0 })
}
/>
</div>
</CardContent>
</Card>
</OrgSettingsSection>
)
}