From ed7bbb1497fa46df33a7d3c64ac72978c8b9d4c2 Mon Sep 17 00:00:00 2001 From: "Yuyao Huang (Sam)" Date: Sun, 29 Mar 2026 17:00:06 +0800 Subject: [PATCH] =?UTF-8?q?feat(router):=20=E6=B7=BB=E5=8A=A0=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E6=9C=8D=E5=8A=A1=E4=BA=8E=E6=89=80=E6=9C=89=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E7=9A=84=E8=8A=82=E7=82=B9=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修改 NodeRegistry 的 get_nodes_for_user 方法,除了获取显式映射到用户的节点外,现在还会包含服务于所有用户的节点(serves_users 为空的节点)。这确保了系统能正确处理全局可用的服务节点。 --- router/nodes.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/router/nodes.py b/router/nodes.py index 783a4ab..04e178e 100644 --- a/router/nodes.py +++ b/router/nodes.py @@ -161,7 +161,17 @@ class NodeRegistry: def get_nodes_for_user(self, user_id: str) -> list[NodeConnection]: """Get all nodes that serve a user.""" - node_ids = self._user_nodes.get(user_id, set()) + # Get nodes explicitly mapped to this user + user_node_ids = self._user_nodes.get(user_id, set()) + + # Get nodes that serve all users (empty serves_users set) + all_users_node_ids = set() + for node_id, node in self._nodes.items(): + if not node.serves_users: + all_users_node_ids.add(node_id) + + # Combine both sets + node_ids = user_node_ids | all_users_node_ids return [self._nodes[nid] for nid in node_ids if nid in self._nodes] def get_active_node(self, user_id: str) -> Optional[NodeConnection]: