2026-01-19 23:54:29 +08:00
|
|
|
|
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
|
|
|
|
|
|
|
2026-01-20 02:47:03 +08:00
|
|
|
|
# --- [GET] 知识库列表 (新功能) ---
|
|
|
|
|
|
class KnowledgeBaseItem(BaseModel):
|
|
|
|
|
|
task_id: int
|
|
|
|
|
|
root_url: str
|
|
|
|
|
|
name: str # 提取出的简短名称,方便 LLM 识别
|
|
|
|
|
|
|
|
|
|
|
|
class KnowledgeBaseListResponse(BaseModel):
|
|
|
|
|
|
total: int
|
|
|
|
|
|
list: List[KnowledgeBaseItem]
|
|
|
|
|
|
|
2026-01-19 23:54:29 +08:00
|
|
|
|
# --- [POST] 创建任务 ---
|
|
|
|
|
|
class TaskCreateRequest(BaseModel):
|
2026-01-20 02:47:03 +08:00
|
|
|
|
url: str = Field(..., description="目标网站根URL")
|
2026-01-19 23:54:29 +08:00
|
|
|
|
|
|
|
|
|
|
# --- [POST] 执行任务 ---
|
|
|
|
|
|
class TaskExecuteRequest(BaseModel):
|
2026-01-20 02:47:03 +08:00
|
|
|
|
batch_size: int = Field(10, le=50)
|
2026-01-19 23:54:29 +08:00
|
|
|
|
|
|
|
|
|
|
# --- [POST] 搜索 ---
|
|
|
|
|
|
class SearchRequest(BaseModel):
|
|
|
|
|
|
query: str
|
2026-01-20 02:47:03 +08:00
|
|
|
|
# 明确支持 None 为全局搜索
|
|
|
|
|
|
task_id: Optional[int] = Field(None, description="任务ID,不传则搜全库")
|
|
|
|
|
|
limit: int = Field(5, description="返回数量")
|
2026-01-19 23:54:29 +08:00
|
|
|
|
|
2026-01-20 02:47:03 +08:00
|
|
|
|
# ... (SearchResultItem 等保持不变) ...
|
2026-01-19 23:54:29 +08:00
|
|
|
|
class SearchResultItem(BaseModel):
|
|
|
|
|
|
task_id: int
|
|
|
|
|
|
source_url: str
|
|
|
|
|
|
title: Optional[str] = None
|
|
|
|
|
|
content: str
|
|
|
|
|
|
score: float
|
|
|
|
|
|
meta_info: Dict = {}
|
|
|
|
|
|
reranked: Optional[bool] = False
|