refactor: 重构异步任务系统和计费服务架构

- 重构任务系统:新增 lifecycle (TaskStatus/BillingStatus)、context、application 模块
- 将 video tasks 泛化为 async tasks,支持更通用的异步任务管理
- 新增 Gemini Files 管理模块和管理界面
- 重构 billing 服务:拆分 schema.py 和 service.py
- 新增 candidate 服务模块用于请求候选管理
- 数据库迁移:添加 billing_status、request_id、gemini_file_mappings 表和索引
- 移除废弃的 video_telemetry、task orchestrator 等模块
This commit is contained in:
fawney19
2026-02-02 03:16:52 +08:00
parent feb7484fda
commit 9e31efe26c
75 changed files with 7511 additions and 2068 deletions

View File

@@ -156,6 +156,8 @@ class CandidateResolver:
user_id: str,
user_api_key: ApiKey,
required_capabilities: dict[str, bool] | None = None,
*,
expand_retries: bool = True,
) -> dict[tuple[int, int], str]:
"""
为所有候选预先创建 available 状态记录(批量插入优化)
@@ -211,9 +213,12 @@ class CandidateResolver:
candidate_record_map[(candidate_index, 0)] = record_id
else:
# max_retries 已从 Endpoint 迁移到 ProviderEndpoint 仍可能保留旧字段用于兼容)
max_retries_for_candidate = (
int(provider.max_retries or 2) if candidate.is_cached else 1
)
if not expand_retries:
max_retries_for_candidate = 1
else:
max_retries_for_candidate = (
int(provider.max_retries or 2) if candidate.is_cached else 1
)
for retry_index in range(max_retries_for_candidate):
record_id = str(uuid.uuid4())