from pydantic import BaseModel, Field from typing import List, Optional, Dict, Any # --- 通用响应 --- class ResponseBase(BaseModel): code: int = Field(..., description="1: 成功, 0: 失败") msg: str data: Optional[Any] = None # --- [GET] 知识库列表 (新功能) --- class KnowledgeBaseItem(BaseModel): task_id: int root_url: str name: str # 提取出的简短名称,方便 LLM 识别 class KnowledgeBaseListResponse(BaseModel): total: int list: List[KnowledgeBaseItem] # --- [POST] 创建任务 --- class TaskCreateRequest(BaseModel): url: str = Field(..., description="目标网站根URL") # --- [POST] 执行任务 --- class TaskExecuteRequest(BaseModel): batch_size: int = Field(10, le=50) # --- [POST] 搜索 --- class SearchRequest(BaseModel): query: str # 明确支持 None 为全局搜索 task_id: Optional[int] = Field(None, description="任务ID,不传则搜全库") limit: int = Field(5, description="返回数量") # ... (SearchResultItem 等保持不变) ... class SearchResultItem(BaseModel): task_id: int source_url: str title: Optional[str] = None content: str score: float meta_info: Dict = {} reranked: Optional[bool] = False