修复远程访问:监听所有网络接口 (0.0.0.0)
- 修改 app.listen() 绑定到 0.0.0.0 而不是默认的 localhost - 自动检测并显示本机 IP 地址 - 更新启动脚本使用正确的数据库端口 (5433) - 现在可以通过局域网访问 http://192.168.0.250:3000
This commit is contained in:
+19
-2
@@ -3,6 +3,7 @@ const { Pool } = require('pg');
|
|||||||
const cors = require('cors');
|
const cors = require('cors');
|
||||||
const bodyParser = require('body-parser');
|
const bodyParser = require('body-parser');
|
||||||
const { v4: uuidv4 } = require('uuid');
|
const { v4: uuidv4 } = require('uuid');
|
||||||
|
const os = require('os');
|
||||||
|
|
||||||
const app = express();
|
const app = express();
|
||||||
const PORT = process.env.PORT || 3000;
|
const PORT = process.env.PORT || 3000;
|
||||||
@@ -368,9 +369,25 @@ app.get('/health', async (req, res) => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// 获取本机 IP 地址
|
||||||
|
function getLocalIP() {
|
||||||
|
const interfaces = os.networkInterfaces();
|
||||||
|
for (const name of Object.keys(interfaces)) {
|
||||||
|
for (const iface of interfaces[name]) {
|
||||||
|
if (iface.family === 'IPv4' && !iface.internal) {
|
||||||
|
return iface.address;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 'localhost';
|
||||||
|
}
|
||||||
|
|
||||||
// 启动服务器
|
// 启动服务器
|
||||||
app.listen(PORT, () => {
|
app.listen(PORT, '0.0.0.0', () => {
|
||||||
console.log(`🚀 多智能体任务服务已启动: http://localhost:${PORT}`);
|
const localIP = getLocalIP();
|
||||||
|
console.log(`🚀 多智能体任务服务已启动`);
|
||||||
|
console.log(` 本地访问: http://localhost:${PORT}`);
|
||||||
|
console.log(` 远程访问: http://${localIP}:${PORT}`);
|
||||||
});
|
});
|
||||||
|
|
||||||
// 优雅关闭
|
// 优雅关闭
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ echo "启动应用服务..."
|
|||||||
pkill -f "node.*server-postgres.js" || true
|
pkill -f "node.*server-postgres.js" || true
|
||||||
cd "$(dirname "$0")"
|
cd "$(dirname "$0")"
|
||||||
DB_HOST=localhost \
|
DB_HOST=localhost \
|
||||||
DB_PORT=5432 \
|
DB_PORT=5433 \
|
||||||
DB_PASSWORD=postgres \
|
DB_PASSWORD=postgres \
|
||||||
nohup node server-postgres.js > server.log 2>&1 &
|
nohup node server-postgres.js > server.log 2>&1 &
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,97 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
API_BASE="http://localhost:3000/api"
|
||||||
|
|
||||||
|
echo "=========================================="
|
||||||
|
echo " 多智能体任务管理系统 - 功能演示"
|
||||||
|
echo "=========================================="
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# 1. 注册智能体
|
||||||
|
echo "📝 步骤 1: 注册智能体..."
|
||||||
|
AGENT_RESPONSE=$(curl -s -X POST $API_BASE/agents/register \
|
||||||
|
-H "Content-Type: application/json" \
|
||||||
|
-d '{
|
||||||
|
"name": "演示智能体",
|
||||||
|
"type": "general",
|
||||||
|
"capabilities": ["数据分析", "任务处理"]
|
||||||
|
}')
|
||||||
|
|
||||||
|
AGENT_ID=$(echo $AGENT_RESPONSE | grep -o '"id":"[^"]*"' | cut -d'"' -f4)
|
||||||
|
echo "✅ 智能体已注册"
|
||||||
|
echo " ID: $AGENT_ID"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# 2. 查看所有智能体
|
||||||
|
echo "📋 步骤 2: 查看所有智能体..."
|
||||||
|
curl -s $API_BASE/agents | jq '.[0] | {id, name, type, status}'
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# 3. 创建任务
|
||||||
|
echo "📌 步骤 3: 创建任务..."
|
||||||
|
TASK_RESPONSE=$(curl -s -X POST $API_BASE/tasks \
|
||||||
|
-H "Content-Type: application/json" \
|
||||||
|
-d '{
|
||||||
|
"title": "测试任务:数据分析",
|
||||||
|
"description": "分析用户行为数据并生成报告",
|
||||||
|
"priority": "high",
|
||||||
|
"created_by": "human"
|
||||||
|
}')
|
||||||
|
|
||||||
|
TASK_ID=$(echo $TASK_RESPONSE | grep -o '"id":"[^"]*"' | cut -d'"' -f4)
|
||||||
|
echo "✅ 任务已创建"
|
||||||
|
echo " ID: $TASK_ID"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# 4. 查看待处理任务
|
||||||
|
echo "📋 步骤 4: 查看待处理任务..."
|
||||||
|
curl -s "$API_BASE/tasks?status=pending" | jq '.[0] | {id, title, priority, status}'
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# 5. 智能体领取任务
|
||||||
|
echo "🤖 步骤 5: 智能体领取任务..."
|
||||||
|
curl -s -X POST $API_BASE/tasks/$TASK_ID/claim \
|
||||||
|
-H "Content-Type: application/json" \
|
||||||
|
-d "{\"agent_id\": \"$AGENT_ID\"}" | jq '.'
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# 6. 发送心跳(标记为忙碌)
|
||||||
|
echo "💓 步骤 6: 发送心跳(忙碌状态)..."
|
||||||
|
curl -s -X POST $API_BASE/agents/$AGENT_ID/heartbeat \
|
||||||
|
-H "Content-Type: application/json" \
|
||||||
|
-d '{"status": "busy"}' | jq '.'
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# 7. 模拟任务执行
|
||||||
|
echo "⏳ 步骤 7: 模拟任务执行(3秒)..."
|
||||||
|
sleep 3
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# 8. 完成任务
|
||||||
|
echo "✅ 步骤 8: 标记任务完成..."
|
||||||
|
curl -s -X PUT $API_BASE/tasks/$TASK_ID \
|
||||||
|
-H "Content-Type: application/json" \
|
||||||
|
-d '{
|
||||||
|
"status": "completed",
|
||||||
|
"result": "数据分析完成,发现3个关键趋势:1) 用户活跃度提升20% 2) 转化率增长15% 3) 留存率稳定在85%"
|
||||||
|
}' | jq '.'
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# 9. 查看任务详情
|
||||||
|
echo "📊 步骤 9: 查看完成的任务详情..."
|
||||||
|
curl -s $API_BASE/tasks/$TASK_ID | jq '{id, title, status, result, completed_at}'
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# 10. 查看统计信息
|
||||||
|
echo "📈 步骤 10: 查看系统统计..."
|
||||||
|
curl -s $API_BASE/stats | jq '.'
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
echo "=========================================="
|
||||||
|
echo " 演示完成!"
|
||||||
|
echo "=========================================="
|
||||||
|
echo ""
|
||||||
|
echo "💡 提示:"
|
||||||
|
echo " - Web 界面: http://localhost:3000"
|
||||||
|
echo " - 查看所有智能体: curl $API_BASE/agents | jq"
|
||||||
|
echo " - 查看所有任务: curl $API_BASE/tasks | jq"
|
||||||
Reference in New Issue
Block a user