from sqlalchemy import Column, Integer, String, Text, DateTime, ForeignKey, Float from sqlalchemy.sql import func from sqlalchemy.orm import relationship from core.database import Base class AiInteraction(Base): __tablename__ = "ai_interactions" id = Column(Integer, primary_key=True, index=True) user_id = Column(Integer, ForeignKey("users.id"), nullable=True) # Utilisateur ayant effectué l'interaction (peut être NULL pour anonyme) document_id = Column(Integer, ForeignKey("documents.id"), nullable=True) # Document utilisé pour l'interaction (si pertinent) job_offer_text = Column(Text, nullable=False) # Le texte de l'offre d'emploi analysée cv_text_used = Column(Text, nullable=True) # Le texte du CV utilisé pour l'analyse (stocké pour l'historique) ai_request = Column(Text, nullable=False) # Le prompt envoyé à l'IA ai_response = Column(Text, nullable=False) # La réponse brute de l'IA score = Column(Float, nullable=True) # Le score de pertinence calculé par l'IA ou le backend analysis_results = Column(Text, nullable=True) # Les détails de l'analyse (ex: points forts/faibles) interaction_type = Column(String, nullable=False, default="scoring") # Type d'interaction (e.g., 'scoring', 'paragraph_gen') created_at = Column(DateTime, default=func.now()) # Relations optionnelles user = relationship("User", back_populates="ai_interactions") document = relationship("Document") # Pas de back_populates ici car Document n'a pas de relation "ai_interactions" def __repr__(self): return f""