| 123456789101112131415161718192021222324252627282930 |
- package main
- import (
- "spider/internal/model"
- "gorm.io/gorm"
- )
- // seedSettings 在 managed_settings 表为空时插入默认配置值。
- // 使用 FirstOrCreate 保证幂等性,已有记录不会被覆盖。
- func seedSettings(db *gorm.DB) {
- defaults := []model.ManagedSetting{
- {KeyName: "pipeline.skip_phases", Value: "[]", ValueType: "json", EffectLevel: "new_task", Description: "默认跳过的阶段"},
- {KeyName: "pipeline.checkpoint_interval", Value: "30", ValueType: "int", EffectLevel: "runtime", Description: "进度上报间隔(秒)"},
- {KeyName: "tg_scraper.message_limit_per_channel", Value: "500", ValueType: "int", EffectLevel: "runtime", Description: "每频道最大消息数"},
- {KeyName: "tg_scraper.delay_per_message", Value: "1.0", ValueType: "float", EffectLevel: "runtime", Description: "消息间延迟(秒)"},
- {KeyName: "tg_scraper.delay_per_channel", Value: "5.0", ValueType: "float", EffectLevel: "runtime", Description: "频道间延迟(秒)"},
- {KeyName: "tg_scraper.delay_per_verify", Value: "3.0", ValueType: "float", EffectLevel: "runtime", Description: "验证间延迟(秒)"},
- {KeyName: "clean.timeout_seconds", Value: "3600", ValueType: "int", EffectLevel: "runtime", Description: "清洗阶段超时(秒)"},
- {KeyName: "search.timeout_seconds", Value: "3600", ValueType: "int", EffectLevel: "runtime", Description: "搜索阶段超时(秒)"},
- {KeyName: "snowball.max_channels_per_layer", Value: "200", ValueType: "int", EffectLevel: "runtime", Description: "每层最大频道数"},
- {KeyName: "snowball.max_channels_total", Value: "500", ValueType: "int", EffectLevel: "runtime", Description: "总最大频道数"},
- {KeyName: "tme_validator.enabled", Value: "true", ValueType: "bool", EffectLevel: "runtime", Description: "启用t.me死号预检"},
- {KeyName: "tme_validator.rate_per_min", Value: "60", ValueType: "int", EffectLevel: "runtime", Description: "预检限速(次/分)"},
- {KeyName: "tme_validator.concurrency", Value: "10", ValueType: "int", EffectLevel: "runtime", Description: "预检并发数"},
- }
- for _, s := range defaults {
- db.Where(model.ManagedSetting{KeyName: s.KeyName}).FirstOrCreate(&s)
- }
- }
|