- 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
48 lines
1.6 KiB
Rust
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())
|
|
}
|