feat: add cmhub AI backend

This commit is contained in:
chengma
2026-07-04 15:13:15 +08:00
parent c8a5e9ada8
commit 1efb095767
11 changed files with 1061 additions and 43 deletions
+30
View File
@@ -1,3 +1,4 @@
import json
import os
import sys
import unittest
@@ -30,6 +31,35 @@ class AppConfigTests(TempDirMixin, unittest.TestCase):
self.assert_removed(temp_dir)
def test_cmhub_defaults_old_config_and_key_helper(self):
with self.make_temp_dir() as temp_dir:
config_path = os.path.join(temp_dir, "config.json")
cmhub_path = os.path.join(temp_dir, "config", "cmhub.json")
config = appconfig.load_config(config_path)
ai = appconfig.ai_config(config)
self.assertEqual("direct", ai["backend"])
self.assertEqual("direct", appconfig.ai_backend(config))
self.assertEqual("", appconfig.cmhub_config(config)["base_url"])
self.assertFalse(os.path.exists(cmhub_path))
self.assertEqual({"api_key": ""}, appconfig.load_cmhub_config(cmhub_path))
saved = appconfig.save_cmhub_config(
{"api_key": "sk-cmhub-123456"},
path=cmhub_path,
)
self.assertEqual("sk-cmhub-123456", saved["api_key"])
self.assertEqual("sk-cmhub-123456", appconfig.get_cmhub_api_key(cmhub_path))
self.assertEqual("sk-c***3456", appconfig.get_cmhub_api_key(cmhub_path, masked=True))
with open(config_path, "w", encoding="utf-8") as fh:
json.dump({"ai": {"resolution": "512"}}, fh)
migrated = appconfig.load_config(config_path)
self.assertEqual("direct", appconfig.ai_config(migrated)["backend"])
self.assertEqual(180, appconfig.response_timeout(migrated))
self.assert_removed(temp_dir)
def test_config_rejects_sensitive_fields(self):
with self.make_temp_dir() as temp_dir:
config_path = os.path.join(temp_dir, "config.json")