feat(router): 添加获取服务于所有用户的节点功能

修改 NodeRegistry 的 get_nodes_for_user 方法,除了获取显式映射到用户的节点外,现在还会包含服务于所有用户的节点(serves_users 为空的节点)。这确保了系统能正确处理全局可用的服务节点。
This commit is contained in:
Yuyao Huang (Sam) 2026-03-29 17:00:06 +08:00
parent c0ecea9d3a
commit ed7bbb1497

View File

@ -161,7 +161,17 @@ class NodeRegistry:
def get_nodes_for_user(self, user_id: str) -> list[NodeConnection]: def get_nodes_for_user(self, user_id: str) -> list[NodeConnection]:
"""Get all nodes that serve a user.""" """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] return [self._nodes[nid] for nid in node_ids if nid in self._nodes]
def get_active_node(self, user_id: str) -> Optional[NodeConnection]: def get_active_node(self, user_id: str) -> Optional[NodeConnection]: