Files

20 lines
925 B
Python

"""Tasks 共用的轻量格式与查询路由,不导入解析或渲染实现。"""
from typing import Literal
from urllib.parse import quote
TaskOutputFormat = Literal["default", "docx", "html", "latex"]
TASK_OUTPUT_FORMATS: tuple[TaskOutputFormat, ...] = ("default", "docx", "html", "latex")
TaskStatus = Literal["waiting-file", "pending", "running", "completed", "partial", "failed", "canceled"]
TaskFileState = Literal["waiting-file", "pending", "running", "completed", "failed", "canceled"]
def task_status_url(api_url: str, task_id: str) -> str:
"""保留 API 部署前缀并编码任务标识,拒绝会改变固定路由的点路径。"""
if not task_id or task_id in {".", ".."}:
raise ValueError("Invalid task_id")
return api_url.rstrip("/") + "/v1/tasks/" + quote(task_id, safe="")
__all__ = ["TASK_OUTPUT_FORMATS", "TaskFileState", "TaskOutputFormat", "TaskStatus", "task_status_url"]