fix: 统一格式兼容性检查,透传格式也需开关启用

- 同族格式(如 CLAUDE/CLAUDE_CLI)现在也需要全局开关和端点开关启用才能透传
- 格式转换关闭时,Models API 只返回客户端格式本身
- 添加测试用例验证透传格式受开关限制
This commit is contained in:
fawney19
2026-01-28 13:08:14 +08:00
parent 95fc848e59
commit e7fda0eadd
3 changed files with 60 additions and 40 deletions

View File

@@ -168,13 +168,13 @@ def test_conversion_allowed_when_converter_supports_full() -> None:
def test_claude_cli_to_claude_no_conversion_needed() -> None:
"""CLAUDE 和 CLAUDE_CLI 格式相同,只是认证不同,可透传"""
"""CLAUDE 和 CLAUDE_CLI 格式相同,只是认证不同,可透传(需开关启用)"""
ok, needs_conv, reason = is_format_compatible(
"CLAUDE_CLI",
"CLAUDE",
endpoint_format_acceptance_config=None,
endpoint_format_acceptance_config={"enabled": True},
is_stream=False,
global_conversion_enabled=False,
global_conversion_enabled=True,
registry=MagicMock(),
)
assert ok is True
@@ -183,13 +183,13 @@ def test_claude_cli_to_claude_no_conversion_needed() -> None:
def test_claude_to_claude_cli_no_conversion_needed() -> None:
"""CLAUDE 和 CLAUDE_CLI 格式相同,只是认证不同,可透传"""
"""CLAUDE 和 CLAUDE_CLI 格式相同,只是认证不同,可透传(需开关启用)"""
ok, needs_conv, reason = is_format_compatible(
"CLAUDE",
"CLAUDE_CLI",
endpoint_format_acceptance_config=None,
endpoint_format_acceptance_config={"enabled": True},
is_stream=False,
global_conversion_enabled=False,
global_conversion_enabled=True,
registry=MagicMock(),
)
assert ok is True
@@ -198,13 +198,13 @@ def test_claude_to_claude_cli_no_conversion_needed() -> None:
def test_gemini_cli_to_gemini_no_conversion_needed() -> None:
"""GEMINI 和 GEMINI_CLI 格式相同,只是认证不同,可透传"""
"""GEMINI 和 GEMINI_CLI 格式相同,只是认证不同,可透传(需开关启用)"""
ok, needs_conv, reason = is_format_compatible(
"GEMINI_CLI",
"GEMINI",
endpoint_format_acceptance_config=None,
endpoint_format_acceptance_config={"enabled": True},
is_stream=False,
global_conversion_enabled=False,
global_conversion_enabled=True,
registry=MagicMock(),
)
assert ok is True
@@ -212,6 +212,34 @@ def test_gemini_cli_to_gemini_no_conversion_needed() -> None:
assert reason is None
def test_claude_cli_to_claude_blocked_when_global_switch_disabled() -> None:
"""透传格式CLAUDE_CLI -> CLAUDE也受全局开关限制"""
ok, needs_conv, reason = is_format_compatible(
"CLAUDE_CLI",
"CLAUDE",
endpoint_format_acceptance_config={"enabled": True},
is_stream=False,
global_conversion_enabled=False,
registry=MagicMock(),
)
assert ok is False
assert reason and ("全局" in reason or "FORMAT_CONVERSION_ENABLED" in reason)
def test_claude_cli_to_claude_blocked_when_endpoint_not_configured() -> None:
"""透传格式CLAUDE_CLI -> CLAUDE也需要端点配置"""
ok, needs_conv, reason = is_format_compatible(
"CLAUDE_CLI",
"CLAUDE",
endpoint_format_acceptance_config=None,
is_stream=False,
global_conversion_enabled=True,
registry=MagicMock(),
)
assert ok is False
assert reason and "未配置" in reason
def test_openai_cli_to_openai_needs_conversion() -> None:
"""OPENAI 和 OPENAI_CLI 格式不同Chat Completions vs Responses API需要转换"""
registry = MagicMock()