37 lines
1.5 KiB
Python
37 lines
1.5 KiB
Python
"""
|
|
数据模型定义
|
|
使用Pydantic定义输入输出结构
|
|
"""
|
|
|
|
from pydantic import BaseModel, Field
|
|
from typing import List, Optional
|
|
from datetime import datetime
|
|
|
|
|
|
class SearchRequest(BaseModel):
|
|
"""搜索请求模型"""
|
|
query: str = Field(..., description="搜索关键词", min_length=1, max_length=200)
|
|
limit: Optional[int] = Field(5, description="返回结果数量", ge=1, le=20)
|
|
|
|
|
|
class SearchResultItem(BaseModel):
|
|
"""Facebook搜索结果项"""
|
|
title: str = Field(..., description="笔记标题")
|
|
url: Optional[str] = Field(None, description="笔记链接")
|
|
snippet: Optional[str] = Field(None, description="笔记摘要")
|
|
author: Optional[str] = Field(None, description="作者")
|
|
likes: Optional[int] = Field(None, description="点赞数")
|
|
cover_image: Optional[str] = Field(None, description="封面图片URL")
|
|
|
|
|
|
class SearchResponse(BaseModel):
|
|
"""搜索响应模型"""
|
|
success: bool = Field(..., description="是否成功")
|
|
query: str = Field(..., description="搜索关键词")
|
|
results: List[SearchResultItem] = Field(default_factory=list, description="搜索结果列表")
|
|
total_count: Optional[int] = Field(None, description="总结果数")
|
|
summary: Optional[str] = Field(None, description="AI生成的总结")
|
|
message: Optional[str] = Field(None, description="错误消息或提示信息")
|
|
timestamp: str = Field(default_factory=lambda: datetime.now().isoformat(), description="时间戳")
|
|
|