backend
This commit is contained in:
commit
d7666f7b2c
44 changed files with 2246 additions and 0 deletions
26
backend/models/ai_interaction.py
Normal file
26
backend/models/ai_interaction.py
Normal file
|
@ -0,0 +1,26 @@
|
|||
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}')>"
|
Loading…
Add table
Add a link
Reference in a new issue