nxtgauge-ai-assistant/src/config/mod.rs
Tracewebstudio Dev 72d44bbd63 feat: wire NxtgaugeTicketProvider and NxtgaugeHelpCenterProvider to real backend APIs
- Add NxtgaugeTicketProvider: calls /api/support/tickets/ai/create with service key auth
- Add NxtgaugeHelpCenterProvider: calls /api/kb/articles for help search
- Add ExternalService error variant for HTTP call failures
- Add NXTGAUGE_USERS_URL config env var
2026-04-15 18:18:39 +02:00

48 lines
1.6 KiB
Rust

use std::net::SocketAddr;
#[derive(Debug, Clone)]
pub struct AppConfig {
pub app_host: String,
pub app_port: u16,
pub database_url: Option<String>,
pub ollama_base_url: String,
pub ollama_chat_model: String,
pub ollama_embed_model: String,
pub help_center_seed_path: String,
pub tickets_source: String,
pub nxtgauge_users_url: String,
}
impl AppConfig {
pub fn from_env() -> Self {
Self {
app_host: env_or_default("APP_HOST", "0.0.0.0"),
app_port: env_or_default("APP_PORT", "8080").parse().unwrap_or(8080),
database_url: std::env::var("DATABASE_URL")
.ok()
.filter(|v| !v.trim().is_empty()),
ollama_base_url: env_or_default("OLLAMA_BASE_URL", "http://localhost:11434"),
ollama_chat_model: env_or_default("OLLAMA_CHAT_MODEL", "smollm2:360m"),
ollama_embed_model: env_or_default("OLLAMA_EMBED_MODEL", "nomic-embed-text"),
help_center_seed_path: env_or_default(
"HELP_CENTER_SEED_PATH",
"./seeds/help_articles.json",
),
tickets_source: env_or_default("TICKETS_SOURCE", "chatbot"),
nxtgauge_users_url: env_or_default(
"NXTGAUGE_USERS_URL",
"http://nxtgauge-rust-users:9101",
),
}
}
pub fn socket_addr(&self) -> SocketAddr {
format!("{}:{}", self.app_host, self.app_port)
.parse()
.expect("invalid APP_HOST/APP_PORT")
}
}
fn env_or_default(key: &str, default: &str) -> String {
std::env::var(key).unwrap_or_else(|_| default.to_string())
}