Integrated AI summary
This commit is contained in:
@@ -0,0 +1,76 @@
|
||||
package ai_summarizer
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"time"
|
||||
)
|
||||
|
||||
// Config holds the configuration for the AI Summarizer service.
|
||||
// It contains settings for both the HTTP API and the MinIO storage integration.
|
||||
type Config struct {
|
||||
// HTTP API settings
|
||||
APIBaseURL string // Base URL of the AI service, e.g. "http://ai-host:8000"
|
||||
APITimeout time.Duration // Timeout for HTTP requests to the AI API
|
||||
APIRetryCount int // Number of retry attempts for failed API requests
|
||||
APIRetryDelay time.Duration // Delay between retry attempts
|
||||
|
||||
// MinIO storage settings
|
||||
MinioEndpoint string // MinIO endpoint, e.g. "ai-host:9000"
|
||||
MinioAccessKey string // MinIO access key ID
|
||||
MinioSecretKey string // MinIO secret access key
|
||||
MinioUseSSL bool // Whether to use SSL for MinIO connection
|
||||
MinioRegion string // MinIO region
|
||||
MinioBucket string // MinIO bucket name (default: "opplens-documents")
|
||||
MinioTimeout time.Duration // Timeout for MinIO operations
|
||||
}
|
||||
|
||||
// DefaultConfig returns a Config with sensible defaults.
|
||||
func DefaultConfig() *Config {
|
||||
return &Config{
|
||||
APITimeout: 120 * time.Second,
|
||||
APIRetryCount: 2,
|
||||
APIRetryDelay: 3 * time.Second,
|
||||
|
||||
MinioBucket: "opplens-documents",
|
||||
MinioRegion: "us-east-1",
|
||||
MinioUseSSL: false,
|
||||
MinioTimeout: 30 * time.Second,
|
||||
}
|
||||
}
|
||||
|
||||
// Validate checks that all required configuration fields are present.
|
||||
// Use this when both HTTP API and MinIO storage are needed.
|
||||
func (c *Config) Validate() error {
|
||||
if c.APIBaseURL == "" {
|
||||
return errors.New("ai_summarizer: APIBaseURL is required")
|
||||
}
|
||||
return c.ValidateStorage()
|
||||
}
|
||||
|
||||
// ValidateStorage checks only the MinIO storage-related configuration fields.
|
||||
// Use this when only the storage client is needed (no HTTP API).
|
||||
func (c *Config) ValidateStorage() error {
|
||||
if c.MinioEndpoint == "" {
|
||||
return errors.New("ai_summarizer: MinioEndpoint is required")
|
||||
}
|
||||
if c.MinioAccessKey == "" {
|
||||
return errors.New("ai_summarizer: MinioAccessKey is required")
|
||||
}
|
||||
if c.MinioSecretKey == "" {
|
||||
return errors.New("ai_summarizer: MinioSecretKey is required")
|
||||
}
|
||||
if c.MinioBucket == "" {
|
||||
return fmt.Errorf("ai_summarizer: MinioBucket is required")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// ValidateAPI checks only the HTTP API-related configuration fields.
|
||||
// Use this when only the HTTP client is needed (no MinIO storage).
|
||||
func (c *Config) ValidateAPI() error {
|
||||
if c.APIBaseURL == "" {
|
||||
return errors.New("ai_summarizer: APIBaseURL is required")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user