chore: harden system settings and unify prompt usage

Validate settings updates, use typed embedding backends, and route
ingestion through DB-stored prompts so admin edits take effect.
This commit is contained in:
Per Stark
2026-05-29 11:48:13 +02:00
parent bc41a619ce
commit 125b856c49
8 changed files with 244 additions and 94 deletions
+14 -1
View File
@@ -8,6 +8,7 @@ use std::{
use anyhow::{anyhow, Context, Result};
use async_openai::{types::CreateEmbeddingRequestArgs, Client};
use fastembed::{EmbeddingModel, ModelTrait, TextEmbedding, TextInitOptions};
use serde::{Deserialize, Serialize};
use thiserror::Error;
use tracing::debug;
@@ -26,7 +27,8 @@ pub struct ParseEmbeddingBackendError {
/// Supported embedding backends.
#[allow(clippy::module_name_repetitions)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default, Serialize, Deserialize)]
#[serde(rename_all = "lowercase")]
pub enum EmbeddingBackend {
#[default]
OpenAI,
@@ -34,6 +36,17 @@ pub enum EmbeddingBackend {
Hashed,
}
impl EmbeddingBackend {
#[must_use]
pub fn as_str(self) -> &'static str {
match self {
Self::OpenAI => "openai",
Self::FastEmbed => "fastembed",
Self::Hashed => "hashed",
}
}
}
impl std::str::FromStr for EmbeddingBackend {
type Err = ParseEmbeddingBackendError;