"""分析任务队列的请求/响应模型。""" from __future__ import annotations from datetime import datetime from typing import Optional from pydantic import BaseModel class JobOut(BaseModel): """单条任务详情,含关联截图摘要。""" id: int screenshot_id: int kind: str status: str retries: int last_error: Optional[str] = None created_at: datetime started_at: Optional[datetime] = None finished_at: Optional[datetime] = None thumb_url: Optional[str] = None path: Optional[str] = None ai_title: Optional[str] = None ai_status: Optional[str] = None ocr_status: Optional[str] = None class JobListResp(BaseModel): items: list[JobOut] total: int page: int size: int class JobRetryIn(BaseModel): """可选:仅重试指定 job id;不传则重试全部 failed。""" job_ids: Optional[list[int]] = None