- notification 서비스 테스트 추가 - workflow lifecycle 관리 구현 - config, scheduler, workflow 서비스 개선
85 lines
2.4 KiB
Go
85 lines
2.4 KiB
Go
package config
|
|
|
|
import (
|
|
"os"
|
|
"strconv"
|
|
)
|
|
|
|
type Config struct {
|
|
AppEnv string
|
|
HTTPAddr string
|
|
DatabaseURL string
|
|
RedisURL string
|
|
RedisKeyPrefix string
|
|
AuthUsername string
|
|
AuthPassword string
|
|
ModelBaseURL string
|
|
ModelAPIKey string
|
|
ModelName string
|
|
ModelContextSize int
|
|
ModelTimeoutSec int
|
|
A2AEdgeURL string
|
|
A2AAgentURL string
|
|
A2AToken string
|
|
A2ATimeoutSec int
|
|
MattermostBaseURL string
|
|
MattermostToken string
|
|
PlaneBaseURL string
|
|
PlaneToken string
|
|
WorkflowTaskTimeoutSec int
|
|
}
|
|
|
|
func Load() Config {
|
|
return Config{
|
|
AppEnv: getEnv("APP_ENV", "local"),
|
|
HTTPAddr: getEnv("HTTP_ADDR", ":8080"),
|
|
DatabaseURL: os.Getenv("DATABASE_URL"),
|
|
RedisURL: os.Getenv("REDIS_URL"),
|
|
RedisKeyPrefix: os.Getenv("REDIS_KEY_PREFIX"),
|
|
AuthUsername: getEnv("AUTH_USERNAME", "nomadcode"),
|
|
AuthPassword: os.Getenv("AUTH_PASSWORD"),
|
|
ModelBaseURL: getEnv("MODEL_BASE_URL", "http://192.168.0.91:11434"),
|
|
ModelAPIKey: getEnv("MODEL_API_KEY", "ollama"),
|
|
ModelName: getEnv("MODEL_NAME", "qwen3.6:35b-a3b-bf16"),
|
|
ModelContextSize: getEnvInt("MODEL_CONTEXT_SIZE", 262144),
|
|
ModelTimeoutSec: getEnvInt("MODEL_TIMEOUT_SEC", 300),
|
|
A2AEdgeURL: firstEnv("A2A_EDGE_URL", "A2A_AGENT_URL"),
|
|
A2AAgentURL: firstEnv("A2A_AGENT_URL", "A2A_EDGE_URL"),
|
|
A2AToken: os.Getenv("A2A_TOKEN"),
|
|
A2ATimeoutSec: getEnvInt("A2A_TIMEOUT_SEC", 300),
|
|
MattermostBaseURL: os.Getenv("MATTERMOST_BASE_URL"),
|
|
MattermostToken: os.Getenv("MATTERMOST_TOKEN"),
|
|
PlaneBaseURL: os.Getenv("PLANE_BASE_URL"),
|
|
PlaneToken: os.Getenv("PLANE_TOKEN"),
|
|
WorkflowTaskTimeoutSec: getEnvInt("WORKFLOW_TASK_TIMEOUT_SEC", 300),
|
|
}
|
|
}
|
|
|
|
func getEnv(key, fallback string) string {
|
|
value := os.Getenv(key)
|
|
if value == "" {
|
|
return fallback
|
|
}
|
|
return value
|
|
}
|
|
|
|
func firstEnv(keys ...string) string {
|
|
for _, key := range keys {
|
|
if value := os.Getenv(key); value != "" {
|
|
return value
|
|
}
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func getEnvInt(key string, fallback int) int {
|
|
value := os.Getenv(key)
|
|
if value == "" {
|
|
return fallback
|
|
}
|
|
parsed, err := strconv.Atoi(value)
|
|
if err != nil {
|
|
return fallback
|
|
}
|
|
return parsed
|
|
}
|