Add admin AI models panel (list, test, select Mistral models)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
defc07648c
commit
13677b3ce3
4 files changed
+162
-5
No files matched your search
@@ -114,6 +114,7 @@ def init_db() -> None:
|
||||
)
|
||||
""")
|
||||
cur.execute("CREATE INDEX IF NOT EXISTS idx_ip_abuse_expires ON ip_abuse(expires_at)")
|
||||
cur.execute("CREATE TABLE IF NOT EXISTS settings (key TEXT PRIMARY KEY, value TEXT NOT NULL)")
|
||||
logger.info("Base de données initialisée.")
|
||||
|
||||
|
||||
@@ -575,3 +576,25 @@ def delete_consultation(consultation_id: int) -> bool:
|
||||
cur.execute("DELETE FROM synthesis WHERE consultation_id = %s", (consultation_id,))
|
||||
cur.execute("DELETE FROM consultations WHERE id = %s RETURNING id", (consultation_id,))
|
||||
return cur.fetchone() is not None
|
||||
|
||||
|
||||
# ─── Réglages (clé/valeur) ────────────────────────────────────────────────────
|
||||
|
||||
def get_setting(key: str) -> str | None:
|
||||
with db_cursor() as cur:
|
||||
cur.execute("SELECT value FROM settings WHERE key = %s", (key,))
|
||||
row = cur.fetchone()
|
||||
return row["value"] if row else None
|
||||
|
||||
|
||||
def set_setting(key: str, value: str | None) -> None:
|
||||
"""value=None → supprime le réglage (retour à la valeur d'environnement)."""
|
||||
with db_cursor() as cur:
|
||||
if value is None:
|
||||
cur.execute("DELETE FROM settings WHERE key = %s", (key,))
|
||||
else:
|
||||
cur.execute(
|
||||
"INSERT INTO settings (key, value) VALUES (%s, %s) "
|
||||
"ON CONFLICT (key) DO UPDATE SET value = EXCLUDED.value",
|
||||
(key, value),
|
||||
)
|
||||
Reference in new issue
Block a user