Files
2026-04-24 16:02:16 +08:00

101 lines
1.9 KiB
Python

from pydantic import BaseModel
from datetime import datetime
class TranscriptOut(BaseModel):
id: str
filename: str
file_path: str
line_count: int
file_size: int
status: str
error_message: str
uploaded_at: datetime
class Config:
from_attributes = True
class PersonOut(BaseModel):
id: str
name: str
nickname: str
filename: str
file_path: str
photo_path: str
info: str
uploaded_at: datetime
class Config:
from_attributes = True
class StoryOut(BaseModel):
id: str
title: str
summary: str
content: str
raw_material: str
speaker_nickname: str
source_transcript_id: str
source_lines: str
duration_minutes: float
confidence: float
confidence_level: str
person_id: str | None
match_status: str
created_at: datetime
class Config:
from_attributes = True
class StoryEdit(BaseModel):
title: str | None = None
summary: str | None = None
content: str | None = None
class MatchCreate(BaseModel):
story_id: str
person_id: str
class MatchOut(BaseModel):
story_id: str
person_id: str
person_name: str
story_title: str
class Config:
from_attributes = True
class ExportItemOut(BaseModel):
person_id: str
person_name: str
story_count: int
has_photo: bool
class SettingsOut(BaseModel):
llm_provider: str
llm_model: str
llm_base_url: str
llm_api_key: str
segment_max_lines: int
story_min_lines: int
confidence_threshold: float
temperature: float
class SettingsUpdate(BaseModel):
llm_provider: str | None = None
llm_model: str | None = None
llm_base_url: str | None = None
llm_api_key: str | None = None
segment_max_lines: int | None = None
story_min_lines: int | None = None
confidence_threshold: float | None = None
temperature: float | None = None