38 lines
1.2 KiB
Python
38 lines
1.2 KiB
Python
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
|
|
|
|
# --- [POST] 创建任务 ---
|
|
class TaskCreateRequest(BaseModel):
|
|
url: str = Field(..., description="目标网站根URL", example="https://docs.firecrawl.dev")
|
|
|
|
# --- [POST] 执行任务 ---
|
|
class TaskExecuteRequest(BaseModel):
|
|
batch_size: int = Field(10, ge=1, le=50, description="并发线程数/批次大小")
|
|
|
|
# --- [GET] 监控数据 ---
|
|
class TaskStatusData(BaseModel):
|
|
root_url: str
|
|
stats: Dict[str, int] = Field(..., description="数据库统计: pending/processing/completed")
|
|
active_threads: List[str] = Field(..., description="内存实时: 当前正在爬取的URL列表")
|
|
active_thread_count: int
|
|
|
|
# --- [POST] 搜索 ---
|
|
class SearchRequest(BaseModel):
|
|
query: str
|
|
task_id: Optional[int] = None
|
|
return_num: int = Field(5, description="返回结果数量")
|
|
|
|
class SearchResultItem(BaseModel):
|
|
task_id: int
|
|
source_url: str
|
|
title: Optional[str] = None
|
|
content: str
|
|
score: float
|
|
meta_info: Dict = {}
|
|
reranked: Optional[bool] = False |