imetting_backend/app/models/models.py

86 lines
2.1 KiB
Python
Raw Normal View History

2025-08-05 01:46:40 +00:00
from pydantic import BaseModel, EmailStr
from typing import Optional, Union, List
import datetime
class LoginRequest(BaseModel):
username: str
password: str
class LoginResponse(BaseModel):
user_id: int
username: str
caption: str
email: EmailStr
token: str
class UserInfo(BaseModel):
user_id: int
username: str
caption: str
email: EmailStr
created_at: datetime.datetime
meetings_created: int
meetings_attended: int
class AttendeeInfo(BaseModel):
user_id: int
caption: str
2025-08-28 08:02:59 +00:00
class TranscriptionTaskStatus(BaseModel):
task_id: str
status: str # 'pending', 'processing', 'completed', 'failed'
progress: int # 0-100
meeting_id: int
created_at: Optional[str] = None
updated_at: Optional[str] = None
completed_at: Optional[str] = None
error_message: Optional[str] = None
2025-08-05 01:46:40 +00:00
class Meeting(BaseModel):
meeting_id: int
title: str
meeting_time: Optional[datetime.datetime]
summary: Optional[str]
created_at: datetime.datetime
attendees: Union[List[str], List[AttendeeInfo]] # Support both formats
creator_id: int
creator_username: str
audio_file_path: Optional[str] = None
2025-08-28 08:02:59 +00:00
transcription_status: Optional[TranscriptionTaskStatus] = None
2025-08-05 01:46:40 +00:00
class TranscriptSegment(BaseModel):
segment_id: int
meeting_id: int
2025-08-25 08:10:29 +00:00
speaker_id: Optional[int] = None # AI解析的原始结果
2025-08-05 01:46:40 +00:00
speaker_tag: str
start_time_ms: int
end_time_ms: int
text_content: str
class CreateMeetingRequest(BaseModel):
user_id: int
2025-08-05 01:46:40 +00:00
title: str
meeting_time: Optional[datetime.datetime]
attendee_ids: list[int]
class UpdateMeetingRequest(BaseModel):
title: str
meeting_time: Optional[datetime.datetime]
summary: Optional[str]
attendee_ids: list[int]
2025-08-25 08:10:29 +00:00
class SpeakerTagUpdateRequest(BaseModel):
speaker_id: int # 使用原始speaker_id整数
new_tag: str
class BatchSpeakerTagUpdateRequest(BaseModel):
updates: List[SpeakerTagUpdateRequest]
2025-08-26 13:57:16 +00:00
class TranscriptUpdateRequest(BaseModel):
segment_id: int
text_content: str
class BatchTranscriptUpdateRequest(BaseModel):
updates: List[TranscriptUpdateRequest]