import os from sqlalchemy import create_engine, Column, Integer, String, Float, DateTime, Text from sqlalchemy.orm import sessionmaker, declarative_base from datetime import datetime from dotenv import load_dotenv # Charger les variables d'environnement load_dotenv() # Récupérer l'URL de connexion (ou mettre une valeur par défaut locale pour éviter les crashs directs) SQLALCHEMY_DATABASE_URL = os.getenv("DATABASE_URL", "postgresql://utilisateur:motdepasse@localhost:5432/nom_de_la_base") # Création du moteur de connexion engine = create_engine(SQLALCHEMY_DATABASE_URL) # Création de la fabrique de sessions SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine) # Base déclarative pour les modèles Base = declarative_base() class InteractionLog(Base): __tablename__ = "interactions" id = Column(Integer, primary_key=True, index=True) timestamp = Column(DateTime, default=datetime.now) query = Column(Text, nullable=False) intent = Column(String(100)) score = Column(Float) res_type = Column(String(50)) lang = Column(String(10)) response = Column(Text) # Dépendance FastAPI pour obtenir une session DB par requête def get_db(): db = SessionLocal() try: yield db finally: db.close()