feat: 优化用量状态同步机制和 OpenAI CLI 流式转换

- 增加状态回退保护,防止异步响应覆盖已知状态
- 添加轮询并发保护 (pollInFlight),避免重复请求
- 支持 cancelled 状态筛选和显示
- 前端 mergeRecordStatus 保护活跃记录状态
- 后端 streaming 状态同步更新改为使用当前 DB 会话
- OpenAI CLI 流式转换增加工具调用事件支持
- 轮询接口新增 target_model 字段返回
- 修复迁移脚本 inspector 缓存问题,改用 information_schema
This commit is contained in:
fawney19
2026-02-04 03:17:55 +08:00
parent f3e2f84b38
commit 7f09f191a1
17 changed files with 957 additions and 84 deletions

View File

@@ -96,9 +96,11 @@ def test_stream_openai_to_openai_cli_delta() -> None:
out_events = reg.convert_stream_chunk(chunk, "openai:chat", "openai:cli", state=state)
assert isinstance(out_events, list) and out_events
assert out_events[0].get("type") == "response.created"
assert out_events[1].get("type") == "response.output_text.delta"
assert out_events[1].get("delta") == "hi"
created = [e for e in out_events if e.get("type") == "response.created"]
assert created
deltas = [e for e in out_events if e.get("type") == "response.output_text.delta"]
assert deltas
assert deltas[0].get("delta") == "hi"
def test_stream_openai_cli_to_openai_delta() -> None:
@@ -376,7 +378,7 @@ def test_real_claude_cli_stream_response_conversion() -> None:
state = StreamState()
# 真实的 Claude CLI 流式响应事件序列
chunks = [
chunks: list[dict[str, Any]] = [
{
"type": "message_start",
"message": {
@@ -533,7 +535,7 @@ def test_real_claude_cli_stream_to_openai_cli() -> None:
state = StreamState()
# 简化的真实事件序列
chunks = [
chunks: list[dict[str, Any]] = [
{
"type": "message_start",
"message": {