Add voice analytics filters and metrics

This commit is contained in:
2026-04-26 22:00:34 +08:00
parent 3805c18622
commit 55ca0985eb
25 changed files with 710 additions and 39 deletions

View File

@@ -77,6 +77,7 @@ class VoiceTurnSummaryResponse(BaseModel):
user_transcript: str | None = None
transcript_confidence: float | None = None
transcription_provider: str | None = None
user_audio_duration_ms: int | None = None
detected_intent: str
intent_confidence: float | None = None
understanding_summary: str | None = None
@@ -88,6 +89,7 @@ class VoiceTurnSummaryResponse(BaseModel):
safety_blocked: bool = False
safety_message: str | None = None
assistant_text: str | None = None
assistant_audio_duration_ms: int | None = None
assistant_audio_ready: bool = False
assistant_audio_url: str | None = None
user_audio_ready: bool = False
@@ -149,6 +151,8 @@ class VoiceSessionAnalyticsResponse(BaseModel):
"""Aggregated voice co-creation analytics for one user."""
window_days: int | None = None
provider: str | None = None
session_status: str | None = None
total_sessions: int = 0
attention_sessions: int = 0
confirmation_attention_sessions: int = 0
@@ -164,6 +168,24 @@ class VoiceSessionAnalyticsResponse(BaseModel):
tts_failures: int = 0
low_confidence_turns: int = 0
safety_interventions: int = 0
text_fallback_turns: int = 0
uploaded_audio_turns: int = 0
user_audio_turn_rate: float = 0.0
assistant_audio_ready_turns: int = 0
assistant_audio_ready_rate: float = 0.0
asr_success_rate: float = 0.0
tts_success_rate: float = 0.0
avg_transcript_confidence: float = 0.0
avg_intent_confidence: float = 0.0
safety_intervention_rate: float = 0.0
failure_event_counts: dict[str, int] = Field(default_factory=dict)
total_user_audio_duration_ms: int = 0
avg_user_audio_duration_ms: float = 0.0
total_assistant_audio_turns: int = 0
total_assistant_audio_duration_ms: int = 0
avg_assistant_audio_duration_ms: float = 0.0
transcription_provider_counts: dict[str, int] = Field(default_factory=dict)
confirmation_request_rate: float = 0.0
turn_success_rate: float = 0.0
finalize_conversion_rate: float = 0.0