from __future__ import annotations from typing import Any, Dict, Optional from pydantic import BaseModel, ConfigDict, Field class BaseRequest(BaseModel): """所有请求模型基类:默认允许额外字段,避免破坏兼容性。""" model_config = ConfigDict(extra="allow") class RunTaskRequest(BaseRequest): task_name: str = Field(..., min_length=1) date_string: Optional[str] = None class TaskListRequest(BaseRequest): page: int = Field(default=1, ge=1) size: int = Field(default=50, ge=1, le=200) sort_by: str = Field(default="id", min_length=1) sort_dir: str = Field(default="desc", min_length=1) id: Optional[int] = None date_string: Optional[str] = None trace_id: Optional[str] = None task_status: Optional[int] = None class GetCoverRequest(BaseRequest): """GetCoverService 的请求体字段不固定,先保持兼容。""" # 用一个可选字段占位,避免空模型在某些场景不好读 payload: Optional[Dict[str, Any]] = None class SaveTokenRequest(BaseRequest): """GzhCookieManager 的请求体字段不固定,先保持兼容。""" token: Optional[str] = None