config: 新增 [run] mode 运行模式配置(cascade/doubao/deepseek)

- config.ini 全局生效,GUI 跟随配置,CLI --mode 参数可临时覆盖
- 必填项检查与首次配置对话框按模式过滤(仅豆包不要求 DeepSeek 配置,反之亦然)
- 模板/示例/README 同步更新,新增 2 个配置测试(共 35 个全部通过)
This commit is contained in:
yeuimu
2026-09-02 16:06:59 +08:00
parent 0033b7a4d2
commit 0ed5b9d9ff
6 changed files with 86 additions and 29 deletions
+22
View File
@@ -41,6 +41,28 @@ def test_missing_fields_none_when_filled():
assert missing_fields(cfg) == []
def test_missing_fields_mode_aware():
cfg = AppConfig(ark_api_key="k", ark_model="ep", deepseek_api_key="", deepseek_model="m")
# cascade 需要 DeepSeek Key
assert len(missing_fields(cfg, "cascade")) == 1
# doubao 模式不需要 DeepSeek 配置
assert missing_fields(cfg, "doubao") == []
# deepseek 模式不需要豆包配置
assert missing_fields(AppConfig(deepseek_api_key="sk"), "deepseek") == []
def test_mode_from_ini(tmp_path):
ini = tmp_path / "config.ini"
ini.write_text("[run]\nmode = deepseek\n", encoding="utf-8")
assert load_config(str(ini)).mode == "deepseek"
# 非法值回退 cascade
ini.write_text("[run]\nmode = turbo\n", encoding="utf-8")
assert load_config(str(ini)).mode == "cascade"
# 未配置默认 cascade
ini.write_text("[ark]\n", encoding="utf-8")
assert load_config(str(ini)).mode == "cascade"
def test_save_and_load_roundtrip(tmp_path):
ini = tmp_path / "config.ini"
cfg = AppConfig(ark_api_key="ark-key", ark_model="ep-xyz",