Files
JoyD/Claw/Server/gateway/src/log.txt
zqm cdf64fa31f feat(XCamera): 实现异步抓图功能并优化图像处理
fix(nginx): 调整企业微信回调代理路径

feat(gateway): 添加企业微信消息处理功能

docs: 更新项目规划文档和企业微信配置详情

refactor(XCamera): 重构LED检测和图像处理逻辑

test: 添加ONVIF抓图测试功能
2026-03-31 11:04:43 +08:00

140 lines
12 KiB
Plaintext
Raw 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.

C:\Disk\Gateway>gateway.exe
🚀 网关服务启动中...
📍 绑定地址: 127.0.0.1:8000 (通过nginx代理)
📝 日志级别: info
🔧 版本: 0.1.0
🎯 环境: development
🌐 外部访问: https://pactgo.cn (nginx代理)
[03-23 13:08:18.414] 🚀 创建WebSocket连接池
[03-23 13:08:18.415] ⚙️ 创建默认通信配置
[03-23 13:08:18.415] 🚀 初始化任务处理服务
[03-23 13:08:18.415] 📋 WebSocket连接池已创建
[03-23 13:08:18.415] ⚙️ 通信配置已加载: "ws://localhost:8000/api/v1/ws/control"
[03-23 13:08:18.415] 🏭 创建生产环境通信配置 (心跳: 30s, 超时: 60s)
[03-23 13:08:18.415] 🚀 创建WebSocket客户端配置URL: ws://pactgo.cn/api/v1/ws/control
[2026-03-23T05:08:18Z INFO actix_server::builder] starting 2 workers
✅ 网关服务已启动在 127.0.0.1:8000 (通过nginx代理)
🔍 可用接口:
🎯 企业微信回调 - 直接匹配企业微信配置
POST /wecom - 企业微信回调(必须直接匹配企业微信配置)
📋 API接口通过 /api/v1 前缀):
GET /api/v1/health - 健康检查
GET /api/v1/system - 系统信息
POST /api/v1/task - 处理任务
GET /api/v1/task/<task_id> - 查询任务状态
GET /api/v1/tasks - 查询任务列表
POST /api/v1/wechat/miniprogram/callback - 微信小程序回调
GET /api/v1/ws/control - WebSocket控制通道
GET /api/v1/ws/task - WebSocket任务通道
POST /api/v1/test/websocket/send - WebSocket发送测试
POST /api/v1/test/websocket/send_and_wait - WebSocket发送并等待测试
GET /api/v1/test/websocket/get_manager - WebSocket管理器测试
GET /api/v1/test/websocket/connection_send - WebSocket连接发送测试
POST /api/v1/test/websocket/direct_send - WebSocket直接发送测试
POST /api/v1/test/websocket/direct_send_and_wait - WebSocket直接发送并等待测试
🌐 外部访问: https://pactgo.cn (nginx代理)
🔗 WebSocket连接: wss://pactgo.cn/api/v1/ws/control
[2026-03-23T05:08:18Z INFO actix_server::server] Actix runtime found; starting in Actix runtime
[2026-03-23T05:08:18Z INFO actix_server::server] starting service: "actix-web-service-127.0.0.1:8000", workers: 2, listening on: 127.0.0.1:8000
🔄 启动WebSocket客户端连接测试...
[03-23 13:08:18.425] 🔗 正在连接到网关WebSocket: ws://pactgo.cn/api/v1/ws/control
[03-23 13:08:18.425] 🔍 验证通信配置...
[03-23 13:08:18.425] ✅ 通信配置验证通过 (URL: ws://pactgo.cn/api/v1/ws/control, 最大连接数: 100)
[03-23 13:08:18.425] ✅ WebSocket连接成功 (模拟)
✅ WebSocket客户端连接成功
[03-23 13:08:18.426] 🔗 WebSocket客户端连接状态: 已连接
🔗 WebSocket客户端已连接
[03-23 13:08:18.426] 📤 WebSocket客户端发送任务: TextProcessing (心跳: 30s, 超时: 60s)
✅ 测试任务发送成功: "任务处理成功WebSocket模拟"
[03-23 13:08:18.428] 📋 获取所有连接信息: 0个连接
[03-23 13:08:18.556] 🔗 收到WebSocket连接请求:
[03-23 13:08:18.556] HttpRequest GET HTTP/1.1:/api/v1/ws/control
[03-23 13:08:18.557] headers:
[03-23 13:08:18.557] "upgrade": "websocket"
[03-23 13:08:18.557] "x-api-key": "claw_secret_key"
[03-23 13:08:18.557] "sec-websocket-version": "13"
[03-23 13:08:18.558] "x-real-ip": "222.211.215.207"
[03-23 13:08:18.558] "connection": "upgrade"
[03-23 13:08:18.559] "host": "pactgo.cn"
[03-23 13:08:18.560] "x-forwarded-for": "222.211.215.207"
[03-23 13:08:18.560] "x-forwarded-proto": "https"
[03-23 13:08:18.560] "sec-websocket-key": "xV8B16meVWRnAZI8FHb1ig=="
[03-23 13:08:18.560] ✅ WebSocket连接认证通过
[03-23 13:08:18.560] 🎯 检测到SmartClaw服务连接 (控制通道)
[03-23 13:08:18.560] 🔗 开始WebSocket握手...
[03-23 13:08:18.560] ✅ WebSocket握手成功
[03-23 13:08:18.561] 🔌 添加新连接: 26dd6cb5-c305-421d-a8a3-753d0455b1c6
[03-23 13:08:18.561] 🔌 添加WebSocket会话: 26dd6cb5-c305-421d-a8a3-753d0455b1c6
[03-23 13:08:18.561] 🔌 创建新的WebSocket连接: id=26dd6cb5-c305-421d-a8a3-753d0455b1c6, type=SmartClaw
[03-23 13:08:18.561] 🔄 启动WebSocket消息处理循环...
[03-23 13:08:18.561] ✅ WebSocket连接已建立
[03-23 13:08:18.561] ✅ WebSocket消息处理循环已启动
[03-23 13:08:18.570] 📨 收到消息: {"service":"smartclaw","timestamp":1774242498,"type":"connect","version":"0.1.0"}
[03-23 13:08:18.570] 🔗 收到连接消息
[03-23 13:08:18.594] 📨 收到消息: {"service":"smartclaw","timestamp":1774242498,"type":"heartbeat"}
[03-23 13:08:18.594] 💓 收到心跳消息
[03-23 13:08:22.292] 📨 收到消息: {"service":"smartclaw","timestamp":1774242502,"type":"heartbeat"}
[03-23 13:08:22.293] 💓 收到心跳消息
[03-23 13:08:23.435] 🔌 断开WebSocket连接: ws://pactgo.cn/api/v1/ws/control
🔌 WebSocket客户端已断开
[03-23 13:08:37.412] 📱 收到企业微信回调
[03-23 13:08:37.412] 请求方法: POST
[03-23 13:08:37.414] 查询参数: msg_signature=d3c4aaed9b7bfdb3b7ac17119762e639bcaa3e2a&timestamp=1774242517&nonce=1774420742
[03-23 13:08:37.414] 📥 开始消息推送处理流程
[03-23 13:08:37.415] 消息内容: <xml><ToUserName><![CDATA[wwa7bb7aec981103b4]]></ToUserName><Encrypt><![CDATA[sTK12sXLTGbDIHop8a/0+8lehw6CBjCdfXBdR1DwpyFWmt8fttKjChwIzocwgWXaPDPaB68Cs7+MHVg6VINthu4bLHS/lNgKGjYYsQHe5vrdEQ2OGUBOWIQqNNX3bb0e7Ls/zBecAw7blSQNKi4akxGF1anvMVuVfv8ZspdkkongM3jXFiQ0HJJJDv68ejWRpW9iY3XR5F3FsQgYB0UbJguKtO+JuBdxlLQ30PdI0VrNtWL6XbMZN1xwXWTqxwy/A7aXFv/7nc2w/HnPJZW21/2AX0K/1MIdQpOamtZ3LaV5/tu/bSqUaSEF8n2PHN3tpmynYQKtcq0+KZWEnUXmxqvTWotLkV8f6MPlkPrQ5cEmXZ+EcV8jS4v2y9gZvhQ7IUYJ3H78eoqKm0uGlKCnRM9Ac22F961lRKuT9Y+ggsCtlKwU3eDuKLNJ2rdAQ0oO4OxcvPVguuy9c5m6CepL2g==]]></Encrypt><AgentID><![CDATA[1000002]]></AgentID></xml>
[03-23 13:08:37.415] 🔐 开始验证企业微信签名
[03-23 13:08:37.415] 🔐 验证企业微信签名:
[03-23 13:08:37.415] msg_signature: d3c4aaed9b7bfdb3b7ac17119762e639bcaa3e2a
[03-23 13:08:37.415] timestamp: 1774242517
[03-23 13:08:37.415] nonce: 1774420742
[03-23 13:08:37.415] data: sTK12sXLTGbDIHop8a/0+8lehw6CBjCdfXBdR1DwpyFWmt8fttKjChwIzocwgWXaPDPaB68Cs7+MHVg6VINthu4bLHS/lNgKGjYYsQHe5vrdEQ2OGUBOWIQqNNX3bb0e7Ls/zBecAw7blSQNKi4akxGF1anvMVuVfv8ZspdkkongM3jXFiQ0HJJJDv68ejWRpW9iY3XR5F3FsQgYB0UbJguKtO+JuBdxlLQ30PdI0VrNtWL6XbMZN1xwXWTqxwy/A7aXFv/7nc2w/HnPJZW21/2AX0K/1MIdQpOamtZ3LaV5/tu/bSqUaSEF8n2PHN3tpmynYQKtcq0+KZWEnUXmxqvTWotLkV8f6MPlkPrQ5cEmXZ+EcV8jS4v2y9gZvhQ7IUYJ3H78eoqKm0uGlKCnRM9Ac22F961lRKuT9Y+ggsCtlKwU3eDuKLNJ2rdAQ0oO4OxcvPVguuy9c5m6CepL2g==
[03-23 13:08:37.416] token: mytoken123456
[03-23 13:08:37.416] 排序后拼接字符串: 17742425171774420742mytoken123456sTK12sXLTGbDIHop8a/0+8lehw6CBjCdfXBdR1DwpyFWmt8fttKjChwIzocwgWXaPDPaB68Cs7+MHVg6VINthu4bLHS/lNgKGjYYsQHe5vrdEQ2OGUBOWIQqNNX3bb0e7Ls/zBecAw7blSQNKi4akxGF1anvMVuVfv8ZspdkkongM3jXFiQ0HJJJDv68ejWRpW9iY3XR5F3FsQgYB0UbJguKtO+JuBdxlLQ30PdI0VrNtWL6XbMZN1xwXWTqxwy/A7aXFv/7nc2w/HnPJZW21/2AX0K/1MIdQpOamtZ3LaV5/tu/bSqUaSEF8n2PHN3tpmynYQKtcq0+KZWEnUXmxqvTWotLkV8f6MPlkPrQ5cEmXZ+EcV8jS4v2y9gZvhQ7IUYJ3H78eoqKm0uGlKCnRM9Ac22F961lRKuT9Y+ggsCtlKwU3eDuKLNJ2rdAQ0oO4OxcvPVguuy9c5m6CepL2g==
[03-23 13:08:37.416] 计算签名: d3c4aaed9b7bfdb3b7ac17119762e639bcaa3e2a
[03-23 13:08:37.416] 验证结果: ✅ 通过
[03-23 13:08:37.416] ✅ 签名验证通过,开始处理消息
[03-23 13:08:37.416] 📄 开始解析企业微信XML消息
[03-23 13:08:37.417] 🔒 发现加密消息,开始解密
[03-23 13:08:37.417] 提取到加密内容
[03-23 13:08:37.417] ✅ 消息解密成功
[03-23 13:08:37.417] 解密后内容: <xml><ToUserName><![CDATA[wwa7bb7aec981103b4]]></ToUserName><FromUserName><![CDATA[ZengQingMing]]></FromUserName><CreateTime>1774242517</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[好 像通了]]></Content><MsgId>7620313586460205140</MsgId><AgentID>1000002</AgentID></xml>
[03-23 13:08:37.417] 发送者: ZengQingMing
[03-23 13:08:37.417] 消息内容: 好像通了
[03-23 13:08:37.417] 消息类型: text
[03-23 13:08:37.418] 📋 获取所有连接信息: 1个连接
[03-23 13:08:37.418] - 连接: 26dd6cb5-c305-421d-a8a3-753d0455b1c6 (连接时长: 18.8562652s)
[03-23 13:08:37.418] 📤 准备发送回复消息给用户: ZengQingMing
[03-23 13:08:37.418] ✅ 已开始发送回复消息: 思考中...
[03-23 13:08:37.418] 🔄 开始转发消息到SmartClaw
[03-23 13:08:37.418] 📤 发送消息到SmartClaw: Object {"data": Object {"content": String("好像通了"), "event": Null, "from_user_name": String("ZengQingMing"), "msg_signature": String("d3c4aaed9b7bfdb3b7ac17119762e639bcaa3e2a"), "msg_type": String("text"), "nonce": String("1774420742"), "raw_body": String("<xml><ToUserName><![CDATA[wwa7bb7aec981103b4]]></ToUserName><Encrypt><![CDATA[sTK12sXLTGbDIHop8a/0+8lehw6CBjCdfXBdR1DwpyFWmt8fttKjChwIzocwgWXaPDPaB68Cs7+MHVg6VINthu4bLHS/lNgKGjYYsQHe5vrdEQ2OGUBOWIQqNNX3bb0e7Ls/zBecAw7blSQNKi4akxGF1anvMVuVfv8ZspdkkongM3jXFiQ0HJJJDv68ejWRpW9iY3XR5F3FsQgYB0UbJguKtO+JuBdxlLQ30PdI0VrNtWL6XbMZN1xwXWTqxwy/A7aXFv/7nc2w/HnPJZW21/2AX0K/1MIdQpOamtZ3LaV5/tu/bSqUaSEF8n2PHN3tpmynYQKtcq0+KZWEnUXmxqvTWotLkV8f6MPlkPrQ5cEmXZ+EcV8jS4v2y9gZvhQ7IUYJ3H78eoqKm0uGlKCnRM9Ac22F961lRKuT9Y+ggsCtlKwU3eDuKLNJ2rdAQ0oO4OxcvPVguuy9c5m6CepL2g==]]></Encrypt><AgentID><![CDATA[1000002]]></AgentID></xml>"), "timestamp": String("1774242517")}, "type": String("wechat_message")}
[03-23 13:08:37.418] ✅ 企业微信消息处理完成,返回 success
[03-23 13:08:37.419] 📤 开始发送企业微信消息
[03-23 13:08:37.420] 📋 获取所有连接信息: 1个连接
[03-23 13:08:37.420] - 连接: 26dd6cb5-c305-421d-a8a3-753d0455b1c6 (连接时长: 18.858536s)
[03-23 13:08:37.420] 📢 WebSocket连接池广播消息到 1 个SmartClaw连接
[03-23 13:08:37.420] ✅ 发送消息到SmartClaw连接: 26dd6cb5-c305-421d-a8a3-753d0455b1c6
[03-23 13:08:37.421] ✅ 消息已成功转发到SmartClaw
[03-23 13:08:37.432] 📨 收到消息: {"data":{"content":"我收到了你的消息,正在处理...","from_user_name":"ZengQingMing","msg_type":"text","timestamp":1774242517},"type":"wechat_message_response"}
[03-23 13:08:37.438] 📱 收到SmartClaw的微信消息回复
[03-23 13:08:37.438] 回复发送者: ZengQingMing
[03-23 13:08:37.438] 回复内容: 我收到了你的消息,正在处理...
[03-23 13:08:37.438] 📤 开始发送企业微信消息
[03-23 13:08:37.756] 获取到访问令牌: mUca6bQOJQ3fPnLdoZU9__QOLXUnBU9amY9yl-y1QJCb3oumKzRhKS_poGcXkOzaA58q221dGtVGISkQANsamvXYpM-q5bCQs-ok_WpzqZwBCiBuiVkZpzyQoBxPE_OKUCLvMKQW0Rx381LOBMK8G34ngBvUodnWo9hlvosPHe48qLpunLdQJjXtekpJe0HHOaAAoWfWWJLY1G60IMPIvA
[03-23 13:08:37.811] 获取到访问令牌: mUca6bQOJQ3fPnLdoZU9__QOLXUnBU9amY9yl-y1QJCb3oumKzRhKS_poGcXkOzaA58q221dGtVGISkQANsamvXYpM-q5bCQs-ok_WpzqZwBCiBuiVkZpzyQoBxPE_OKUCLvMKQW0Rx381LOBMK8G34ngBvUodnWo9hlvosPHe48qLpunLdQJjXtekpJe0HHOaAAoWfWWJLY1G60IMPIvA
[03-23 13:08:38.187] ✅ 消息发送成功
[03-23 13:08:38.211] ✅ 消息发送成功
[03-23 13:08:38.211] ✅ 企业微信回复消息发送成功
[03-23 13:08:48.436] 📋 获取所有连接信息: 1个连接
[03-23 13:08:48.436] - 连接: 26dd6cb5-c305-421d-a8a3-753d0455b1c6 (连接时长: 29.8742601s)
🔍 测试WebSocket连接 - 发现 1 个连接
📤 准备向连接 26dd6cb5-c305-421d-a8a3-753d0455b1c6 发送测试消息
✅ 模拟发送测试消息: {"message":"连接健康检查","timestamp":1774242528,"type":"health_check"}
🧪 测试WebSocketConnection的send方法
📤 send方法测试结果: {"connection_id":"26dd6cb5-c305-421d-a8a3-753d0455b1c6","test_message":"这是send方法的测试消息","type":"test_send"}
🧪 测试WebSocketConnection的send_and_wait方法
⏱️ send_and_wait方法测试结果: {"connection_id":"26dd6cb5-c305-421d-a8a3-753d0455b1c6","request":"这是send_and_wait方法的测试请求","response":"模拟响应数据","timeout":5000,"type":"test_send_and_wait"}
[03-23 13:08:48.572] 📨 收到消息: {"service":"smartclaw","timestamp":1774242528,"type":"heartbeat"}
[03-23 13:08:48.572] 💓 收到心跳消息
[03-23 13:08:52.293] 📨 收到消息: {"service":"smartclaw","timestamp":1774242532,"type":"heartbeat"}
[03-23 13:08:52.293] 💓 收到心跳消息