"""Schemas for signal source APIs.""" from __future__ import annotations from typing import Any, Optional from pydantic import BaseModel, Field class RecipeRecognitionRequest(BaseModel): """食谱识别请求""" food_name: str = Field(..., description="食物名称") food_description: Optional[str] = Field(None, description="食物描述") image_url: Optional[str] = Field(None, description="图片URL") category: Optional[str] = Field(None, description="分类") cuisine: Optional[str] = Field(None, description="菜系") calories: Optional[float] = Field(None, description="热量(千卡)") protein: Optional[float] = Field(None, description="蛋白质(克)") fat: Optional[float] = Field(None, description="脂肪(克)") carbs: Optional[float] = Field(None, description="碳水化合物(克)") fiber: Optional[float] = Field(None, description="膳食纤维(克)") intent: str = Field( default="analyze", description="意图:analyze-热量分析, save-保存食谱, recommend-推荐菜谱", ) user_name: Optional[str] = Field(None, description="用户名") class RecipeRecognitionResponse(BaseModel): """响应""" success: bool signal_id: Optional[int] = None project_id: Optional[int] = None message: str details: Optional[dict[str, Any]] = None class RecipeBatchRequest(BaseModel): """批量导入请求""" recipes: list[RecipeRecognitionRequest] = Field(..., description="食谱列表")