File size: 1,179 Bytes
dd1b74d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
from sqlmodel import SQLModel, Field, Relationship
from datetime import datetime
from typing import Optional, TYPE_CHECKING
import uuid

if TYPE_CHECKING:
    from .message import Message


class VoiceTranscriptBase(SQLModel):
    message_id: uuid.UUID = Field(foreign_key="message.id")
    original_audio_path: Optional[str] = Field(default=None)
    cleaned_text: str = Field(max_length=10000)
    extracted_intent: str = Field(max_length=255)
    confidence_score: float = Field(ge=0.0, le=1.0)
    processing_time: Optional[float] = Field(default=None)


class VoiceTranscript(VoiceTranscriptBase, table=True):
    """
    Represents processed voice input with cleaned text, extracted intent, and confidence scores
    """
    id: uuid.UUID = Field(default_factory=uuid.uuid4, primary_key=True)
    created_at: datetime = Field(default_factory=datetime.utcnow)

    # Relationships
    message: "Message" = Relationship(back_populates="voice_transcript")


class VoiceTranscriptCreate(VoiceTranscriptBase):
    cleaned_text: str
    extracted_intent: str
    confidence_score: float


class VoiceTranscriptRead(VoiceTranscriptBase):
    id: uuid.UUID
    created_at: datetime