ay/backend/models/ai_interaction.py
2025-06-24 18:17:53 +02:00

26 lines
No EOL
1.6 KiB
Python

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"<AiInteraction(id={self.id}, user_id={self.user_id}, type='{self.interaction_type}')>"