|
import uuid |
|
from typing import List, Dict, Optional |
|
from datetime import datetime |
|
from pydantic import BaseModel, Field, PrivateAttr |
|
|
|
import sys |
|
|
|
|
|
|
|
|
|
|
|
''' Class for storing captions generated by SeamlessM4T''' |
|
class UserCaptions(BaseModel): |
|
_id: uuid.UUID = PrivateAttr(default_factory=uuid.uuid4) |
|
author: str |
|
original_text: str |
|
translated_text: str |
|
timestamp: datetime = Field(default_factory=datetime.now) |
|
|
|
|
|
'''Class for storing past call records from users''' |
|
class UserCall(BaseModel): |
|
_id: uuid.UUID = PrivateAttr(default_factory=uuid.uuid4) |
|
call_id: Optional[str] = None |
|
caller_id: Optional[str] = None |
|
callee_id: Optional[str] = None |
|
creation_date: datetime = Field(default_factory=datetime.now, alias="date") |
|
duration: Optional[int] = None |
|
captions: Optional[List[UserCaptions]] = None |
|
|
|
key_terms: Optional[List[str]] = None |
|
|
|
'''Implement validation check on transcript ID if in transcript records''' |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Config: |
|
populate_by_name = True |
|
json_schema_extra = { |
|
"example": { |
|
"call_id": "65eef930e9abd3b1e3506906", |
|
"caller_id": "65ede65b6d246e52aaba9d4f", |
|
"callee_id": "65edda944340ac84c1f00758", |
|
"duration": 360, |
|
"captions": [{"author": "shamzino", "original_text": "eng: This is original_text english text", "translated_text": "spa: este es el texto traducido al español", "timestamp": "2024-03-28T16:15:50.956055"}, |
|
{"author": "benjino", "original_text": "eng: This is source english text", "translated_text": "spa: este es el texto fuente al español", "timestamp": "2024-03-28T16:16:20.34625"}], |
|
"key_terms": ["original_text", "source", "english", "text"] |
|
} |
|
} |
|
|
|
|
|
''' Class for updating User Call record''' |
|
class UpdateCall(BaseModel): |
|
call_id: Optional[str] = None |
|
caller_id: Optional[str] = None |
|
callee_id: Optional[str] = None |
|
duration: Optional[int] = None |
|
captions: Optional[List[UserCaptions]] = None |
|
key_terms: Optional[List[str]] = None |
|
|
|
class Config: |
|
populate_by_name = True |
|
json_schema_extra = { |
|
"example": { |
|
"duration": "500" |
|
} |
|
} |
|
|