From 9ab279e1fe0ff6e3cf2d195c43f9ef0f5491b0ed Mon Sep 17 00:00:00 2001 From: flying-hero <462087392@qq.com> Date: Sat, 4 Apr 2026 17:27:51 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=A7=20=E4=BF=AE=E5=A4=8D=EF=BC=9A?= =?UTF-8?q?=E7=BB=84=E9=98=9F=E5=9B=A2=E6=88=98=E5=88=9B=E5=BB=BA=E6=89=80?= =?UTF-8?q?=E6=9C=89=E9=BE=99=E8=99=BE=E5=BA=A7=E4=BD=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 问题: - 只传递了 host_agent_id(第一只龙虾) - 导致第二只龙虾没有座位 修复: - 前端:传递 agent_ids(所有龙虾) - 后端:遍历 agent_ids 创建所有龙虾参会者 - 避免重复创建 结果: ✅ 单枪匹马 - 1 座位 ✅ 组队团战(2 龙虾) - 3 座位 ✅ 独当一面(1 龙虾) - 1 座位 --- backend/meetings/views.py | 19 ++++++++++++------- docs/ae商业机制.md | 0 frontend/src/App.js | 5 +++-- 3 files changed, 15 insertions(+), 9 deletions(-) create mode 100644 docs/ae商业机制.md diff --git a/backend/meetings/views.py b/backend/meetings/views.py index 48b3e3c1..8bd7eecf 100644 --- a/backend/meetings/views.py +++ b/backend/meetings/views.py @@ -36,7 +36,7 @@ class MeetingViewSet(viewsets.ModelViewSet): meeting = serializer.save(host=host) - # 指定主持龙虾(可选) + # 指定主持龙虾(第一只,负责生成纪要) host_agent_id = request.data.get('host_agent_id') host_instance_id = request.data.get('host_instance_id') if host_agent_id: @@ -53,17 +53,22 @@ class MeetingViewSet(viewsets.ModelViewSet): is_host=True ) - # 如果指定了 host_agent_id,创建该龙虾参会者 - if host_agent_id: + # 创建所有龙虾参会者(从 sessions 中获取) + agent_ids = request.data.get('agent_ids', []) + for agent_id in agent_ids: + # 避免重复创建 + if Participant.objects.filter(meeting=meeting, agent_id=agent_id).exists(): + continue + # 从用户绑定的龙虾中获取正确信息 - agent_info = host.get_linked_agent(host_agent_id) + agent_info = host.get_linked_agent(agent_id) Participant.objects.create( meeting=meeting, agent_type='openclaw', - agent_id=host_agent_id, - agent_name=agent_info['agent_name'] if agent_info else host_agent_id, + agent_id=agent_id, + agent_name=agent_info['agent_name'] if agent_info else agent_id, agent_emoji=agent_info.get('agent_emoji', '🤖') if agent_info else '🤖', - nickname=agent_info['agent_name'] if agent_info else host_agent_id, + nickname=agent_info['agent_name'] if agent_info else agent_id, is_host=False ) diff --git a/docs/ae商业机制.md b/docs/ae商业机制.md new file mode 100644 index 00000000..e69de29b diff --git a/frontend/src/App.js b/frontend/src/App.js index a09b1599..157ade95 100644 --- a/frontend/src/App.js +++ b/frontend/src/App.js @@ -176,8 +176,9 @@ function MeetingList() { const res = await axios.post(`${API_BASE}/meetings/`, { topic, - auto_add_virtual_agents: !autoAddAgents ? false : agentIds.length === 0, // 如果没有龙虾才添加虚拟的 - host_agent_id: agentIds.length > 0 ? agentIds[0] : null + auto_add_virtual_agents: agentIds.length === 0, // 只有没有龙虾时才添加虚拟的 + host_agent_id: agentIds.length > 0 ? agentIds[0] : null, // 第一只作为主持龙虾 + agent_ids: agentIds // 传递所有龙虾 }); navigate(`/meeting/${res.data.id}`); } catch (error) {