fix(server,ui-html,engine): octagram 激活中的模型包也可删除,引擎映射支持动态释放

This commit is contained in:
Jia Sui committed 2026-10-02 20:15:41 +08:00
1 parent c2e7fd0c9b
commit 01c45c8d90
11 files changed
+143 -46

No files matched your search

+12 -6
View File
@@ -183,18 +183,24 @@ TEST_CASE(collocation_activation_write_and_delete_guard)
REQUIRE(SetConfiguredAssocSentenceCollocationModel(""));
REQUIRE(GetConfiguredAssocSentenceCollocationModel().empty());
// 未选择时没有受保护目标:推荐包也只是普通目录条目,删掉就是删掉。
// 未选择时任何包都可删:目录条目没有受保护的目标。
SeedModelFile(env.models_dir(), L"wanxiang-lts-zh-hans");
SeedModelFile(env.models_dir(), L"zh-moqi");
REQUIRE(collocation::DeleteModel(collocation::kRecommendedModelId));
REQUIRE(!std::filesystem::exists(env.models_dir() / L"wanxiang-lts-zh-hans"));
REQUIRE(collocation::DeleteModel("zh-moqi"));
REQUIRE(!std::filesystem::exists(env.models_dir() / L"zh-moqi"));
// 显式激活 zh-moqi 后守卫换目标:它不可删,其他包不受影响。
// 删除当前激活的包:文件与激活一并清掉——配置指向不存在的包只会留下僵尸选中态。
SeedModelFile(env.models_dir(), L"zh-moqi");
REQUIRE(SetConfiguredAssocSentenceCollocationModel("zh-moqi"));
REQUIRE(!collocation::DeleteModel("zh-moqi"));
REQUIRE(collocation::DeleteModel("zh-moqi"));
REQUIRE(!std::filesystem::exists(env.models_dir() / L"zh-moqi"));
REQUIRE(GetConfiguredAssocSentenceCollocationModel().empty());
// 删除非激活的包不动激活值:显式激活 zh-moqi 后删推荐包,激活保持不变。
SeedModelFile(env.models_dir(), L"zh-moqi");
SeedModelFile(env.models_dir(), L"wanxiang-lts-zh-hans");
REQUIRE(SetConfiguredAssocSentenceCollocationModel("zh-moqi"));
REQUIRE(collocation::DeleteModel(collocation::kRecommendedModelId));
REQUIRE_EQ(GetConfiguredAssocSentenceCollocationModel(), std::string("zh-moqi"));
REQUIRE(std::filesystem::exists(env.models_dir() / L"zh-moqi" / L"zh-moqi.gram"));
// 还原激活状态,不把测试残留带给同进程的后续用例。
REQUIRE(SetConfiguredAssocSentenceCollocationModel(""));