64 lines
1.8 KiB
Python
64 lines
1.8 KiB
Python
"""
|
||
互动记录相关 Schema
|
||
"""
|
||
from pydantic import BaseModel, Field
|
||
from typing import Optional, List
|
||
from datetime import datetime
|
||
from enum import Enum
|
||
|
||
|
||
class InteractionType(str, Enum):
|
||
"""互动类型枚举"""
|
||
COMMENT = "comment"
|
||
REPLY = "reply"
|
||
LIKE = "like"
|
||
FAVORITE = "favorite"
|
||
SHARE = "share"
|
||
|
||
|
||
class InteractionStatus(str, Enum):
|
||
"""互动状态枚举"""
|
||
PENDING = "pending"
|
||
SUCCESS = "success"
|
||
FAILED = "failed"
|
||
RETRYING = "retrying"
|
||
|
||
|
||
class InteractionRecordBase(BaseModel):
|
||
"""互动记录基础 Schema"""
|
||
virtual_user_id: int = Field(..., description="虚拟用户 ID")
|
||
news_id: str = Field(..., description="新闻 ID")
|
||
interaction_type: InteractionType = Field(..., description="互动类型")
|
||
content: Optional[str] = Field(None, description="互动内容")
|
||
target_comment_id: Optional[str] = Field(None, description="目标评论 ID")
|
||
|
||
|
||
class InteractionRecordResponse(InteractionRecordBase):
|
||
"""互动记录响应"""
|
||
id: int
|
||
news_title: Optional[str]
|
||
status: InteractionStatus
|
||
retry_count: int
|
||
error_message: Optional[str]
|
||
ai_model_used: Optional[str]
|
||
tokens_used: int
|
||
execution_time: datetime
|
||
created_at: datetime
|
||
|
||
class Config:
|
||
from_attributes = True
|
||
|
||
|
||
class InteractionRecordListResponse(BaseModel):
|
||
"""互动记录列表响应"""
|
||
total: int
|
||
items: List[InteractionRecordResponse]
|
||
|
||
|
||
class InteractionExecuteRequest(BaseModel):
|
||
"""执行互动请求"""
|
||
virtual_user_id: int = Field(..., description="虚拟用户 ID")
|
||
news_id: Optional[str] = Field(None, description="新闻 ID(不传则随机选择)")
|
||
interaction_type: Optional[InteractionType] = Field(None, description="互动类型(不传则随机)")
|
||
force_execute: bool = Field(False, description="是否强制执行(忽略限额)")
|