"""统计相关Schema""" from datetime import datetime from decimal import Decimal from typing import Optional from pydantic import BaseModel, Field class AICallEventCreate(BaseModel): """AI调用事件上报""" tenant_id: int = Field(..., description="租户ID") user_id: Optional[int] = Field(None, description="用户ID") app_code: str = Field(..., description="应用编码") module_code: str = Field(..., description="模块编码") trace_id: Optional[str] = Field(None, description="链路追踪ID") prompt_name: str = Field(..., description="Prompt名称") model: str = Field(..., description="模型名称") input_tokens: int = Field(0, description="输入token") output_tokens: int = Field(0, description="输出token") cost: Decimal = Field(Decimal("0"), description="成本") latency_ms: int = Field(0, description="延迟(ms)") status: str = Field("success", description="状态") event_time: datetime = Field(..., description="事件时间") class AICallEventResponse(BaseModel): """AI调用事件响应""" id: int tenant_id: int app_code: str prompt_name: str model: str input_tokens: int output_tokens: int event_time: datetime class Config: from_attributes = True class BatchReportRequest(BaseModel): """批量上报请求""" events: list[AICallEventCreate]