Files
meeting-room/frontend/node_modules/.cache/babel-loader/41992708b5853ee3a9d8ef09718f21e8d8a782b2c69f9a9222ac87281ed77a37.json
flying-hero 96f6318101 📦 添加虚拟环境和启动脚本
新增:
- backend/venv/ - Python 虚拟环境
- backend/start.sh - 启动脚本(使用虚拟环境)
- backend/requirements.txt - 依赖列表
- .gitignore - 忽略虚拟环境和缓存文件

说明:
- 每个项目使用独立虚拟环境
- 避免依赖冲突
- 启动脚本自动创建和激活虚拟环境
2026-04-04 18:29:02 +08:00

1 line
89 KiB
JSON
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{"ast":null,"code":"var _jsxFileName = \"/home/node/.openclaw/workspace/flying-hero/projects/meeting-room/frontend/src/App.js\",\n _s = $RefreshSig$(),\n _s2 = $RefreshSig$(),\n _s3 = $RefreshSig$();\nimport React, { useState, useEffect } from 'react';\nimport { BrowserRouter as Router, Routes, Route, Link, useNavigate, useParams } from 'react-router-dom';\nimport axios from 'axios';\nimport { jsxDEV as _jsxDEV } from \"react/jsx-dev-runtime\";\nconst API_BASE = 'http://localhost:8000/api/v1';\naxios.interceptors.request.use(config => {\n const token = localStorage.getItem('token');\n if (token) config.headers.Authorization = `Bearer ${token}`;\n return config;\n});\n\n// ============ 登录页面 ============\nfunction LoginPage() {\n _s();\n const [username, setUsername] = useState('test');\n const [password, setPassword] = useState('test123');\n const [mode, setMode] = useState('solo');\n const [agents, setAgents] = useState([]);\n const [selectedAgents, setSelectedAgents] = useState([]);\n const navigate = useNavigate();\n\n // 扫描本机龙虾\n useEffect(() => {\n scanAgents();\n }, []);\n const scanAgents = async () => {\n try {\n // 传递 username 参数,获取绑定的龙虾信息\n const res = await axios.get(`${API_BASE}/user/scan-local-agents/?username=${username}`);\n setAgents(res.data.agents || []);\n } catch (error) {\n console.error('扫描龙虾失败:', error);\n }\n };\n const handleLogin = async e => {\n e.preventDefault();\n try {\n const payload = {\n username,\n password,\n mode\n };\n if (mode !== 'solo' && selectedAgents.length > 0) {\n payload.agent_ids = selectedAgents;\n }\n const res = await axios.post(`${API_BASE}/auth/login/`, payload);\n localStorage.setItem('token', res.data.token);\n localStorage.setItem('user', JSON.stringify(res.data.user));\n localStorage.setItem('sessions', JSON.stringify(res.data.sessions));\n localStorage.setItem('mode', res.data.mode);\n navigate('/meetings');\n } catch (error) {\n var _error$response, _error$response$data, _error$response2, _error$response2$data;\n alert('登录失败:' + (((_error$response = error.response) === null || _error$response === void 0 ? void 0 : (_error$response$data = _error$response.data) === null || _error$response$data === void 0 ? void 0 : _error$response$data.detail) || ((_error$response2 = error.response) === null || _error$response2 === void 0 ? void 0 : (_error$response2$data = _error$response2.data) === null || _error$response2$data === void 0 ? void 0 : _error$response2$data.error) || error.message));\n }\n };\n const toggleAgent = agentId => {\n setSelectedAgents(prev => prev.includes(agentId) ? prev.filter(id => id !== agentId) : [...prev, agentId]);\n };\n return /*#__PURE__*/_jsxDEV(\"div\", {\n style: styles.center,\n children: /*#__PURE__*/_jsxDEV(\"div\", {\n style: styles.card,\n children: [/*#__PURE__*/_jsxDEV(\"h1\", {\n style: styles.title,\n children: \"\\uD83C\\uDFDB\\uFE0F \\u9F99\\u867E\\u8BAE\\u4E8B\\u5385\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 72,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(\"form\", {\n onSubmit: handleLogin,\n style: {\n ...styles.form,\n flexDirection: 'column'\n },\n children: [/*#__PURE__*/_jsxDEV(\"input\", {\n type: \"text\",\n placeholder: \"\\u7528\\u6237\\u540D\",\n value: username,\n onChange: e => setUsername(e.target.value),\n style: styles.input,\n required: true\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 74,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"input\", {\n type: \"password\",\n placeholder: \"\\u5BC6\\u7801\",\n value: password,\n onChange: e => setPassword(e.target.value),\n style: styles.input,\n required: true\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 75,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n style: {\n margin: '15px 0'\n },\n children: [/*#__PURE__*/_jsxDEV(\"label\", {\n style: {\n display: 'block',\n marginBottom: '10px',\n fontWeight: '600'\n },\n children: \"\\uD83C\\uDFAF \\u51FA\\u6218\\u6A21\\u5F0F\\uFF1A\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 79,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(\"label\", {\n style: {\n display: 'block',\n marginBottom: '12px',\n cursor: 'pointer',\n padding: '10px',\n background: mode === 'solo' ? '#e7f3ff' : 'white',\n borderRadius: '8px',\n border: '1px solid #2196f3'\n },\n children: [/*#__PURE__*/_jsxDEV(\"input\", {\n type: \"radio\",\n name: \"mode\",\n value: \"solo\",\n checked: mode === 'solo',\n onChange: e => setMode(e.target.value)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 81,\n columnNumber: 15\n }, this), ' ', \"\\uD83E\\uDD77 \", /*#__PURE__*/_jsxDEV(\"strong\", {\n children: \"\\u5355\\u67AA\\u5339\\u9A6C\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 88,\n columnNumber: 23\n }, this), \"\\uFF08\\u4EBA\\u7C7B\\u5355\\u72EC\\u51FA\\u6218\\uFF0C\\u4E0D\\u5E26\\u9F99\\u867E\\uFF09\"]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 80,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(\"label\", {\n style: {\n display: 'block',\n marginBottom: '12px',\n cursor: 'pointer',\n padding: '10px',\n background: mode === 'team' ? '#e7f3ff' : 'white',\n borderRadius: '8px',\n border: '1px solid #2196f3'\n },\n children: [/*#__PURE__*/_jsxDEV(\"input\", {\n type: \"radio\",\n name: \"mode\",\n value: \"team\",\n checked: mode === 'team',\n onChange: e => setMode(e.target.value)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 91,\n columnNumber: 15\n }, this), ' ', \"\\uD83D\\uDEE1\\uFE0F \", /*#__PURE__*/_jsxDEV(\"strong\", {\n children: \"\\u7EC4\\u961F\\u56E2\\u6218\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 98,\n columnNumber: 24\n }, this), \"\\uFF08\\u4EBA\\u7C7B + N \\u53EA\\u9F99\\u867E\\u4E00\\u8D77\\u51FA\\u6218\\uFF09\"]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 90,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(\"label\", {\n style: {\n display: 'block',\n marginBottom: '12px',\n cursor: 'pointer',\n padding: '10px',\n background: mode === 'agent_only' ? '#e7f3ff' : 'white',\n borderRadius: '8px',\n border: '1px solid #2196f3'\n },\n children: [/*#__PURE__*/_jsxDEV(\"input\", {\n type: \"radio\",\n name: \"mode\",\n value: \"agent_only\",\n checked: mode === 'agent_only',\n onChange: e => setMode(e.target.value)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 101,\n columnNumber: 15\n }, this), ' ', \"\\u2694\\uFE0F \", /*#__PURE__*/_jsxDEV(\"strong\", {\n children: \"\\u72EC\\u5F53\\u4E00\\u9762\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 108,\n columnNumber: 23\n }, this), \"\\uFF08\\u9F99\\u867E\\u5355\\u72EC\\u51FA\\u5F81\\uFF0C\\u4EBA\\u7C7B\\u4E0D\\u4E0A\\u573A\\uFF09\"]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 100,\n columnNumber: 13\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 78,\n columnNumber: 11\n }, this), mode !== 'solo' && /*#__PURE__*/_jsxDEV(\"div\", {\n style: {\n margin: '15px 0',\n padding: '15px',\n background: '#f9f9f9',\n borderRadius: '8px'\n },\n children: [/*#__PURE__*/_jsxDEV(\"label\", {\n style: {\n display: 'block',\n marginBottom: '10px',\n fontWeight: '600'\n },\n children: \"\\uD83E\\uDD90 \\u9009\\u62E9\\u9F99\\u867E\\u961F\\u53CB\\uFF1A\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 115,\n columnNumber: 15\n }, this), agents.length === 0 ? /*#__PURE__*/_jsxDEV(\"p\", {\n style: {\n color: '#999',\n fontSize: '14px'\n },\n children: \"\\u672A\\u627E\\u5230\\u53EF\\u7528\\u9F99\\u867E\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 117,\n columnNumber: 17\n }, this) : agents.map(a => /*#__PURE__*/_jsxDEV(\"label\", {\n style: {\n display: 'flex',\n alignItems: 'center',\n marginBottom: '8px',\n cursor: 'pointer'\n },\n children: [/*#__PURE__*/_jsxDEV(\"input\", {\n type: \"checkbox\",\n checked: selectedAgents.includes(a.agent_id),\n onChange: () => toggleAgent(a.agent_id),\n style: {\n marginRight: '10px'\n }\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 121,\n columnNumber: 21\n }, this), /*#__PURE__*/_jsxDEV(\"span\", {\n style: {\n fontSize: '16px',\n marginRight: '8px'\n },\n children: a.agent_emoji || '🤖'\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 127,\n columnNumber: 21\n }, this), /*#__PURE__*/_jsxDEV(\"span\", {\n children: a.agent_id\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 128,\n columnNumber: 21\n }, this), /*#__PURE__*/_jsxDEV(\"span\", {\n style: {\n color: '#999',\n fontSize: '12px',\n marginLeft: '8px'\n },\n children: [\"(\", a.instance_name, \")\"]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 129,\n columnNumber: 21\n }, this)]\n }, a.agent_id, true, {\n fileName: _jsxFileName,\n lineNumber: 120,\n columnNumber: 19\n }, this)), selectedAgents.length > 0 && /*#__PURE__*/_jsxDEV(\"p\", {\n style: {\n marginTop: '10px',\n color: '#2196f3',\n fontWeight: '600'\n },\n children: [\"\\u5DF2\\u9009 \", selectedAgents.length, \" \\u53EA\\u9F99\\u867E\\u961F\\u53CB \\uD83E\\uDDB8\"]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 134,\n columnNumber: 17\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 114,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(\"button\", {\n type: \"submit\",\n style: styles.btn,\n children: \"\\uD83D\\uDE80 \\u767B\\u5F55\\u51FA\\u5F81\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 141,\n columnNumber: 11\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 73,\n columnNumber: 9\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 71,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 70,\n columnNumber: 5\n }, this);\n}\n\n// ============ 会议列表 ============\n_s(LoginPage, \"fZ8UTwO2MCkNd6X4nAqytpuamXM=\", false, function () {\n return [useNavigate];\n});\n_c = LoginPage;\nfunction MeetingList() {\n _s2();\n const [meetings, setMeetings] = useState([]);\n const [topic, setTopic] = useState('');\n const [autoAddAgents, setAutoAddAgents] = useState(true);\n const navigate = useNavigate();\n const token = localStorage.getItem('token');\n useEffect(() => {\n if (!token) {\n navigate('/login');\n return;\n }\n fetchMeetings();\n }, []);\n const fetchMeetings = async () => {\n try {\n const res = await axios.get(`${API_BASE}/meetings/`);\n setMeetings(res.data);\n } catch (error) {\n console.error(error);\n }\n };\n const createMeeting = async e => {\n e.preventDefault();\n try {\n // 获取当前登录的龙虾\n const sessions = JSON.parse(localStorage.getItem('sessions') || '[]');\n const agentIds = sessions.filter(s => s.session_type === 'agent').map(s => s.agent_id);\n const res = await axios.post(`${API_BASE}/meetings/`, {\n topic,\n auto_add_virtual_agents: !autoAddAgents ? false : agentIds.length === 0,\n // 如果没有龙虾才添加虚拟的\n host_agent_id: agentIds.length > 0 ? agentIds[0] : null\n });\n navigate(`/meeting/${res.data.id}`);\n } catch (error) {\n var _error$response3, _error$response3$data;\n alert('创建失败:' + (((_error$response3 = error.response) === null || _error$response3 === void 0 ? void 0 : (_error$response3$data = _error$response3.data) === null || _error$response3$data === void 0 ? void 0 : _error$response3$data.detail) || error.message));\n }\n };\n const logout = () => {\n localStorage.removeItem('token');\n navigate('/login');\n };\n return /*#__PURE__*/_jsxDEV(\"div\", {\n style: styles.container,\n children: [/*#__PURE__*/_jsxDEV(\"div\", {\n style: styles.header,\n children: [/*#__PURE__*/_jsxDEV(\"h1\", {\n children: \"\\uD83D\\uDCCB \\u6211\\u7684\\u4F1A\\u8BAE\\u5BA4\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 191,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(\"button\", {\n onClick: logout,\n style: styles.smallBtn,\n children: \"\\u9000\\u51FA\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 192,\n columnNumber: 9\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 190,\n columnNumber: 7\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n style: styles.card,\n children: [/*#__PURE__*/_jsxDEV(\"h2\", {\n children: \"\\u521B\\u5EFA\\u4F1A\\u8BAE\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 195,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(\"form\", {\n onSubmit: createMeeting,\n style: styles.form,\n children: [/*#__PURE__*/_jsxDEV(\"input\", {\n type: \"text\",\n placeholder: \"\\u4F1A\\u8BAE\\u4E3B\\u9898\",\n value: topic,\n onChange: e => setTopic(e.target.value),\n style: styles.input,\n required: true\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 197,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"label\", {\n style: {\n display: 'flex',\n alignItems: 'center',\n gap: '5px',\n whiteSpace: 'nowrap'\n },\n children: [/*#__PURE__*/_jsxDEV(\"input\", {\n type: \"checkbox\",\n checked: autoAddAgents,\n onChange: e => setAutoAddAgents(e.target.checked)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 199,\n columnNumber: 13\n }, this), \"\\u6DFB\\u52A0\\u865A\\u62DF\\u5750\\u5E2D\"]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 198,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"button\", {\n type: \"submit\",\n style: styles.btn,\n children: \"\\u521B\\u5EFA\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 206,\n columnNumber: 11\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 196,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(\"p\", {\n style: {\n fontSize: '12px',\n color: '#666',\n marginTop: '10px'\n },\n children: \"\\uD83D\\uDCA1 \\u52FE\\u9009\\\"\\u6DFB\\u52A0\\u865A\\u62DF\\u5750\\u5E2D\\\"\\u4F1A\\u81EA\\u52A8\\u521B\\u5EFA 2 \\u4E2A\\u865A\\u62DF\\u9F99\\u867E\\u53C2\\u4F1A\\u8005\\uFF0C\\u65B9\\u4FBF\\u6D4B\\u8BD5 @ \\u529F\\u80FD\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 208,\n columnNumber: 9\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 194,\n columnNumber: 7\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n style: styles.list,\n children: meetings.map(m => /*#__PURE__*/_jsxDEV(\"div\", {\n style: styles.item,\n children: [/*#__PURE__*/_jsxDEV(\"div\", {\n children: [/*#__PURE__*/_jsxDEV(\"h3\", {\n children: m.topic\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 216,\n columnNumber: 15\n }, this), /*#__PURE__*/_jsxDEV(\"p\", {\n children: [\"\\u72B6\\u6001\\uFF1A\", m.status, \" | \\u9080\\u8BF7\\u7801\\uFF1A\", m.invite_code]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 217,\n columnNumber: 15\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 215,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(\"button\", {\n onClick: () => navigate(`/meeting/${m.id}`),\n style: styles.smallBtn,\n children: \"\\u8FDB\\u5165\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 219,\n columnNumber: 13\n }, this)]\n }, m.id, true, {\n fileName: _jsxFileName,\n lineNumber: 214,\n columnNumber: 11\n }, this))\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 212,\n columnNumber: 7\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 189,\n columnNumber: 5\n }, this);\n}\n\n// ============ 会议室 ============\n_s2(MeetingList, \"uNteAZxXgR2pMaYhX5ze9khr1nw=\", false, function () {\n return [useNavigate];\n});\n_c2 = MeetingList;\nfunction MeetingRoom() {\n _s3();\n const {\n id\n } = useParams();\n const [messages, setMessages] = useState([]);\n const [content, setContent] = useState('');\n const [participants, setParticipants] = useState([]);\n const [meeting, setMeeting] = useState(null);\n const [hoveredSeat, setHoveredSeat] = useState(null);\n const token = localStorage.getItem('token');\n useEffect(() => {\n if (!token) return;\n fetchMeeting();\n fetchParticipants();\n fetchMessages();\n const interval = setInterval(fetchMessages, 1000);\n return () => clearInterval(interval);\n }, [id]);\n const fetchMeeting = async () => {\n try {\n const res = await axios.get(`${API_BASE}/meetings/${id}/`);\n setMeeting(res.data);\n } catch (error) {\n console.error(error);\n }\n };\n const fetchParticipants = async () => {\n try {\n const res = await axios.get(`${API_BASE}/meetings/${id}/participants/`);\n setParticipants(res.data);\n } catch (error) {\n console.error(error);\n }\n };\n const fetchMessages = async () => {\n try {\n const res = await axios.get(`${API_BASE}/meetings/${id}/messages/?last_id=0`);\n setMessages(res.data.messages || []);\n } catch (error) {\n console.error(error);\n }\n };\n const sendMessage = async e => {\n e.preventDefault();\n if (!content.trim()) return;\n try {\n await axios.post(`${API_BASE}/meetings/${id}/send_message/`, {\n content\n });\n setContent('');\n fetchMessages();\n } catch (error) {\n var _error$response4, _error$response4$data;\n alert('发送失败:' + (((_error$response4 = error.response) === null || _error$response4 === void 0 ? void 0 : (_error$response4$data = _error$response4.data) === null || _error$response4$data === void 0 ? void 0 : _error$response4$data.detail) || error.message));\n }\n };\n const mentionAgent = async (targetAgentId, agentName) => {\n const target = targetAgentId || prompt('@哪个 Agent输入 agent_id:');\n if (!target || !content.trim()) return;\n const name = agentName || target;\n try {\n await axios.post(`${API_BASE}/meetings/${id}/mention_agent/`, {\n target_agent_id: target,\n content,\n sender_name: localStorage.getItem('user') ? JSON.parse(localStorage.getItem('user')).username : 'User'\n });\n setContent('');\n fetchMessages();\n alert(`✅ 已 @${name}`);\n } catch (error) {\n var _error$response5, _error$response5$data;\n alert('发送失败:' + (((_error$response5 = error.response) === null || _error$response5 === void 0 ? void 0 : (_error$response5$data = _error$response5.data) === null || _error$response5$data === void 0 ? void 0 : _error$response5$data.error) || error.message));\n }\n };\n const startMeeting = async () => {\n try {\n await axios.post(`${API_BASE}/meetings/${id}/start/`);\n fetchMeeting();\n alert('✅ 会议已开始');\n } catch (error) {\n var _error$response6, _error$response6$data;\n alert('开始失败:' + (((_error$response6 = error.response) === null || _error$response6 === void 0 ? void 0 : (_error$response6$data = _error$response6.data) === null || _error$response6$data === void 0 ? void 0 : _error$response6$data.error) || error.message));\n }\n };\n const endMeeting = async () => {\n if (!confirm('确定结束会议?')) return;\n try {\n await axios.post(`${API_BASE}/meetings/${id}/end/`);\n fetchMeeting();\n alert('✅ 会议已结束');\n } catch (error) {\n var _error$response7, _error$response7$data;\n alert('结束失败:' + (((_error$response7 = error.response) === null || _error$response7 === void 0 ? void 0 : (_error$response7$data = _error$response7.data) === null || _error$response7$data === void 0 ? void 0 : _error$response7$data.error) || error.message));\n }\n };\n const generateMinutes = async () => {\n try {\n const res = await axios.get(`${API_BASE}/meetings/${id}/minutes/?output=markdown`);\n const blob = new Blob([res.data.markdown], {\n type: 'text/markdown'\n });\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = `meeting-${id.slice(0, 8)}.md`;\n a.click();\n URL.revokeObjectURL(url);\n alert('✅ 纪要已导出');\n } catch (error) {\n alert('导出失败:' + error.message);\n }\n };\n return /*#__PURE__*/_jsxDEV(\"div\", {\n style: styles.container,\n children: [/*#__PURE__*/_jsxDEV(\"div\", {\n style: styles.header,\n children: [/*#__PURE__*/_jsxDEV(Link, {\n to: \"/meetings\",\n style: styles.link,\n children: \"\\u2190 \\u8FD4\\u56DE\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 336,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(\"h1\", {\n children: (meeting === null || meeting === void 0 ? void 0 : meeting.topic) || '会议室'\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 337,\n columnNumber: 9\n }, this), meeting && /*#__PURE__*/_jsxDEV(\"span\", {\n style: styles.badge,\n children: meeting.status\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 338,\n columnNumber: 21\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 335,\n columnNumber: 7\n }, this), meeting && /*#__PURE__*/_jsxDEV(\"div\", {\n style: styles.infoCard,\n children: [/*#__PURE__*/_jsxDEV(\"p\", {\n children: [/*#__PURE__*/_jsxDEV(\"strong\", {\n children: \"ID:\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 343,\n columnNumber: 14\n }, this), \" \", meeting.id]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 343,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"p\", {\n children: [/*#__PURE__*/_jsxDEV(\"strong\", {\n children: \"\\u9080\\u8BF7\\u7801:\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 344,\n columnNumber: 14\n }, this), \" \", meeting.invite_code]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 344,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n style: styles.btnGroup,\n children: [/*#__PURE__*/_jsxDEV(\"button\", {\n onClick: startMeeting,\n style: styles.btnGreen,\n children: \"\\u25B6\\uFE0F \\u5F00\\u59CB\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 346,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(\"button\", {\n onClick: endMeeting,\n style: styles.btnRed,\n children: \"\\u23F9\\uFE0F \\u7ED3\\u675F\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 347,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(\"button\", {\n onClick: generateMinutes,\n style: styles.btnBlue,\n children: \"\\uD83D\\uDCCB \\u7EAA\\u8981\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 348,\n columnNumber: 13\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 345,\n columnNumber: 11\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 342,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n style: styles.card,\n children: [/*#__PURE__*/_jsxDEV(\"h2\", {\n children: [\"\\uD83E\\uDE91 \\u5EA7\\u4F4D\\u56FE \", /*#__PURE__*/_jsxDEV(\"span\", {\n style: styles.badge,\n children: participants.length\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 355,\n columnNumber: 20\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 355,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n style: styles.seats,\n children: participants.map(p => /*#__PURE__*/_jsxDEV(\"div\", {\n style: {\n ...styles.seat,\n ...(hoveredSeat === p.id ? styles.seatHover : {})\n },\n onClick: () => {\n if (p.agent_id) {\n var _document$querySelect;\n setContent(`@${p.nickname} `);\n (_document$querySelect = document.querySelector('input[placeholder=\"输入消息...\"]')) === null || _document$querySelect === void 0 ? void 0 : _document$querySelect.focus();\n }\n },\n onMouseEnter: () => setHoveredSeat(p.id),\n onMouseLeave: () => setHoveredSeat(null),\n title: p.agent_id ? '点击 @ 此人' : '',\n children: [/*#__PURE__*/_jsxDEV(\"div\", {\n style: styles.seatEmoji,\n children: p.agent_emoji || '👤'\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 371,\n columnNumber: 15\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n style: styles.seatName,\n children: p.nickname\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 372,\n columnNumber: 15\n }, this), p.is_host && /*#__PURE__*/_jsxDEV(\"div\", {\n style: styles.hostBadge,\n children: \"\\uD83D\\uDC51\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 373,\n columnNumber: 29\n }, this)]\n }, p.id, true, {\n fileName: _jsxFileName,\n lineNumber: 358,\n columnNumber: 13\n }, this))\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 356,\n columnNumber: 9\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 354,\n columnNumber: 7\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n style: styles.card,\n children: [/*#__PURE__*/_jsxDEV(\"h2\", {\n children: [\"\\uD83D\\uDCAC \\u804A\\u5929 \", /*#__PURE__*/_jsxDEV(\"span\", {\n style: styles.badge,\n children: messages.length\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 381,\n columnNumber: 19\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 381,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n style: styles.messages,\n children: messages.map(msg => /*#__PURE__*/_jsxDEV(\"div\", {\n style: styles.msg,\n children: [/*#__PURE__*/_jsxDEV(\"div\", {\n style: styles.msgHeader,\n children: [/*#__PURE__*/_jsxDEV(\"strong\", {\n children: [msg.sender_emoji, \" \", msg.sender_name]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 386,\n columnNumber: 17\n }, this), /*#__PURE__*/_jsxDEV(\"span\", {\n style: styles.msgTime,\n children: new Date(msg.created_at).toLocaleTimeString()\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 387,\n columnNumber: 17\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 385,\n columnNumber: 15\n }, this), /*#__PURE__*/_jsxDEV(\"p\", {\n style: styles.msgContent,\n children: msg.content\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 389,\n columnNumber: 15\n }, this), msg.in_reply_to && /*#__PURE__*/_jsxDEV(\"div\", {\n style: styles.replyTag,\n children: [\"\\u21A9\\uFE0F \\u56DE\\u590D #\", msg.in_reply_to]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 390,\n columnNumber: 35\n }, this)]\n }, msg.id, true, {\n fileName: _jsxFileName,\n lineNumber: 384,\n columnNumber: 13\n }, this))\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 382,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(\"form\", {\n onSubmit: sendMessage,\n style: styles.form,\n children: [/*#__PURE__*/_jsxDEV(\"input\", {\n type: \"text\",\n placeholder: \"\\u8F93\\u5165\\u6D88\\u606F...\",\n value: content,\n onChange: e => setContent(e.target.value),\n style: styles.input\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 395,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"button\", {\n type: \"submit\",\n style: styles.btn,\n children: \"\\u53D1\\u9001\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 396,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(\"button\", {\n type: \"button\",\n onClick: mentionAgent,\n style: styles.btnPink,\n children: \"\\uD83D\\uDCCD @Agent\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 397,\n columnNumber: 11\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 394,\n columnNumber: 9\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 380,\n columnNumber: 7\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 334,\n columnNumber: 5\n }, this);\n}\n\n// ============ App ============\n_s3(MeetingRoom, \"fh+UC+M8I83D9S4VTUsmF3cRwwg=\", false, function () {\n return [useParams];\n});\n_c3 = MeetingRoom;\nfunction App() {\n return /*#__PURE__*/_jsxDEV(Router, {\n children: /*#__PURE__*/_jsxDEV(Routes, {\n children: [/*#__PURE__*/_jsxDEV(Route, {\n path: \"/login\",\n element: /*#__PURE__*/_jsxDEV(LoginPage, {}, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 409,\n columnNumber: 39\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 409,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(Route, {\n path: \"/meetings\",\n element: /*#__PURE__*/_jsxDEV(MeetingList, {}, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 410,\n columnNumber: 42\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 410,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(Route, {\n path: \"/meeting/:id\",\n element: /*#__PURE__*/_jsxDEV(MeetingRoom, {}, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 411,\n columnNumber: 45\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 411,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(Route, {\n path: \"/\",\n element: /*#__PURE__*/_jsxDEV(LoginPage, {}, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 412,\n columnNumber: 34\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 412,\n columnNumber: 9\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 408,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 407,\n columnNumber: 5\n }, this);\n}\n\n// ============ 样式 ============\n_c4 = App;\nconst styles = {\n center: {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n minHeight: '100vh',\n background: 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)'\n },\n container: {\n maxWidth: '900px',\n margin: '0 auto',\n padding: '20px',\n fontFamily: '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif'\n },\n header: {\n display: 'flex',\n alignItems: 'center',\n gap: '15px',\n marginBottom: '20px'\n },\n card: {\n background: 'white',\n borderRadius: '12px',\n padding: '20px',\n marginBottom: '20px',\n boxShadow: '0 4px 6px rgba(0,0,0,0.1)'\n },\n infoCard: {\n background: '#e7f3ff',\n border: '1px solid #2196f3',\n borderRadius: '12px',\n padding: '15px',\n marginBottom: '20px'\n },\n title: {\n margin: '0 0 20px',\n color: '#1a365d',\n textAlign: 'center'\n },\n form: {\n display: 'flex',\n gap: '10px'\n },\n input: {\n flex: 1,\n padding: '12px',\n border: '2px solid #e2e8f0',\n borderRadius: '8px',\n fontSize: '14px'\n },\n btn: {\n padding: '12px 20px',\n background: 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)',\n color: 'white',\n border: 'none',\n borderRadius: '8px',\n cursor: 'pointer',\n fontWeight: '600'\n },\n btnGreen: {\n padding: '8px 16px',\n background: 'linear-gradient(135deg, #11998e 0%, #38ef7d 100%)',\n color: 'white',\n border: 'none',\n borderRadius: '6px',\n cursor: 'pointer',\n marginRight: '8px'\n },\n btnRed: {\n padding: '8px 16px',\n background: 'linear-gradient(135deg, #eb3349 0%, #f45c43 100%)',\n color: 'white',\n border: 'none',\n borderRadius: '6px',\n cursor: 'pointer',\n marginRight: '8px'\n },\n btnBlue: {\n padding: '8px 16px',\n background: 'linear-gradient(135deg, #4facfe 0%, #00f2fe 100%)',\n color: 'white',\n border: 'none',\n borderRadius: '6px',\n cursor: 'pointer'\n },\n btnPink: {\n padding: '8px 16px',\n background: 'linear-gradient(135deg, #f093fb 0%, #f5576c 100%)',\n color: 'white',\n border: 'none',\n borderRadius: '6px',\n cursor: 'pointer'\n },\n smallBtn: {\n padding: '8px 16px',\n background: '#edf2f7',\n border: 'none',\n borderRadius: '6px',\n cursor: 'pointer'\n },\n list: {\n display: 'flex',\n flexDirection: 'column',\n gap: '15px'\n },\n item: {\n background: 'white',\n borderRadius: '12px',\n padding: '20px',\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n boxShadow: '0 4px 6px rgba(0,0,0,0.1)'\n },\n link: {\n color: '#4299e1',\n textDecoration: 'none',\n fontSize: '16px'\n },\n badge: {\n background: '#667eea',\n color: 'white',\n padding: '4px 10px',\n borderRadius: '20px',\n fontSize: '12px',\n fontWeight: '600'\n },\n btnGroup: {\n display: 'flex',\n marginTop: '10px'\n },\n seats: {\n display: 'flex',\n flexWrap: 'wrap',\n gap: '15px',\n justifyContent: 'center'\n },\n seat: {\n background: 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)',\n color: 'white',\n padding: '15px',\n borderRadius: '50%',\n width: '90px',\n height: '90px',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n textAlign: 'center',\n cursor: 'pointer',\n transition: 'transform 0.2s',\n ':hover': {\n transform: 'scale(1.1)'\n }\n },\n seatHover: {\n transform: 'scale(1.05)'\n },\n seatEmoji: {\n fontSize: '28px',\n marginBottom: '5px'\n },\n seatName: {\n fontSize: '12px',\n fontWeight: '600'\n },\n hostBadge: {\n fontSize: '10px',\n opacity: '0.8'\n },\n messages: {\n maxHeight: '400px',\n overflowY: 'auto',\n marginBottom: '15px'\n },\n msg: {\n padding: '12px',\n background: '#f7fafc',\n borderRadius: '8px',\n marginBottom: '10px'\n },\n msgHeader: {\n display: 'flex',\n justifyContent: 'space-between',\n marginBottom: '5px'\n },\n msgContent: {\n margin: '5px 0',\n color: '#4a5568'\n },\n msgTime: {\n fontSize: '12px',\n color: '#a0aec0'\n },\n replyTag: {\n fontSize: '11px',\n color: '#a0aec0',\n marginTop: '5px'\n }\n};\nexport default App;\nvar _c, _c2, _c3, _c4;\n$RefreshReg$(_c, \"LoginPage\");\n$RefreshReg$(_c2, \"MeetingList\");\n$RefreshReg$(_c3, \"MeetingRoom\");\n$RefreshReg$(_c4, \"App\");","map":{"version":3,"names":["React","useState","useEffect","BrowserRouter","Router","Routes","Route","Link","useNavigate","useParams","axios","jsxDEV","_jsxDEV","API_BASE","interceptors","request","use","config","token","localStorage","getItem","headers","Authorization","LoginPage","_s","username","setUsername","password","setPassword","mode","setMode","agents","setAgents","selectedAgents","setSelectedAgents","navigate","scanAgents","res","get","data","error","console","handleLogin","e","preventDefault","payload","length","agent_ids","post","setItem","JSON","stringify","user","sessions","_error$response","_error$response$data","_error$response2","_error$response2$data","alert","response","detail","message","toggleAgent","agentId","prev","includes","filter","id","style","styles","center","children","card","title","fileName","_jsxFileName","lineNumber","columnNumber","onSubmit","form","flexDirection","type","placeholder","value","onChange","target","input","required","margin","display","marginBottom","fontWeight","cursor","padding","background","borderRadius","border","name","checked","color","fontSize","map","a","alignItems","agent_id","marginRight","agent_emoji","marginLeft","instance_name","marginTop","btn","_c","MeetingList","_s2","meetings","setMeetings","topic","setTopic","autoAddAgents","setAutoAddAgents","fetchMeetings","createMeeting","parse","agentIds","s","session_type","auto_add_virtual_agents","host_agent_id","_error$response3","_error$response3$data","logout","removeItem","container","header","onClick","smallBtn","gap","whiteSpace","list","m","item","status","invite_code","_c2","MeetingRoom","_s3","messages","setMessages","content","setContent","participants","setParticipants","meeting","setMeeting","hoveredSeat","setHoveredSeat","fetchMeeting","fetchParticipants","fetchMessages","interval","setInterval","clearInterval","sendMessage","trim","_error$response4","_error$response4$data","mentionAgent","targetAgentId","agentName","prompt","target_agent_id","sender_name","_error$response5","_error$response5$data","startMeeting","_error$response6","_error$response6$data","endMeeting","confirm","_error$response7","_error$response7$data","generateMinutes","blob","Blob","markdown","url","URL","createObjectURL","document","createElement","href","download","slice","click","revokeObjectURL","to","link","badge","infoCard","btnGroup","btnGreen","btnRed","btnBlue","seats","p","seat","seatHover","_document$querySelect","nickname","querySelector","focus","onMouseEnter","onMouseLeave","seatEmoji","seatName","is_host","hostBadge","msg","msgHeader","sender_emoji","msgTime","Date","created_at","toLocaleTimeString","msgContent","in_reply_to","replyTag","btnPink","_c3","App","path","element","_c4","justifyContent","minHeight","maxWidth","fontFamily","boxShadow","textAlign","flex","textDecoration","flexWrap","width","height","transition","transform","opacity","maxHeight","overflowY","$RefreshReg$"],"sources":["/home/node/.openclaw/workspace/flying-hero/projects/meeting-room/frontend/src/App.js"],"sourcesContent":["import React, { useState, useEffect } from 'react';\nimport { BrowserRouter as Router, Routes, Route, Link, useNavigate, useParams } from 'react-router-dom';\nimport axios from 'axios';\n\nconst API_BASE = 'http://localhost:8000/api/v1';\n\naxios.interceptors.request.use(config => {\n const token = localStorage.getItem('token');\n if (token) config.headers.Authorization = `Bearer ${token}`;\n return config;\n});\n\n// ============ 登录页面 ============\nfunction LoginPage() {\n const [username, setUsername] = useState('test');\n const [password, setPassword] = useState('test123');\n const [mode, setMode] = useState('solo');\n const [agents, setAgents] = useState([]);\n const [selectedAgents, setSelectedAgents] = useState([]);\n const navigate = useNavigate();\n\n // 扫描本机龙虾\n useEffect(() => {\n scanAgents();\n }, []);\n\n const scanAgents = async () => {\n try {\n // 传递 username 参数,获取绑定的龙虾信息\n const res = await axios.get(`${API_BASE}/user/scan-local-agents/?username=${username}`);\n setAgents(res.data.agents || []);\n } catch (error) {\n console.error('扫描龙虾失败:', error);\n }\n };\n\n const handleLogin = async (e) => {\n e.preventDefault();\n try {\n const payload = {\n username,\n password,\n mode\n };\n \n if (mode !== 'solo' && selectedAgents.length > 0) {\n payload.agent_ids = selectedAgents;\n }\n \n const res = await axios.post(`${API_BASE}/auth/login/`, payload);\n localStorage.setItem('token', res.data.token);\n localStorage.setItem('user', JSON.stringify(res.data.user));\n localStorage.setItem('sessions', JSON.stringify(res.data.sessions));\n localStorage.setItem('mode', res.data.mode);\n navigate('/meetings');\n } catch (error) {\n alert('登录失败:' + (error.response?.data?.detail || error.response?.data?.error || error.message));\n }\n };\n\n const toggleAgent = (agentId) => {\n setSelectedAgents(prev => \n prev.includes(agentId) \n ? prev.filter(id => id !== agentId)\n : [...prev, agentId]\n );\n };\n\n return (\n <div style={styles.center}>\n <div style={styles.card}>\n <h1 style={styles.title}>🏛️ 龙虾议事厅</h1>\n <form onSubmit={handleLogin} style={{...styles.form, flexDirection: 'column'}}>\n <input type=\"text\" placeholder=\"用户名\" value={username} onChange={e => setUsername(e.target.value)} style={styles.input} required />\n <input type=\"password\" placeholder=\"密码\" value={password} onChange={e => setPassword(e.target.value)} style={styles.input} required />\n \n {/* 出战模式选择 */}\n <div style={{margin: '15px 0'}}>\n <label style={{display: 'block', marginBottom: '10px', fontWeight: '600'}}>🎯 出战模式:</label>\n <label style={{display: 'block', marginBottom: '12px', cursor: 'pointer', padding: '10px', background: mode === 'solo' ? '#e7f3ff' : 'white', borderRadius: '8px', border: '1px solid #2196f3'}}>\n <input \n type=\"radio\" \n name=\"mode\" \n value=\"solo\" \n checked={mode === 'solo'} \n onChange={e => setMode(e.target.value)} \n />\n {' '}🥷 <strong>单枪匹马</strong>(人类单独出战,不带龙虾)\n </label>\n <label style={{display: 'block', marginBottom: '12px', cursor: 'pointer', padding: '10px', background: mode === 'team' ? '#e7f3ff' : 'white', borderRadius: '8px', border: '1px solid #2196f3'}}>\n <input \n type=\"radio\" \n name=\"mode\" \n value=\"team\" \n checked={mode === 'team'} \n onChange={e => setMode(e.target.value)} \n />\n {' '}🛡️ <strong>组队团战</strong>(人类 + N 只龙虾一起出战)\n </label>\n <label style={{display: 'block', marginBottom: '12px', cursor: 'pointer', padding: '10px', background: mode === 'agent_only' ? '#e7f3ff' : 'white', borderRadius: '8px', border: '1px solid #2196f3'}}>\n <input \n type=\"radio\" \n name=\"mode\" \n value=\"agent_only\" \n checked={mode === 'agent_only'} \n onChange={e => setMode(e.target.value)} \n />\n {' '}⚔️ <strong>独当一面</strong>(龙虾单独出征,人类不上场)\n </label>\n </div>\n \n {/* 龙虾选择(组队或独当一面) */}\n {mode !== 'solo' && (\n <div style={{margin: '15px 0', padding: '15px', background: '#f9f9f9', borderRadius: '8px'}}>\n <label style={{display: 'block', marginBottom: '10px', fontWeight: '600'}}>🦐 选择龙虾队友:</label>\n {agents.length === 0 ? (\n <p style={{color: '#999', fontSize: '14px'}}>未找到可用龙虾</p>\n ) : (\n agents.map(a => (\n <label key={a.agent_id} style={{display: 'flex', alignItems: 'center', marginBottom: '8px', cursor: 'pointer'}}>\n <input \n type=\"checkbox\" \n checked={selectedAgents.includes(a.agent_id)}\n onChange={() => toggleAgent(a.agent_id)}\n style={{marginRight: '10px'}}\n />\n <span style={{fontSize: '16px', marginRight: '8px'}}>{a.agent_emoji || '🤖'}</span>\n <span>{a.agent_id}</span>\n <span style={{color: '#999', fontSize: '12px', marginLeft: '8px'}}>({a.instance_name})</span>\n </label>\n ))\n )}\n {selectedAgents.length > 0 && (\n <p style={{marginTop: '10px', color: '#2196f3', fontWeight: '600'}}>\n 已选 {selectedAgents.length} 只龙虾队友 🦸\n </p>\n )}\n </div>\n )}\n \n <button type=\"submit\" style={styles.btn}>🚀 登录出征</button>\n </form>\n </div>\n </div>\n );\n}\n\n// ============ 会议列表 ============\nfunction MeetingList() {\n const [meetings, setMeetings] = useState([]);\n const [topic, setTopic] = useState('');\n const [autoAddAgents, setAutoAddAgents] = useState(true);\n const navigate = useNavigate();\n const token = localStorage.getItem('token');\n\n useEffect(() => {\n if (!token) { navigate('/login'); return; }\n fetchMeetings();\n }, []);\n\n const fetchMeetings = async () => {\n try {\n const res = await axios.get(`${API_BASE}/meetings/`);\n setMeetings(res.data);\n } catch (error) { console.error(error); }\n };\n\n const createMeeting = async (e) => {\n e.preventDefault();\n try {\n // 获取当前登录的龙虾\n const sessions = JSON.parse(localStorage.getItem('sessions') || '[]');\n const agentIds = sessions.filter(s => s.session_type === 'agent').map(s => s.agent_id);\n \n const res = await axios.post(`${API_BASE}/meetings/`, { \n topic,\n auto_add_virtual_agents: !autoAddAgents ? false : agentIds.length === 0, // 如果没有龙虾才添加虚拟的\n host_agent_id: agentIds.length > 0 ? agentIds[0] : null\n });\n navigate(`/meeting/${res.data.id}`);\n } catch (error) {\n alert('创建失败:' + (error.response?.data?.detail || error.message));\n }\n };\n\n const logout = () => { localStorage.removeItem('token'); navigate('/login'); };\n\n return (\n <div style={styles.container}>\n <div style={styles.header}>\n <h1>📋 我的会议室</h1>\n <button onClick={logout} style={styles.smallBtn}>退出</button>\n </div>\n <div style={styles.card}>\n <h2>创建会议</h2>\n <form onSubmit={createMeeting} style={styles.form}>\n <input type=\"text\" placeholder=\"会议主题\" value={topic} onChange={e => setTopic(e.target.value)} style={styles.input} required />\n <label style={{display: 'flex', alignItems: 'center', gap: '5px', whiteSpace: 'nowrap'}}>\n <input \n type=\"checkbox\" \n checked={autoAddAgents} \n onChange={e => setAutoAddAgents(e.target.checked)}\n />\n 添加虚拟坐席\n </label>\n <button type=\"submit\" style={styles.btn}>创建</button>\n </form>\n <p style={{fontSize: '12px', color: '#666', marginTop: '10px'}}>\n 💡 勾选\"添加虚拟坐席\"会自动创建 2 个虚拟龙虾参会者,方便测试 @ 功能\n </p>\n </div>\n <div style={styles.list}>\n {meetings.map(m => (\n <div key={m.id} style={styles.item}>\n <div>\n <h3>{m.topic}</h3>\n <p>状态:{m.status} | 邀请码:{m.invite_code}</p>\n </div>\n <button onClick={() => navigate(`/meeting/${m.id}`)} style={styles.smallBtn}>进入</button>\n </div>\n ))}\n </div>\n </div>\n );\n}\n\n// ============ 会议室 ============\nfunction MeetingRoom() {\n const { id } = useParams();\n const [messages, setMessages] = useState([]);\n const [content, setContent] = useState('');\n const [participants, setParticipants] = useState([]);\n const [meeting, setMeeting] = useState(null);\n const [hoveredSeat, setHoveredSeat] = useState(null);\n const token = localStorage.getItem('token');\n\n useEffect(() => {\n if (!token) return;\n fetchMeeting();\n fetchParticipants();\n fetchMessages();\n const interval = setInterval(fetchMessages, 1000);\n return () => clearInterval(interval);\n }, [id]);\n\n const fetchMeeting = async () => {\n try {\n const res = await axios.get(`${API_BASE}/meetings/${id}/`);\n setMeeting(res.data);\n } catch (error) { console.error(error); }\n };\n\n const fetchParticipants = async () => {\n try {\n const res = await axios.get(`${API_BASE}/meetings/${id}/participants/`);\n setParticipants(res.data);\n } catch (error) { console.error(error); }\n };\n\n const fetchMessages = async () => {\n try {\n const res = await axios.get(`${API_BASE}/meetings/${id}/messages/?last_id=0`);\n setMessages(res.data.messages || []);\n } catch (error) { console.error(error); }\n };\n\n const sendMessage = async (e) => {\n e.preventDefault();\n if (!content.trim()) return;\n try {\n await axios.post(`${API_BASE}/meetings/${id}/send_message/`, { content });\n setContent('');\n fetchMessages();\n } catch (error) {\n alert('发送失败:' + (error.response?.data?.detail || error.message));\n }\n };\n\n const mentionAgent = async (targetAgentId, agentName) => {\n const target = targetAgentId || prompt('@哪个 Agent输入 agent_id:');\n if (!target || !content.trim()) return;\n const name = agentName || target;\n try {\n await axios.post(`${API_BASE}/meetings/${id}/mention_agent/`, {\n target_agent_id: target, content,\n sender_name: localStorage.getItem('user') ? JSON.parse(localStorage.getItem('user')).username : 'User'\n });\n setContent('');\n fetchMessages();\n alert(`✅ 已 @${name}`);\n } catch (error) {\n alert('发送失败:' + (error.response?.data?.error || error.message));\n }\n };\n\n const startMeeting = async () => {\n try {\n await axios.post(`${API_BASE}/meetings/${id}/start/`);\n fetchMeeting();\n alert('✅ 会议已开始');\n } catch (error) {\n alert('开始失败:' + (error.response?.data?.error || error.message));\n }\n };\n\n const endMeeting = async () => {\n if (!confirm('确定结束会议?')) return;\n try {\n await axios.post(`${API_BASE}/meetings/${id}/end/`);\n fetchMeeting();\n alert('✅ 会议已结束');\n } catch (error) {\n alert('结束失败:' + (error.response?.data?.error || error.message));\n }\n };\n\n const generateMinutes = async () => {\n try {\n const res = await axios.get(`${API_BASE}/meetings/${id}/minutes/?output=markdown`);\n const blob = new Blob([res.data.markdown], { type: 'text/markdown' });\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = `meeting-${id.slice(0, 8)}.md`;\n a.click();\n URL.revokeObjectURL(url);\n alert('✅ 纪要已导出');\n } catch (error) {\n alert('导出失败:' + error.message);\n }\n };\n\n return (\n <div style={styles.container}>\n <div style={styles.header}>\n <Link to=\"/meetings\" style={styles.link}>← 返回</Link>\n <h1>{meeting?.topic || '会议室'}</h1>\n {meeting && <span style={styles.badge}>{meeting.status}</span>}\n </div>\n\n {meeting && (\n <div style={styles.infoCard}>\n <p><strong>ID:</strong> {meeting.id}</p>\n <p><strong>邀请码:</strong> {meeting.invite_code}</p>\n <div style={styles.btnGroup}>\n <button onClick={startMeeting} style={styles.btnGreen}>▶️ 开始</button>\n <button onClick={endMeeting} style={styles.btnRed}>⏹️ 结束</button>\n <button onClick={generateMinutes} style={styles.btnBlue}>📋 纪要</button>\n </div>\n </div>\n )}\n\n {/* 座位图 */}\n <div style={styles.card}>\n <h2>🪑 座位图 <span style={styles.badge}>{participants.length}</span></h2>\n <div style={styles.seats}>\n {participants.map(p => (\n <div \n key={p.id} \n style={{...styles.seat, ...(hoveredSeat === p.id ? styles.seatHover : {})}} \n onClick={() => {\n if (p.agent_id) {\n setContent(`@${p.nickname} `);\n document.querySelector('input[placeholder=\"输入消息...\"]')?.focus();\n }\n }}\n onMouseEnter={() => setHoveredSeat(p.id)}\n onMouseLeave={() => setHoveredSeat(null)}\n title={p.agent_id ? '点击 @ 此人' : ''}\n >\n <div style={styles.seatEmoji}>{p.agent_emoji || '👤'}</div>\n <div style={styles.seatName}>{p.nickname}</div>\n {p.is_host && <div style={styles.hostBadge}>👑</div>}\n </div>\n ))}\n </div>\n </div>\n\n {/* 聊天 */}\n <div style={styles.card}>\n <h2>💬 聊天 <span style={styles.badge}>{messages.length}</span></h2>\n <div style={styles.messages}>\n {messages.map(msg => (\n <div key={msg.id} style={styles.msg}>\n <div style={styles.msgHeader}>\n <strong>{msg.sender_emoji} {msg.sender_name}</strong>\n <span style={styles.msgTime}>{new Date(msg.created_at).toLocaleTimeString()}</span>\n </div>\n <p style={styles.msgContent}>{msg.content}</p>\n {msg.in_reply_to && <div style={styles.replyTag}>↩️ 回复 #{msg.in_reply_to}</div>}\n </div>\n ))}\n </div>\n <form onSubmit={sendMessage} style={styles.form}>\n <input type=\"text\" placeholder=\"输入消息...\" value={content} onChange={e => setContent(e.target.value)} style={styles.input} />\n <button type=\"submit\" style={styles.btn}>发送</button>\n <button type=\"button\" onClick={mentionAgent} style={styles.btnPink}>📍 @Agent</button>\n </form>\n </div>\n </div>\n );\n}\n\n// ============ App ============\nfunction App() {\n return (\n <Router>\n <Routes>\n <Route path=\"/login\" element={<LoginPage />} />\n <Route path=\"/meetings\" element={<MeetingList />} />\n <Route path=\"/meeting/:id\" element={<MeetingRoom />} />\n <Route path=\"/\" element={<LoginPage />} />\n </Routes>\n </Router>\n );\n}\n\n// ============ 样式 ============\nconst styles = {\n center: { display: 'flex', justifyContent: 'center', alignItems: 'center', minHeight: '100vh', background: 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)' },\n container: { maxWidth: '900px', margin: '0 auto', padding: '20px', fontFamily: '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif' },\n header: { display: 'flex', alignItems: 'center', gap: '15px', marginBottom: '20px' },\n card: { background: 'white', borderRadius: '12px', padding: '20px', marginBottom: '20px', boxShadow: '0 4px 6px rgba(0,0,0,0.1)' },\n infoCard: { background: '#e7f3ff', border: '1px solid #2196f3', borderRadius: '12px', padding: '15px', marginBottom: '20px' },\n title: { margin: '0 0 20px', color: '#1a365d', textAlign: 'center' },\n form: { display: 'flex', gap: '10px' },\n input: { flex: 1, padding: '12px', border: '2px solid #e2e8f0', borderRadius: '8px', fontSize: '14px' },\n btn: { padding: '12px 20px', background: 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)', color: 'white', border: 'none', borderRadius: '8px', cursor: 'pointer', fontWeight: '600' },\n btnGreen: { padding: '8px 16px', background: 'linear-gradient(135deg, #11998e 0%, #38ef7d 100%)', color: 'white', border: 'none', borderRadius: '6px', cursor: 'pointer', marginRight: '8px' },\n btnRed: { padding: '8px 16px', background: 'linear-gradient(135deg, #eb3349 0%, #f45c43 100%)', color: 'white', border: 'none', borderRadius: '6px', cursor: 'pointer', marginRight: '8px' },\n btnBlue: { padding: '8px 16px', background: 'linear-gradient(135deg, #4facfe 0%, #00f2fe 100%)', color: 'white', border: 'none', borderRadius: '6px', cursor: 'pointer' },\n btnPink: { padding: '8px 16px', background: 'linear-gradient(135deg, #f093fb 0%, #f5576c 100%)', color: 'white', border: 'none', borderRadius: '6px', cursor: 'pointer' },\n smallBtn: { padding: '8px 16px', background: '#edf2f7', border: 'none', borderRadius: '6px', cursor: 'pointer' },\n list: { display: 'flex', flexDirection: 'column', gap: '15px' },\n item: { background: 'white', borderRadius: '12px', padding: '20px', display: 'flex', justifyContent: 'space-between', alignItems: 'center', boxShadow: '0 4px 6px rgba(0,0,0,0.1)' },\n link: { color: '#4299e1', textDecoration: 'none', fontSize: '16px' },\n badge: { background: '#667eea', color: 'white', padding: '4px 10px', borderRadius: '20px', fontSize: '12px', fontWeight: '600' },\n btnGroup: { display: 'flex', marginTop: '10px' },\n seats: { display: 'flex', flexWrap: 'wrap', gap: '15px', justifyContent: 'center' },\n seat: { background: 'linear-gradient(135deg, #667eea 0%, #764ba2 100%)', color: 'white', padding: '15px', borderRadius: '50%', width: '90px', height: '90px', display: 'flex', flexDirection: 'column', alignItems: 'center', justifyContent: 'center', textAlign: 'center', cursor: 'pointer', transition: 'transform 0.2s', ':hover': { transform: 'scale(1.1)' } },\n seatHover: { transform: 'scale(1.05)' },\n seatEmoji: { fontSize: '28px', marginBottom: '5px' },\n seatName: { fontSize: '12px', fontWeight: '600' },\n hostBadge: { fontSize: '10px', opacity: '0.8' },\n messages: { maxHeight: '400px', overflowY: 'auto', marginBottom: '15px' },\n msg: { padding: '12px', background: '#f7fafc', borderRadius: '8px', marginBottom: '10px' },\n msgHeader: { display: 'flex', justifyContent: 'space-between', marginBottom: '5px' },\n msgContent: { margin: '5px 0', color: '#4a5568' },\n msgTime: { fontSize: '12px', color: '#a0aec0' },\n replyTag: { fontSize: '11px', color: '#a0aec0', marginTop: '5px' }\n};\n\nexport default App;\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}