feat(server): 设置持久化新增 LLM 模型表与主题字段
- SettingsLlmForm 新增 models 列表(SettingsModelRow:slot/provider/url/apiKey/modelId/type),支持多模型行持久化 - settings 服务读写模型表与主题相关字段,更新 test_settings_persistence 测试
This commit is contained in:
@@ -146,8 +146,48 @@ def test_runtime_model_config_returns_decrypted_main_model(monkeypatch) -> None:
|
||||
assert runtime_model["endpoint"] == "https://api.minimaxi.com/v1"
|
||||
assert runtime_model["apiKey"] == "shared-main-key"
|
||||
assert runtime_model["capability"] == "chat"
|
||||
|
||||
|
||||
|
||||
|
||||
def test_settings_service_persists_additional_model_rows(monkeypatch) -> None:
|
||||
temp_dir = build_temp_secret_dir()
|
||||
monkeypatch.setattr(secret_box, "SECRET_KEY_FILE", temp_dir / "settings.key")
|
||||
monkeypatch.setattr(Base.metadata, "create_all", lambda *args, **kwargs: None)
|
||||
monkeypatch.setenv("HERMES_HOME", str(temp_dir / ".hermes"))
|
||||
|
||||
with build_session(temp_dir / "settings.db") as db:
|
||||
service = SettingsService(db)
|
||||
payload = service.get_settings_snapshot().model_dump()
|
||||
payload["llmForm"]["models"].append(
|
||||
{
|
||||
"slot": "llm_expense_audit",
|
||||
"provider": "MiniMax",
|
||||
"url": "https://api.minimaxi.com/v1",
|
||||
"apiKey": "extra-secret",
|
||||
"apiKeyConfigured": False,
|
||||
"modelId": "MiniMax-Text-01",
|
||||
"type": "llm",
|
||||
}
|
||||
)
|
||||
|
||||
saved_snapshot = service.save_settings_snapshot(SettingsWrite(**payload))
|
||||
|
||||
saved_model = next(
|
||||
model for model in saved_snapshot.llmForm.models if model.slot == "llm_expense_audit"
|
||||
)
|
||||
assert saved_model.provider == "MiniMax"
|
||||
assert saved_model.url == "https://api.minimaxi.com/v1"
|
||||
assert saved_model.modelId == "MiniMax-Text-01"
|
||||
assert saved_model.type == "llm"
|
||||
assert saved_model.apiKey == ""
|
||||
assert saved_model.apiKeyConfigured is True
|
||||
|
||||
model_row = db.get(SystemModelSetting, "llm_expense_audit")
|
||||
assert model_row is not None
|
||||
assert model_row.capability == "chat"
|
||||
assert model_row.priority == 50
|
||||
assert service.load_saved_model_api_key("llm_expense_audit") == "extra-secret"
|
||||
|
||||
|
||||
def test_legacy_setup_admin_password_is_migrated_to_database(monkeypatch) -> None:
|
||||
temp_dir = build_temp_secret_dir()
|
||||
admin_file = temp_dir / "admin.json"
|
||||
|
||||
Reference in New Issue
Block a user