70 lines
3.6 KiB
Go
70 lines
3.6 KiB
Go
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"`
|
|
}
|