Files
hoshpoint-backend/app/Filament/Resources/AiProviders/Schemas/AiProviderForm.php

59 lines
2.5 KiB
PHP

<?php
namespace App\Filament\Resources\AiProviders\Schemas;
use App\Enums\AiProviderDriver;
use Filament\Forms\Components\Select;
use Filament\Forms\Components\TextInput;
use Filament\Forms\Components\Toggle;
use Filament\Schemas\Components\Utilities\Get;
use Filament\Schemas\Schema;
class AiProviderForm
{
public static function configure(Schema $schema): Schema
{
return $schema
->components([
TextInput::make('name')
->label('نام')
->required()
->maxLength(255),
Select::make('driver')
->label('سرویس‌دهنده')
->options([
AiProviderDriver::OpenAi->value => AiProviderDriver::OpenAi->label(),
AiProviderDriver::GapGpt->value => AiProviderDriver::GapGpt->label(),
])
->default(AiProviderDriver::OpenAi->value)
->live()
->required(),
TextInput::make('model')
->label('مدل')
->helperText('مثال: gpt-4o-mini')
->required()
->maxLength(255),
TextInput::make('base_url')
->label('آدرس API (Base URL)')
->url()
->placeholder(fn (Get $get): string => AiProviderDriver::from($get('driver') ?? AiProviderDriver::OpenAi->value)->defaultBaseUrl())
->helperText('در صورت خالی بودن، آدرس پیش‌فرض همان سرویس‌دهنده استفاده می‌شود.')
->maxLength(255),
TextInput::make('api_key')
->label('API Key')
->password()
->revealable()
->autocomplete('new-password')
->required(fn (string $operation): bool => $operation === 'create')
->saved(fn (?string $state): bool => filled($state))
->maxLength(1000),
Toggle::make('is_active')
->label('فعال')
->default(true),
Toggle::make('is_default')
->label('پیش‌فرض')
->helperText('هنگام تولید محتوا در صورت وجود چند سرویس فعال، این سرویس اولویت دارد.'),
]);
}
}