from pydantic import BaseModel, Field from typing import List, Optional class EmotionItem(BaseModel): """单张人脸的情绪识别结果""" emotion: str = Field(description="主导情绪,英文,7类之一") confidence: float = Field(ge=0.0, le=1.0, description="置信度 0.0–1.0") class EmotionRequest(BaseModel): """情绪识别请求(支持 URL 或 base64)""" image_url: Optional[str] = Field(default=None, description="图片 URL(已上传到 OSS)") image_base64: Optional[str] = Field(default=None, description="base64 编码的图片数据(jpg/png)") member_id: Optional[int] = Field(default=None, description="家庭成员 ID,用于记录关联") class EmotionResponse(BaseModel): """情绪识别响应""" emotions: List[EmotionItem] dominant_emotion: str = Field(description="主导情绪(英文)") dominant_label_zh: str = Field(description="主导情绪中文名") all_emotions: dict = Field(description="全部 7 类情绪概率")