feat: add voice studio prototype flow

This commit is contained in:
2026-04-19 23:10:16 +08:00
parent f106f740dd
commit 46d6201529
14 changed files with 1745 additions and 212 deletions

View File

@@ -25,6 +25,15 @@ class VoiceTurnCreateFallbackRequest(BaseModel):
duration_ms: int | None = Field(default=None, ge=1, le=MAX_VOICE_TURN_DURATION_MS)
class VoiceTurnUploadAcceptedResponse(BaseModel):
"""Accepted response for one uploaded-audio voice turn."""
turn_id: str
session_id: str
status: str
transcription_provider: str | None = None
class VoiceSessionFinalizeRequest(BaseModel):
"""Finalize one voice session into a persisted story."""
@@ -61,11 +70,14 @@ class VoiceTurnSummaryResponse(BaseModel):
status: str
user_transcript: str | None = None
transcript_confidence: float | None = None
transcription_provider: str | None = None
detected_intent: str
intent_confidence: float | None = None
assistant_text: str | None = None
assistant_audio_ready: bool = False
assistant_audio_url: str | None = None
user_audio_ready: bool = False
user_audio_url: str | None = None
error_message: str | None = None
created_at: datetime
updated_at: datetime
@@ -81,10 +93,14 @@ class VoiceSessionSummaryResponse(BaseModel):
target_mode: str
status: str
current_turn_index: int
total_turns: int = 0
working_title: str | None = None
story_state: dict[str, Any] = Field(default_factory=dict)
latest_user_transcript: str | None = None
latest_assistant_text: str | None = None
latest_detected_intent: str | None = None
latest_assistant_audio_ready: bool = False
last_turn_status: str | None = None
can_continue: bool = False
can_finalize: bool = False
last_error: str | None = None