package bootstrap import ( "time" "tm/pkg/config" ) // Config defines the worker application configuration type Config struct { Database config.DatabaseConfig Logging config.LoggingConfig Notification config.NotificationConfig Ollama config.OllamaConfig Worker WorkerConfig GLM GLMConfig Scraper config.ScraperConfig MinIO config.MinIOConfig Queue QueueConfig `env:"QUEUE_" envPrefix:"QUEUE_"` AlertMail string `env:"ALERT_MAIL" envDefault:"alerts@opplens.com"` } // QueueConfig defines the queue configuration type QueueConfig struct { Enabled bool `env:"QUEUE_ENABLED" envDefault:"true"` RedisURL string `env:"QUEUE_REDIS_URL" envDefault:"redis://localhost:6379"` Mode string `env:"QUEUE_MODE" envDefault:"consumer"` // "producer", "consumer", or "both" MaxRetries int `env:"QUEUE_MAX_RETRIES" envDefault:"3"` RetryBackoff time.Duration `env:"QUEUE_RETRY_BACKOFF" envDefault:"10s"` JobTimeout time.Duration `env:"QUEUE_JOB_TIMEOUT" envDefault:"5m"` PoolSize int `env:"QUEUE_POOL_SIZE" envDefault:"10"` IsDLQEnabled bool `env:"QUEUE_DLQ_ENABLED" envDefault:"true"` Concurrency int `env:"QUEUE_CONCURRENCY" envDefault:"5"` ProducerBatch int `env:"QUEUE_PRODUCER_BATCH" envDefault:"100"` ProducerInterval string `env:"QUEUE_PRODUCER_INTERVAL" envDefault:"0 */6 * * * *"` // Every 6 hours } type WorkerConfig struct { Interval string `env:"WORKER_INTERVAL" envDefault:"* 10 * * * *"` NoticeProcessingLimit int `env:"WORKER_NOTICE_PROCESSING_LIMIT" envDefault:"0"` } type GLMConfig struct { BaseURL string `env:"GLM_BASE_URL" envDefault:"https://api.z.ai"` APIKey string `env:"GLM_API_KEY" envDefault:""` Timeout time.Duration `env:"GLM_TIMEOUT" envDefault:"300s"` RetryAttempts int `env:"GLM_RETRY_ATTEMPTS" envDefault:"3"` RetryDelay time.Duration `env:"GLM_RETRY_DELAY" envDefault:"2s"` EnableLogging bool `env:"GLM_ENABLE_LOGGING" envDefault:"true"` UserAgent string `env:"GLM_USER_AGENT" envDefault:"Opplens-GLMSDK/1.0"` DefaultModel string `env:"GLM_DEFAULT_MODEL" envDefault:"glm-4.5"` DefaultMaxTokens int `env:"GLM_DEFAULT_MAX_TOKENS" envDefault:"4096"` DefaultTopP float64 `env:"GLM_DEFAULT_TOP_P" envDefault:"1.0"` DefaultTemperature float64 `env:"GLM_DEFAULT_TEMPERATURE" envDefault:"0.7"` DefaultFrequencyPenalty float64 `env:"GLM_DEFAULT_FREQUENCY_PENALTY" envDefault:"0"` DefaultPresencePenalty float64 `env:"GLM_DEFAULT_PRESENCE_PENALTY" envDefault:"0"` EnableStreaming bool `env:"GLM_ENABLE_STREAMING" envDefault:"false"` EnableThinking bool `env:"GLM_ENABLE_THINKING" envDefault:"false"` TranslateOptions TranslateOptions } type TranslateOptions struct { Model string `env:"GLM_TRANSLATION_MODEL" envDefault:"glm-4.5"` MaxTokens int `env:"GLM_TRANSLATION_MAX_TOKENS" envDefault:"2048"` Temperature float64 `env:"GLM_TRANSLATION_TEMPERATURE" envDefault:"0.3"` FrequencyPenalty float64 `env:"GLM_TRANSLATION_FREQUENCY_PENALTY" envDefault:"0.1"` PresencePenalty float64 `env:"GLM_TRANSLATION_PRESENCE_PENALTY" envDefault:"0.1"` TopP float64 `env:"GLM_TRANSLATION_TOP_P" envDefault:"1.0"` EnableThinking bool `env:"GLM_TRANSLATION_ENABLE_THINKING" envDefault:"false"` }