Hirely-Backend / backend /models /transcript_segment.py
NaikPranav11's picture
Initial clean deployment
1207440
Raw
History Blame Contribute Delete
1.48 kB
"""
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"<TranscriptSegment(id={self.id}, interview_id={self.interview_id}, speaker='{self.speaker}', timestamp={self.timestamp})>"
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
}