feat(product-suite): add cmhub vision AI writing

This commit is contained in:
chengma
2026-07-17 09:09:09 +08:00
parent 56d6b59a00
commit 40a9f5fbf2
15 changed files with 575 additions and 40 deletions
+41
View File
@@ -2798,6 +2798,7 @@ class GuiTests(TempDirMixin, unittest.TestCase):
self.assertEqual(QLineEdit.Password, tab.cmhub_api_key_edit.echoMode())
self.assertEqual("title-old", tab.cmhub_title_alias_combo.currentData())
self.assertEqual("image-old", tab.cmhub_image_alias_combo.currentData())
self.assertEqual("vision-standard", tab.cmhub_vision_alias_combo.currentData())
tab.cmhub_base_url_edit.setText("https://cmhub.example.com/api/v1/")
tab.cmhub_api_key_edit.setText("sk-new-secret")
@@ -2819,9 +2820,17 @@ class GuiTests(TempDirMixin, unittest.TestCase):
"pricing_status": "priced",
"prices": [{"resolution": "1K", "points_cost": 5}],
},
{
"alias": "vision-standard",
"operation_type": "vision",
"requires_image": True,
"pricing_status": "priced",
"prices": [{"points_cost": 1}],
},
],
title_selected="title-standard",
image_selected="image-standard",
vision_selected="vision-standard",
)
with mock.patch("app.gui.QMessageBox.warning") as warning, \
@@ -2837,6 +2846,7 @@ class GuiTests(TempDirMixin, unittest.TestCase):
self.assertEqual("https://cmhub.example.com", tab.cmhub_base_url_edit.text())
self.assertEqual("title-standard", saved["ai"]["cmhub"]["title_alias"])
self.assertEqual("image-standard", saved["ai"]["cmhub"]["image_alias"])
self.assertEqual("vision-standard", saved["ai"]["cmhub"]["vision_alias"])
self.assertEqual(12, saved["ai"]["cmhub"]["connect_timeout"])
self.assertTrue(saved["ai"]["cmhub"]["check_balance_before_batch"])
self.assertEqual(
@@ -2856,6 +2866,7 @@ class GuiTests(TempDirMixin, unittest.TestCase):
"base_url": "https://cmhub.example.com",
"title_alias": "title-saved",
"image_alias": "image-saved",
"vision_alias": "vision-saved",
"connect_timeout": 10,
"check_balance_before_batch": False,
}
@@ -2889,6 +2900,27 @@ class GuiTests(TempDirMixin, unittest.TestCase):
"pricing_status": "priced",
"prices": [{"resolution": "1K", "points_cost": 5}],
},
{
"alias": "vision-priced",
"operation_type": "vision",
"requires_image": True,
"pricing_status": "priced",
"prices": [{"points_cost": 1}],
},
{
"alias": "vision-without-image",
"operation_type": "vision",
"requires_image": False,
"pricing_status": "priced",
"prices": [{"points_cost": 1}],
},
{
"alias": "vision-free",
"operation_type": "vision",
"requires_image": True,
"pricing_status": "unpriced",
"prices": [],
},
],
}
)
@@ -2901,6 +2933,10 @@ class GuiTests(TempDirMixin, unittest.TestCase):
tab.cmhub_image_alias_combo.itemText(index)
for index in range(tab.cmhub_image_alias_combo.count())
]
vision_aliases = [
tab.cmhub_vision_alias_combo.itemData(index)
for index in range(tab.cmhub_vision_alias_combo.count())
]
self.assertIn("title-priced", title_aliases)
self.assertIn("title-saved", title_aliases)
self.assertNotIn("title-free", title_aliases)
@@ -2908,7 +2944,12 @@ class GuiTests(TempDirMixin, unittest.TestCase):
self.assertIn("512:1点", tab.cmhub_title_alias_combo.itemText(0))
self.assertTrue(any("需参考图" in label for label in image_labels))
self.assertTrue(any("默认档" in label for label in image_labels))
self.assertIn("vision-priced", vision_aliases)
self.assertIn("vision-saved", vision_aliases)
self.assertNotIn("vision-without-image", vision_aliases)
self.assertNotIn("vision-free", vision_aliases)
self.assertIn("余额 55", tab.cmhub_result_label.text())
self.assertIn("当前已保存值暂不可用", tab.cmhub_result_label.text())
self.assert_removed(temp_dir)