69 lines
2.2 KiB
Python
69 lines
2.2 KiB
Python
"""Query route governance read schemas."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from typing import Any, Optional
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
class QueryRouteGovernanceBucketRead(BaseModel):
|
|
key: str = Field(..., min_length=1, max_length=64)
|
|
label: str = Field(..., min_length=1, max_length=120)
|
|
count: int = Field(default=0, ge=0)
|
|
|
|
|
|
class QueryRouteGovernanceKPIRead(BaseModel):
|
|
total_records: int = Field(default=0, ge=0)
|
|
mismatch_count: int = Field(default=0, ge=0)
|
|
clarify_count: int = Field(default=0, ge=0)
|
|
negative_feedback_count: int = Field(default=0, ge=0)
|
|
internal_count: int = Field(default=0, ge=0)
|
|
external_count: int = Field(default=0, ge=0)
|
|
uncertain_count: int = Field(default=0, ge=0)
|
|
|
|
|
|
class QueryRouteGovernanceSummaryRead(BaseModel):
|
|
window_days: int = Field(..., ge=1, le=90)
|
|
project_id: Optional[int] = None
|
|
kpis: QueryRouteGovernanceKPIRead
|
|
route_modes: list[QueryRouteGovernanceBucketRead] = Field(default_factory=list)
|
|
decision_origins: list[QueryRouteGovernanceBucketRead] = Field(default_factory=list)
|
|
|
|
|
|
class QueryRouteGovernanceRecordRead(BaseModel):
|
|
id: int
|
|
qa_record_id: int
|
|
project_id: Optional[int] = None
|
|
session_id: Optional[int] = None
|
|
session_title: Optional[str] = None
|
|
question_text: str
|
|
route_mode_predicted: str
|
|
route_mode_effective: str
|
|
decision_origin: Optional[str] = None
|
|
reply_mode: Optional[str] = None
|
|
feedback_rating: Optional[str] = None
|
|
feedback_helpfulness: Optional[str] = None
|
|
is_route_mismatch: bool = False
|
|
is_clarify: bool = False
|
|
anchor_summary: Optional[str] = None
|
|
answer_mode: Optional[str] = None
|
|
grounding_status: Optional[str] = None
|
|
asked_via: Optional[str] = None
|
|
created_at: Optional[str] = None
|
|
updated_at: Optional[str] = None
|
|
|
|
|
|
class QueryRouteGovernanceListRead(BaseModel):
|
|
items: list[QueryRouteGovernanceRecordRead] = Field(default_factory=list)
|
|
total: int = Field(default=0, ge=0)
|
|
limit: int = Field(default=20, ge=1, le=100)
|
|
offset: int = Field(default=0, ge=0)
|
|
|
|
|
|
class QueryRouteGovernanceDetailRead(BaseModel):
|
|
record: QueryRouteGovernanceRecordRead
|
|
qa_record: dict[str, Any]
|
|
route_memory: dict[str, Any]
|
|
|