refactor: 前端全面替换 any 为 unknown 并统一错误处理,后端用量记录补写请求头/体

- 前端 API 层、stores、conversation 解析器、组件全面替换 any 为 unknown/具体类型
- 错误处理统一使用 parseApiError/getErrorStatus 替代 err.response?.data?.detail 模式
- 后端 handler/TaskService/UsageLifecycle/StreamTracker 链路传递 request_headers/request_body
- streaming/pending 状态更新时可补写客户端和提供商的请求头及请求体
- 新增 TaskService 和 UsageService 相关测试
This commit is contained in:
fawney19
2026-02-22 00:43:41 +08:00
parent 98e60e8f74
commit cf2eee222e
121 changed files with 1652 additions and 1179 deletions

View File

@@ -85,6 +85,8 @@ class TaskService:
capability_requirements: dict[str, bool] | None = None,
preferred_key_ids: list[str] | None = None,
request_body_ref: dict[str, Any] | None = None,
request_headers: dict[str, Any] | None = None,
request_body: dict[str, Any] | None = None,
# ASYNC-only (video submit)
extract_external_task_id: Any | None = None,
supported_auth_types: set[str] | None = None,
@@ -180,6 +182,8 @@ class TaskService:
capability_requirements=capability_requirements,
preferred_key_ids=preferred_key_ids,
request_body_ref=request_body_ref,
request_headers=request_headers,
request_body=request_body,
)
async def _execute_sync_unified(
@@ -194,6 +198,8 @@ class TaskService:
capability_requirements: dict[str, bool] | None,
preferred_key_ids: list[str] | None,
request_body_ref: dict[str, Any] | None,
request_headers: dict[str, Any] | None,
request_body: dict[str, Any] | None,
) -> ExecutionResult:
"""
Unified candidate traversal loop for SYNC.
@@ -266,6 +272,8 @@ class TaskService:
model=model_name,
is_stream=is_stream,
api_format=api_format_norm,
request_headers=request_headers,
request_body=request_body,
)
except Exception as exc:
logger.warning("创建 pending 使用记录失败: {}", str(exc))