"""NL2SQL HTTP 请求模型。""" from __future__ import annotations from typing import Literal from pydantic import BaseModel, Field class DataQueryReq(BaseModel): """自然语言查询请求。""" question: str = Field(min_length=1, max_length=2000) session_id: str | None = Field(default=None, max_length=64) caller_agent: str | None = Field(default=None, max_length=64) data_scope: dict | None = None max_rows: int | None = Field(default=None, gt=0, le=10000) include_sql: bool = False page: int = Field(default=1, ge=1, le=100000) page_size: int = Field(default=100, ge=1, le=10000) sort_by: str | None = Field(default=None, max_length=128) sort_order: Literal["asc", "desc"] = "asc" output_format: Literal["json", "csv"] = "json" class DataExplainReq(BaseModel): """安全 EXPLAIN 请求。""" sql: str = Field(min_length=1, max_length=20000) class DataKillReq(BaseModel): """管理员中止运行中查询请求。""" query_id: str = Field(min_length=1, max_length=64) class DataCacheInvalidateReq(BaseModel): """管理员按业务表失效查询缓存。""" table_names: list[str] = Field(min_length=1, max_length=50)