feat: 创建工厂类和种子数据

- SystemSettingFactory: 系统设置工厂
- TerminalFactory: 终端工厂
- SopTemplateFactory: SOP模板工厂
- SystemSettingSeeder: 系统设置种子数据
- TerminalSeeder: 终端种子数据
- SopTemplateSeeder: SOP模板种子数据
- 更新 DatabaseSeeder 注册新的种子类
This commit is contained in:
2026-03-09 10:07:49 +08:00
parent 9d0055138c
commit ef195d1ea0
7 changed files with 913 additions and 0 deletions

View File

@@ -0,0 +1,206 @@
<?php
namespace Database\Seeders;
use App\Models\SystemSetting;
use Illuminate\Database\Seeder;
class SystemSettingSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
$this->command->info('开始创建系统设置...');
// 1. 嵌入模型配置
$this->command->info('创建嵌入模型配置...');
SystemSetting::create([
'key' => 'embedding.model_name',
'value' => [
'model_name' => 'text-embedding-3-small',
],
'group' => 'embedding',
'description' => '嵌入模型名称',
'is_public' => false,
]);
SystemSetting::create([
'key' => 'embedding.api_key',
'value' => [
'api_key' => '',
],
'group' => 'embedding',
'description' => 'OpenAI API 密钥(敏感信息)',
'is_public' => false,
]);
SystemSetting::create([
'key' => 'embedding.endpoint_url',
'value' => [
'endpoint_url' => 'https://api.openai.com/v1/embeddings',
],
'group' => 'embedding',
'description' => '嵌入模型 API 端点 URL',
'is_public' => false,
]);
SystemSetting::create([
'key' => 'embedding.dimensions',
'value' => [
'dimensions' => 1536,
],
'group' => 'embedding',
'description' => '嵌入向量维度',
'is_public' => false,
]);
SystemSetting::create([
'key' => 'embedding.batch_size',
'value' => [
'batch_size' => 100,
],
'group' => 'embedding',
'description' => '批量处理大小',
'is_public' => false,
]);
// 2. 分块参数配置
$this->command->info('创建分块参数配置...');
SystemSetting::create([
'key' => 'chunking.chunk_size',
'value' => [
'chunk_size' => 1000,
],
'group' => 'chunking',
'description' => '文档分块大小(字符数)',
'is_public' => true,
]);
SystemSetting::create([
'key' => 'chunking.chunk_overlap',
'value' => [
'chunk_overlap' => 200,
],
'group' => 'chunking',
'description' => '分块重叠大小(字符数)',
'is_public' => true,
]);
SystemSetting::create([
'key' => 'chunking.separator',
'value' => [
'separator' => "\n\n",
],
'group' => 'chunking',
'description' => '分块分隔符',
'is_public' => true,
]);
SystemSetting::create([
'key' => 'chunking.min_chunk_size',
'value' => [
'min_chunk_size' => 100,
],
'group' => 'chunking',
'description' => '最小分块大小(字符数)',
'is_public' => true,
]);
// 3. 系统全局配置
$this->command->info('创建系统全局配置...');
SystemSetting::create([
'key' => 'system.name',
'value' => [
'name' => '知识库管理系统',
],
'group' => 'system',
'description' => '系统名称',
'is_public' => true,
]);
SystemSetting::create([
'key' => 'system.timeout',
'value' => [
'timeout' => 60,
],
'group' => 'system',
'description' => 'API 请求超时时间(秒)',
'is_public' => false,
]);
SystemSetting::create([
'key' => 'system.max_retries',
'value' => [
'max_retries' => 3,
],
'group' => 'system',
'description' => 'API 请求最大重试次数',
'is_public' => false,
]);
SystemSetting::create([
'key' => 'system.max_upload_size',
'value' => [
'max_upload_size' => 10485760, // 10MB
],
'group' => 'system',
'description' => '最大文件上传大小(字节)',
'is_public' => true,
]);
SystemSetting::create([
'key' => 'system.allowed_file_types',
'value' => [
'allowed_file_types' => ['docx', 'pdf', 'txt', 'md'],
],
'group' => 'system',
'description' => '允许上传的文件类型',
'is_public' => true,
]);
// 4. 搜索配置
$this->command->info('创建搜索配置...');
SystemSetting::create([
'key' => 'search.top_k',
'value' => [
'top_k' => 5,
],
'group' => 'search',
'description' => '搜索返回的最大结果数',
'is_public' => true,
]);
SystemSetting::create([
'key' => 'search.similarity_threshold',
'value' => [
'similarity_threshold' => 0.7,
],
'group' => 'search',
'description' => '相似度阈值0-1',
'is_public' => true,
]);
SystemSetting::create([
'key' => 'search.enable_rerank',
'value' => [
'enable_rerank' => false,
],
'group' => 'search',
'description' => '是否启用重排序',
'is_public' => false,
]);
$this->command->info('系统设置创建完成!');
$this->command->newLine();
$this->command->info('=== 生成的配置摘要 ===');
$this->command->info('总配置数量: ' . SystemSetting::count());
$this->command->info(' - 嵌入模型配置: ' . SystemSetting::where('group', 'embedding')->count());
$this->command->info(' - 分块参数配置: ' . SystemSetting::where('group', 'chunking')->count());
$this->command->info(' - 系统全局配置: ' . SystemSetting::where('group', 'system')->count());
$this->command->info(' - 搜索配置: ' . SystemSetting::where('group', 'search')->count());
$this->command->info(' - 公开配置: ' . SystemSetting::where('is_public', true)->count());
$this->command->info(' - 私有配置: ' . SystemSetting::where('is_public', false)->count());
}
}