Spaces:
Build error
Build error
File size: 2,825 Bytes
bd09498 193eb98 bd09498 193eb98 bd09498 1fa7ddd bd09498 193eb98 bd09498 193eb98 bd09498 965e8e0 bd09498 1fa7ddd bd09498 e0fd571 bd09498 9097545 bd09498 2d76892 bd09498 2d76892 bd09498 193eb98 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | """
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()
|