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

@@ -325,6 +325,8 @@ class BaseMessageHandler:
api_format=api_format,
endpoint_api_format=endpoint_api_format,
has_format_conversion=has_format_conversion,
provider_request_headers=ctx.provider_request_headers or None,
provider_request_body=ctx.provider_request_body,
)
finally:
db.close()

View File

@@ -563,6 +563,8 @@ class ChatHandlerBase(BaseMessageHandler, ABC):
capability_requirements=capability_requirements or None,
preferred_key_ids=preferred_key_ids or None,
request_body_ref=request_body_ref,
request_headers=original_headers,
request_body=original_request_body,
)
stream_generator = exec_result.response
provider_name = exec_result.provider_name or "unknown"

View File

@@ -160,6 +160,8 @@ class ChatSyncExecutor:
capability_requirements=capability_requirements or None,
preferred_key_ids=preferred_key_ids or None,
request_body_ref=request_body_ref,
request_headers=original_headers,
request_body=original_request_body,
)
actual_provider_name = exec_result.provider_name or "unknown"
ctx.provider_id = exec_result.provider_id

View File

@@ -445,6 +445,8 @@ class CliEventMixin:
api_format=ctx.api_format,
endpoint_api_format=ctx.provider_api_format or None,
has_format_conversion=ctx.has_format_conversion,
provider_request_headers=ctx.provider_request_headers or None,
provider_request_body=ctx.provider_request_body,
)
except Exception as e:
logger.warning("[{}] 同步更新 streaming 状态失败: {}", self.request_id, e)

View File

@@ -168,6 +168,8 @@ class CliStreamMixin:
capability_requirements=capability_requirements or None,
preferred_key_ids=preferred_key_ids or None,
request_body_ref=request_body_ref,
request_headers=original_headers,
request_body=original_request_body,
)
stream_generator = exec_result.response
provider_name = exec_result.provider_name or "unknown"

View File

@@ -464,6 +464,8 @@ class CliSyncMixin:
capability_requirements=capability_requirements or None,
preferred_key_ids=preferred_key_ids or None,
request_body_ref=request_body_ref,
request_headers=original_headers,
request_body=original_request_body,
)
result = exec_result.response
actual_provider_name = exec_result.provider_name or "unknown"