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