IIIF-Studio / backend /app /config.py
Claude
fix: comprehensive repo audit β€” 15 issues fixed
9097545 unverified
Raw
History Blame Contribute Delete
2.83 kB
"""
Configuration globale de la plateforme, chargΓ©e depuis les variables d'environnement.
Utilise pydantic-settings (CLAUDE.md Β§2, Β§7) :
- les valeurs sont lues depuis os.environ / fichier .env au moment de l'instanciation
- l'objet `settings` est importΓ© partout dans l'application
- dans les tests : monkeypatch.setattr(config, "settings", ...) pour surcharger
"""
# 1. stdlib
from pathlib import Path
# 2. third-party
from pydantic import ConfigDict
from pydantic_settings import BaseSettings
# Racine du dΓ©pΓ΄t β€” rΓ©solue depuis l'emplacement absolu de ce fichier.
# config.py se trouve dans backend/app/ ; 3 parents remontent Γ  la racine.
# .resolve() garantit un chemin absolu mΓͺme si __file__ est relatif au CWD.
_REPO_ROOT = Path(__file__).resolve().parent.parent.parent
class Settings(BaseSettings):
"""Paramètres d'application lus depuis les variables d'environnement.
Toutes les clΓ©s API sont optionnelles (None si non configurΓ©es).
Elles ne sont jamais loguΓ©es ni exportΓ©es (R06).
"""
model_config = ConfigDict(
env_file=".env",
extra="ignore",
)
# ── Serveur ──────────────────────────────────────────────────────────────
base_url: str = "http://localhost:8000"
data_dir: Path = Path("data")
cors_origins: list[str] = ["*"]
# ── Chemins des ressources statiques ─────────────────────────────────────
# CalculΓ©s depuis la racine du dΓ©pΓ΄t ; surchargeables via variables d'env.
profiles_dir: Path = _REPO_ROOT / "profiles"
prompts_dir: Path = _REPO_ROOT / "prompts"
# ── Base de donnΓ©es ───────────────────────────────────────────────────────
database_url: str = "sqlite+aiosqlite:///./iiif_studio.db"
# ── Pipeline IA ────────────────────────────────────────────────────────────
ai_max_concurrent: int = 3 # jobs IA simultanΓ©s par corpus run
# ── Fournisseurs IA (R06 β€” clΓ©s depuis l'environnement uniquement) ────────
# Chaque clΓ© est optionnelle. Le backend dΓ©tecte automatiquement quels
# providers sont disponibles selon les clΓ©s prΓ©sentes. Pas de AI_PROVIDER
# global : le provider est choisi par corpus depuis l'interface.
google_ai_studio_api_key: str | None = None
vertex_service_account_json: str | None = None
mistral_api_key: str | None = None
settings: Settings = Settings()