feat: 接入模型动态 Fallback 与调用审计

This commit is contained in:
hh
2026-07-21 10:35:50 +08:00
parent 9429133d04
commit d0c3690d47
45 changed files with 9253 additions and 173 deletions
+5 -5
View File
@@ -902,9 +902,9 @@ class StandaloneImageReferenceTests(TestCase):
self.assertIn("用户要求是最高优先级", used_prompt)
prov.image_generation.assert_not_called()
def test_refs_force_image_edit_model_when_volcano_selected(self):
"""用户选了火山 Seedream(只有图生图、不会真锁主体)却传了参考图时,必须自动切到支持
image_edit 的 gpt-image-2——否则参考图形同虚设。回归保护「选火山+传参考图=完全不参考」。"""
def test_refs_keep_user_selected_volcano_model_as_primary(self):
"""图片创作上传参考图后仍必须尊重用户选择的 Seedream;它可走带 image 的图生图,
只有真实调用失败后才允许统一路由按配置 Fallback,不能在建任务阶段静默换成 gpt-image。"""
from apps.ai.models import ModelProvider
vp, _ = ModelProvider.objects.get_or_create(name="volcengine", defaults={"display_name": "火山"})
@@ -919,8 +919,8 @@ class StandaloneImageReferenceTests(TestCase):
team=self.team, user=self.user, prompt="不同场景", mode="image", count=1,
image_model="volcano", reference_image_ids=[str(ref.id)],
)
# 任务最终落在支持 image_edit 的模型(gpt-image),而不是用户选的火山 Seedream
self.assertIn("gpt-image", tasks[0].model_config.name)
self.assertEqual(tasks[0].model_config.provider_id, vp.id)
self.assertIn("seedream", tasks[0].model_config.name)
def test_model_tryon_keeps_each_user_selected_model_even_with_extra_refs(self):
"""模特上身图由专用 Worker 向两类模型传商品/人物参考图,不能沿用自由创作的自动换模逻辑。"""