""" TranscriptSegment model for storing real-time interview transcription data """ from sqlalchemy import Column, Integer, String, Float, Text, DateTime, ForeignKey from sqlalchemy.sql import func from sqlalchemy.orm import relationship from .database import Base class TranscriptSegment(Base): __tablename__ = 'transcript_segments' id = Column(Integer, primary_key=True, index=True) interview_id = Column(Integer, ForeignKey('interviews.id'), nullable=False, index=True) timestamp = Column(Float, nullable=False) # Seconds from interview start speaker = Column(String(50), nullable=False) # 'candidate' or 'interviewer' text = Column(Text, nullable=False) confidence = Column(Float) # Whisper confidence score (0.0 to 1.0) created_at = Column(DateTime(timezone=True), server_default=func.now()) # Relationships interview = relationship('Interview', back_populates='transcript_segments') def __repr__(self): return f"" def to_dict(self): return { 'id': self.id, 'interview_id': self.interview_id, 'timestamp': self.timestamp, 'speaker': self.speaker, 'text': self.text, 'confidence': self.confidence, 'created_at': self.created_at.isoformat() if self.created_at else None }