19 lines
687 B
Python
19 lines
687 B
Python
from typing import Literal, Optional
|
|
|
|
from pydantic import BaseModel, Field, model_validator
|
|
|
|
|
|
class MessageFeedbackRequestDTO(BaseModel):
|
|
"""消息反馈请求模型"""
|
|
|
|
message_id: str = Field(..., description="消息 ID")
|
|
feedback: Literal["like", "dislike"] = Field(..., description="反馈类型: like/dislike")
|
|
feedback_content: Optional[str] = Field(default=None, description="点踩反馈内容")
|
|
|
|
@model_validator(mode="after")
|
|
def validate_feedback_content(self):
|
|
if self.feedback == "dislike" and not (self.feedback_content or "").strip():
|
|
raise ValueError("feedback_content is required when feedback=dislike")
|
|
return self
|
|
|