fix: apply personalization after workspace switch
This commit is contained in:
parent
dc0149f134
commit
bb44120087
@ -63,6 +63,19 @@ def _set_terminal_workspace_label(terminal: WebTerminal, label: Optional[str]) -
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
def _apply_workspace_personalization_preferences(terminal: WebTerminal, workspace) -> None:
|
||||||
|
"""Apply persisted workspace personalization after policy/workspace resolution."""
|
||||||
|
try:
|
||||||
|
config = load_personalization_config(workspace.data_dir)
|
||||||
|
terminal.apply_personalization_preferences(config)
|
||||||
|
if has_request_context():
|
||||||
|
session["run_mode"] = getattr(terminal, "run_mode", session.get("run_mode"))
|
||||||
|
session["thinking_mode"] = getattr(terminal, "thinking_mode", session.get("thinking_mode"))
|
||||||
|
session["model_key"] = getattr(terminal, "model_key", session.get("model_key"))
|
||||||
|
except Exception as exc:
|
||||||
|
debug_log(f"[Personalization] 应用工作区偏好失败: {exc}")
|
||||||
|
|
||||||
|
|
||||||
def _ensure_workspace_skills_synced(terminal: WebTerminal, workspace) -> None:
|
def _ensure_workspace_skills_synced(terminal: WebTerminal, workspace) -> None:
|
||||||
"""
|
"""
|
||||||
确保工作区 skills 已按当前个性化配置完成同步。
|
确保工作区 skills 已按当前个性化配置完成同步。
|
||||||
@ -300,6 +313,7 @@ def get_user_resources(username: Optional[str] = None, workspace_id: Optional[st
|
|||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
debug_log(f"[admin_policy][host_mode] 应用失败: {exc}")
|
debug_log(f"[admin_policy][host_mode] 应用失败: {exc}")
|
||||||
|
|
||||||
|
_apply_workspace_personalization_preferences(terminal, workspace)
|
||||||
_ensure_workspace_skills_synced(terminal, workspace)
|
_ensure_workspace_skills_synced(terminal, workspace)
|
||||||
write_host_workspace_debug(
|
write_host_workspace_debug(
|
||||||
"context.get_user_resources.host.return",
|
"context.get_user_resources.host.return",
|
||||||
@ -437,6 +451,7 @@ def get_user_resources(username: Optional[str] = None, workspace_id: Optional[st
|
|||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
debug_log(f"[admin_policy] 应用失败: {exc}")
|
debug_log(f"[admin_policy] 应用失败: {exc}")
|
||||||
|
|
||||||
|
_apply_workspace_personalization_preferences(terminal, workspace)
|
||||||
_ensure_workspace_skills_synced(terminal, workspace)
|
_ensure_workspace_skills_synced(terminal, workspace)
|
||||||
return terminal, workspace
|
return terminal, workspace
|
||||||
|
|
||||||
|
|||||||
@ -95,6 +95,31 @@ class ServerRefactorSmokeTest(unittest.TestCase):
|
|||||||
self.assertEqual(terminal.tool_categories_map["custom"].tools, ["demo_tool"])
|
self.assertEqual(terminal.tool_categories_map["custom"].tools, ["demo_tool"])
|
||||||
self.assertIn("demo_tool", terminal.disabled_tools)
|
self.assertIn("demo_tool", terminal.disabled_tools)
|
||||||
|
|
||||||
|
def test_context_applies_workspace_personalization_preferences(self):
|
||||||
|
import server.context as context
|
||||||
|
|
||||||
|
calls = []
|
||||||
|
|
||||||
|
class Terminal:
|
||||||
|
run_mode = "fast"
|
||||||
|
thinking_mode = False
|
||||||
|
model_key = None
|
||||||
|
|
||||||
|
def apply_personalization_preferences(self, config):
|
||||||
|
calls.append(config)
|
||||||
|
|
||||||
|
workspace = SimpleNamespace(data_dir="/tmp/workspace-data")
|
||||||
|
original_loader = context.load_personalization_config
|
||||||
|
try:
|
||||||
|
context.load_personalization_config = lambda data_dir: {
|
||||||
|
"disabled_tool_categories": ["custom"]
|
||||||
|
}
|
||||||
|
context._apply_workspace_personalization_preferences(Terminal(), workspace)
|
||||||
|
finally:
|
||||||
|
context.load_personalization_config = original_loader
|
||||||
|
|
||||||
|
self.assertEqual(calls, [{"disabled_tool_categories": ["custom"]}])
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user