Compare commits
2 Commits
9f0e2a2db2
...
29c473890a
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
29c473890a | ||
|
|
3b3fac1cee |
3
.env
3
.env
@@ -6,7 +6,8 @@ APIKEY=sk-85880595fc714d63bfd0b025e917bd26#千问apikey
|
|||||||
# 962516e4-60eb-4a26-a5a3-44e21adcf7bc #豆包
|
# 962516e4-60eb-4a26-a5a3-44e21adcf7bc #豆包
|
||||||
|
|
||||||
# 消息回调(ngrok 调通用,由 run-ngrok.sh 自动写入)
|
# 消息回调(ngrok 调通用,由 run-ngrok.sh 自动写入)
|
||||||
CALLBACK_BASE_URL=https://dissonant-destinee-nonsensibly.ngrok-free.dev
|
# CALLBACK_BASE_URL=https://dissonant-destinee-nonsensibly.ngrok-free.
|
||||||
|
CALLBACK_BASE_URL=http://demo.bimwe.com/
|
||||||
|
|
||||||
|
|
||||||
# 固定隧道代理(socks5h):不填登录页代理时后端自动用此处,传给 7006
|
# 固定隧道代理(socks5h):不填登录页代理时后端自动用此处,传给 7006
|
||||||
|
|||||||
@@ -15140,3 +15140,132 @@ httpx.ConnectError: All connection attempts failed
|
|||||||
2026-03-15 17:31:04,477 [INFO] wechat-backend - SetCallback registered for key=***9BJZ, CallbackURL=https://dissonant-destinee-nonsensibly.ngrok-free.dev/api/callback/wechat-message
|
2026-03-15 17:31:04,477 [INFO] wechat-backend - SetCallback registered for key=***9BJZ, CallbackURL=https://dissonant-destinee-nonsensibly.ngrok-free.dev/api/callback/wechat-message
|
||||||
2026-03-15 17:31:04,478 [INFO] wechat-backend - 启动时已注册回调 key=***9BJZ
|
2026-03-15 17:31:04,478 [INFO] wechat-backend - 启动时已注册回调 key=***9BJZ
|
||||||
2026-03-15 17:31:04,478 [INFO] wechat-backend - 消息接收已切换为实时回调入口,不再启动 WS GetSyncMsg
|
2026-03-15 17:31:04,478 [INFO] wechat-backend - 消息接收已切换为实时回调入口,不再启动 WS GetSyncMsg
|
||||||
|
2026-03-15 18:47:42,787 [INFO] wechat-backend - proxy config: tunnel=True (TUNNEL_PROXY=14.103.95.78:16816), kdl=False (KDL_API=(empty))
|
||||||
|
2026-03-15 18:47:43,010 [INFO] httpx - HTTP Request: POST http://113.44.162.180:7006/message/SetCallback?key=HBpEnbtj9BJZ "HTTP/1.1 200 OK"
|
||||||
|
2026-03-15 18:47:43,010 [INFO] wechat-backend - SetCallback registered for key=***9BJZ, CallbackURL=https://dissonant-destinee-nonsensibly.ngrok-free.dev/api/callback/wechat-message
|
||||||
|
2026-03-15 18:47:43,011 [INFO] wechat-backend - 启动时已注册回调 key=***9BJZ
|
||||||
|
2026-03-15 18:47:43,011 [INFO] wechat-backend - 消息接收已切换为实时回调入口,不再启动 WS GetSyncMsg
|
||||||
|
2026-03-15 18:48:34,801 [INFO] wechat-backend - HTTP POST /auth/qrcode from 127.0.0.1
|
||||||
|
2026-03-15 18:48:34,808 [INFO] wechat-backend - proxy resolve: auto -> tunnel (socks5h), TUNNEL_PROXY=14.103.95.78:16816
|
||||||
|
2026-03-15 18:48:34,809 [INFO] wechat-backend - GetLoginQrCodeNewDirect: using proxy from tunnel (socks5h), len=47
|
||||||
|
2026-03-15 18:48:34,809 [INFO] wechat-backend - GetLoginQrCodeNewDirect: proxy=yes, force_mac=False, IpadOrmac=ipad
|
||||||
|
2026-03-15 18:48:34,811 [INFO] wechat-backend - GetLoginQrCodeNewDirect 请求参数: key=HBpEnbtj9BJZ, url=http://113.44.162.180:7006/login/GetLoginQrCodeNewDirect, Proxy=socks5h://fawbjjkk:5hz6avfb@14.103.95.78:16816/, Check=False, IpadOrmac=ipad
|
||||||
|
2026-03-15 18:48:34,948 [INFO] httpx - HTTP Request: POST http://113.44.162.180:7006/login/GetLoginQrCodeNewDirect?key=HBpEnbtj9BJZ "HTTP/1.1 200 OK"
|
||||||
|
2026-03-15 18:48:34,949 [INFO] wechat-backend - Upstream GetLoginQrCodeNewDirect success: status=200, body_len=90
|
||||||
|
2026-03-15 18:48:34,949 [INFO] wechat-backend - Stored Data62 (full) for key=HBpEnbtj9BJZ (len=0), valid=False, check=无 Data62 或为空
|
||||||
|
2026-03-15 18:48:34,949 [INFO] wechat-backend - Data62 full:
|
||||||
|
2026-03-15 18:48:34,950 [INFO] wechat-backend - HTTP POST /auth/qrcode -> 200
|
||||||
|
2026-03-15 18:48:36,979 [INFO] wechat-backend - HTTP GET /auth/scan-status from 127.0.0.1
|
||||||
|
2026-03-15 18:48:36,980 [INFO] wechat-backend - CheckLoginStatus: key=HBpEnbtj9BJZ, url=http://113.44.162.180:7006/login/CheckLoginStatus
|
||||||
|
2026-03-15 18:48:37,090 [INFO] httpx - HTTP Request: GET http://113.44.162.180:7006/login/CheckLoginStatus?key=HBpEnbtj9BJZ "HTTP/1.1 200 OK"
|
||||||
|
2026-03-15 18:48:37,092 [INFO] wechat-backend - Upstream CheckLoginStatus response: status=200, body={"Code":200,"Data":{"data62":"","loginState":"online","state":2,"ticket":""},"Text":"账号已登录","Success":false,"Data62":"","Ticket":""}
|
||||||
|
2026-03-15 18:48:37,093 [INFO] wechat-backend - HTTP GET /auth/scan-status -> 200
|
||||||
|
2026-03-15 18:48:37,173 [INFO] wechat-backend - HTTP GET /api/customers from 127.0.0.1
|
||||||
|
2026-03-15 18:48:37,191 [INFO] wechat-backend - HTTP GET /api/customers -> 200
|
||||||
|
2026-03-15 18:48:37,192 [INFO] wechat-backend - HTTP GET /api/push-groups from 127.0.0.1
|
||||||
|
2026-03-15 18:48:37,205 [INFO] wechat-backend - HTTP GET /api/greeting-tasks from 127.0.0.1
|
||||||
|
2026-03-15 18:48:37,214 [INFO] wechat-backend - HTTP GET /api/product-tags from 127.0.0.1
|
||||||
|
2026-03-15 18:48:37,215 [INFO] wechat-backend - HTTP GET /api/push-groups -> 200
|
||||||
|
2026-03-15 18:48:37,221 [INFO] wechat-backend - HTTP GET /api/greeting-tasks -> 200
|
||||||
|
2026-03-15 18:48:37,223 [INFO] wechat-backend - HTTP GET /api/product-tags -> 200
|
||||||
|
2026-03-15 18:48:37,234 [INFO] wechat-backend - HTTP GET /api/push-groups from 127.0.0.1
|
||||||
|
2026-03-15 18:48:37,252 [INFO] wechat-backend - HTTP GET /api/product-tags from 127.0.0.1
|
||||||
|
2026-03-15 18:48:37,254 [INFO] wechat-backend - HTTP GET /api/push-groups -> 200
|
||||||
|
2026-03-15 18:48:37,255 [INFO] wechat-backend - HTTP GET /api/product-tags -> 200
|
||||||
|
2026-03-15 18:48:37,259 [INFO] wechat-backend - HTTP GET /api/push-groups from 127.0.0.1
|
||||||
|
2026-03-15 18:48:37,263 [INFO] wechat-backend - HTTP GET /api/product-tags from 127.0.0.1
|
||||||
|
2026-03-15 18:48:37,282 [INFO] wechat-backend - HTTP GET /api/push-groups -> 200
|
||||||
|
2026-03-15 18:48:37,283 [INFO] wechat-backend - HTTP GET /api/product-tags -> 200
|
||||||
|
2026-03-15 18:59:16,182 [INFO] wechat-backend - proxy config: tunnel=True (TUNNEL_PROXY=14.103.95.78:16816), kdl=False (KDL_API=(empty))
|
||||||
|
2026-03-15 18:59:16,395 [INFO] httpx - HTTP Request: POST http://113.44.162.180:7006/message/SetCallback?key=HBpEnbtj9BJZ "HTTP/1.1 200 OK"
|
||||||
|
2026-03-15 18:59:16,396 [INFO] wechat-backend - SetCallback registered for key=***9BJZ, CallbackURL=http://demo.bimwe.com/api/callback/wechat-message
|
||||||
|
2026-03-15 18:59:16,396 [INFO] wechat-backend - 启动时已注册回调 key=***9BJZ
|
||||||
|
2026-03-15 18:59:16,396 [INFO] wechat-backend - 消息接收已切换为实时回调入口,不再启动 WS GetSyncMsg
|
||||||
|
2026-03-15 19:05:23,156 [INFO] wechat-backend - proxy config: tunnel=True (TUNNEL_PROXY=14.103.95.78:16816), kdl=False (KDL_API=(empty))
|
||||||
|
2026-03-15 19:05:23,330 [INFO] httpx - HTTP Request: POST http://113.44.162.180:7006/message/SetCallback?key=HBpEnbtj9BJZ "HTTP/1.1 200 OK"
|
||||||
|
2026-03-15 19:05:23,331 [INFO] wechat-backend - SetCallback registered for key=***9BJZ, CallbackURL=http://demo.bimwe.com/api/callback/wechat-message
|
||||||
|
2026-03-15 19:05:23,331 [INFO] wechat-backend - 启动时已注册回调 key=***9BJZ
|
||||||
|
2026-03-15 19:05:23,331 [INFO] wechat-backend - 消息接收已切换为实时回调入口,不再启动 WS GetSyncMsg
|
||||||
|
2026-03-15 19:10:33,130 [INFO] wechat-backend - proxy config: tunnel=True (TUNNEL_PROXY=14.103.95.78:16816), kdl=False (KDL_API=(empty))
|
||||||
|
2026-03-15 19:10:33,443 [INFO] httpx - HTTP Request: POST http://113.44.162.180:7006/message/SetCallback?key=HBpEnbtj9BJZ "HTTP/1.1 200 OK"
|
||||||
|
2026-03-15 19:10:33,444 [INFO] wechat-backend - SetCallback registered for key=***9BJZ, CallbackURL=http://demo.bimwe.com/api/callback/wechat-message
|
||||||
|
2026-03-15 19:10:33,444 [INFO] wechat-backend - 启动时已注册回调 key=***9BJZ
|
||||||
|
2026-03-15 19:10:33,445 [INFO] wechat-backend - 消息接收已切换为实时回调入口,不再启动 WS GetSyncMsg
|
||||||
|
2026-03-15 19:11:30,649 [INFO] wechat-backend - HTTP GET /api/customers from 127.0.0.1
|
||||||
|
2026-03-15 19:11:30,655 [INFO] wechat-backend - HTTP GET /api/push-tasks from 127.0.0.1
|
||||||
|
2026-03-15 19:11:30,659 [INFO] wechat-backend - HTTP GET /api/product-tags from 127.0.0.1
|
||||||
|
2026-03-15 19:11:30,659 [INFO] wechat-backend - HTTP GET /api/customers -> 200
|
||||||
|
2026-03-15 19:11:30,662 [INFO] wechat-backend - HTTP GET /api/push-groups from 127.0.0.1
|
||||||
|
2026-03-15 19:11:30,662 [INFO] wechat-backend - HTTP GET /api/push-tasks -> 200
|
||||||
|
2026-03-15 19:11:30,664 [INFO] wechat-backend - HTTP GET /api/greeting-tasks from 127.0.0.1
|
||||||
|
2026-03-15 19:11:30,665 [INFO] wechat-backend - HTTP GET /api/product-tags -> 200
|
||||||
|
2026-03-15 19:11:30,667 [INFO] wechat-backend - HTTP GET /api/push-groups -> 200
|
||||||
|
2026-03-15 19:11:30,668 [INFO] wechat-backend - HTTP GET /api/greeting-tasks -> 200
|
||||||
|
2026-03-15 19:11:30,683 [INFO] wechat-backend - HTTP GET /api/product-tags from 127.0.0.1
|
||||||
|
2026-03-15 19:11:30,686 [INFO] wechat-backend - HTTP GET /api/push-groups from 127.0.0.1
|
||||||
|
2026-03-15 19:11:30,686 [INFO] wechat-backend - HTTP GET /api/product-tags -> 200
|
||||||
|
2026-03-15 19:11:30,689 [INFO] wechat-backend - HTTP GET /api/push-groups -> 200
|
||||||
|
2026-03-15 19:11:30,693 [INFO] wechat-backend - HTTP GET /api/product-tags from 127.0.0.1
|
||||||
|
2026-03-15 19:11:30,695 [INFO] wechat-backend - HTTP GET /api/push-groups from 127.0.0.1
|
||||||
|
2026-03-15 19:11:30,695 [INFO] wechat-backend - HTTP GET /api/product-tags -> 200
|
||||||
|
2026-03-15 19:11:30,697 [INFO] wechat-backend - HTTP GET /api/push-groups -> 200
|
||||||
|
2026-03-15 19:11:32,880 [INFO] wechat-backend - HTTP GET /api/contact-list from 127.0.0.1
|
||||||
|
2026-03-15 19:11:33,483 [INFO] httpx - HTTP Request: POST http://113.44.162.180:7006/friend/GetContactList?key=HBpEnbtj9BJZ "HTTP/1.1 200 OK"
|
||||||
|
2026-03-15 19:11:33,485 [INFO] wechat-backend - GetContactList usernames total=61
|
||||||
|
2026-03-15 19:11:36,773 [INFO] httpx - HTTP Request: POST http://113.44.162.180:7006/friend/GetContactDetailsList?key=HBpEnbtj9BJZ "HTTP/1.1 200 OK"
|
||||||
|
2026-03-15 19:11:36,837 [INFO] httpx - HTTP Request: POST http://113.44.162.180:7006/friend/GetContactDetailsList?key=HBpEnbtj9BJZ "HTTP/1.1 200 OK"
|
||||||
|
2026-03-15 19:11:37,090 [INFO] httpx - HTTP Request: POST http://113.44.162.180:7006/friend/GetContactDetailsList?key=HBpEnbtj9BJZ "HTTP/1.1 200 OK"
|
||||||
|
2026-03-15 19:11:37,260 [INFO] httpx - HTTP Request: POST http://113.44.162.180:7006/friend/GetContactDetailsList?key=HBpEnbtj9BJZ "HTTP/1.1 200 OK"
|
||||||
|
2026-03-15 19:11:37,407 [INFO] httpx - HTTP Request: POST http://113.44.162.180:7006/friend/GetContactDetailsList?key=HBpEnbtj9BJZ "HTTP/1.1 200 OK"
|
||||||
|
2026-03-15 19:11:37,414 [INFO] httpx - HTTP Request: POST http://113.44.162.180:7006/friend/GetContactDetailsList?key=HBpEnbtj9BJZ "HTTP/1.1 200 OK"
|
||||||
|
2026-03-15 19:11:37,422 [INFO] httpx - HTTP Request: POST http://113.44.162.180:7006/friend/GetContactDetailsList?key=HBpEnbtj9BJZ "HTTP/1.1 200 OK"
|
||||||
|
2026-03-15 19:11:37,464 [INFO] wechat-backend - GetContactDetailsList first batch item keys=['userName', 'nickName', 'pyinitial', 'quanPin', 'sex', 'imgBuf', 'bitMask', 'bitVal', 'imgFlag', 'remark', 'remarkPyinitial', 'remarkQuanPin', 'contactType', 'roomInfoCount', 'domainList', 'chatRoomNotify', 'addContactScene', 'personalCard', 'hasWeiXinHdHeadImg', 'verifyFlag', 'level', 'source', 'weiboFlag', 'albumStyle', 'albumFlag', 'snsUserInfo', 'bigHeadImgUrl', 'smallHeadImgUrl', 'myBrandList', 'customizedInfo', 'encryptUserName', 'additionalContactList', 'chatroomVersion', 'chatroomMaxCount', 'chatroomAccessType', 'newChatroomData', 'deleteFlag', 'phoneNumListInfo', 'chatroomInfoVersion', 'deleteContactScene', 'chatroomStatus', 'extFlag']
|
||||||
|
2026-03-15 19:11:37,467 [INFO] wechat-backend - Contact index built for key=***9BJZ, size=103
|
||||||
|
2026-03-15 19:11:37,468 [INFO] wechat-backend - api_contact_list key=***9BJZ -> 44 contacts
|
||||||
|
2026-03-15 19:11:37,468 [INFO] wechat-backend - HTTP GET /api/contact-list -> 200
|
||||||
|
2026-03-15 19:11:38,565 [INFO] wechat-backend - HTTP GET /api/ws-status from 127.0.0.1
|
||||||
|
2026-03-15 19:11:38,569 [INFO] wechat-backend - HTTP GET /api/ws-status -> 200
|
||||||
|
2026-03-15 19:11:41,296 [INFO] wechat-backend - HTTP GET /api/customer-tags from 127.0.0.1
|
||||||
|
2026-03-15 19:11:41,300 [INFO] wechat-backend - HTTP GET /api/customer-tags -> 200
|
||||||
|
2026-03-15 19:11:42,665 [INFO] wechat-backend - HTTP GET /api/push-tasks from 127.0.0.1
|
||||||
|
2026-03-15 19:11:42,668 [INFO] wechat-backend - HTTP GET /api/push-tasks -> 200
|
||||||
|
2026-03-15 19:11:43,334 [INFO] wechat-backend - HTTP GET /api/ai-reply-config from 127.0.0.1
|
||||||
|
2026-03-15 19:11:43,339 [INFO] wechat-backend - HTTP GET /api/ai-reply-config -> 200
|
||||||
|
2026-03-15 19:11:43,340 [INFO] wechat-backend - HTTP GET /api/callback-status from 127.0.0.1
|
||||||
|
2026-03-15 19:11:43,465 [INFO] httpx - HTTP Request: POST http://113.44.162.180:7006/message/SetCallback?key=HBpEnbtj9BJZ "HTTP/1.1 200 OK"
|
||||||
|
2026-03-15 19:11:43,467 [INFO] wechat-backend - SetCallback registered for key=***9BJZ, CallbackURL=http://demo.bimwe.com/api/callback/wechat-message
|
||||||
|
2026-03-15 19:11:43,468 [INFO] wechat-backend - HTTP GET /api/callback-status -> 200
|
||||||
|
2026-03-15 19:11:46,241 [INFO] wechat-backend - HTTP GET /api/push-tasks from 127.0.0.1
|
||||||
|
2026-03-15 19:11:46,245 [INFO] wechat-backend - HTTP GET /api/push-tasks -> 200
|
||||||
|
2026-03-15 19:11:46,566 [INFO] wechat-backend - HTTP GET /api/ws-status from 127.0.0.1
|
||||||
|
2026-03-15 19:11:46,568 [INFO] wechat-backend - HTTP GET /api/ws-status -> 200
|
||||||
|
2026-03-15 19:11:47,988 [INFO] wechat-backend - HTTP GET /api/messages from 127.0.0.1
|
||||||
|
2026-03-15 19:11:48,034 [INFO] wechat-backend - HTTP GET /api/messages -> 200
|
||||||
|
2026-03-15 19:11:49,969 [INFO] wechat-backend - HTTP GET /api/messages from 127.0.0.1
|
||||||
|
2026-03-15 19:11:49,984 [INFO] wechat-backend - HTTP GET /api/messages -> 200
|
||||||
|
2026-03-15 19:11:51,966 [INFO] wechat-backend - HTTP GET /api/messages from 127.0.0.1
|
||||||
|
2026-03-15 19:11:51,981 [INFO] wechat-backend - HTTP GET /api/messages -> 200
|
||||||
|
2026-03-15 19:11:53,205 [INFO] wechat-backend - HTTP GET /api/models from 127.0.0.1
|
||||||
|
2026-03-15 19:11:53,224 [INFO] wechat-backend - HTTP GET /api/models -> 200
|
||||||
|
2026-03-15 19:11:54,670 [INFO] wechat-backend - HTTP GET /api/messages from 127.0.0.1
|
||||||
|
2026-03-15 19:11:54,693 [INFO] wechat-backend - HTTP GET /api/messages -> 200
|
||||||
|
2026-03-15 19:11:55,262 [INFO] wechat-backend - HTTP GET /api/customers from 127.0.0.1
|
||||||
|
2026-03-15 19:11:55,270 [INFO] wechat-backend - HTTP GET /api/customers -> 200
|
||||||
|
2026-03-15 19:11:55,273 [INFO] wechat-backend - HTTP GET /api/greeting-tasks from 127.0.0.1
|
||||||
|
2026-03-15 19:11:55,281 [INFO] wechat-backend - HTTP GET /api/product-tags from 127.0.0.1
|
||||||
|
2026-03-15 19:11:55,305 [INFO] wechat-backend - HTTP GET /api/push-groups from 127.0.0.1
|
||||||
|
2026-03-15 19:11:55,305 [INFO] wechat-backend - HTTP GET /api/greeting-tasks -> 200
|
||||||
|
2026-03-15 19:11:55,308 [INFO] wechat-backend - HTTP GET /api/push-tasks from 127.0.0.1
|
||||||
|
2026-03-15 19:11:55,309 [INFO] wechat-backend - HTTP GET /api/product-tags -> 200
|
||||||
|
2026-03-15 19:11:55,312 [INFO] wechat-backend - HTTP GET /api/push-groups -> 200
|
||||||
|
2026-03-15 19:11:55,313 [INFO] wechat-backend - HTTP GET /api/push-tasks -> 200
|
||||||
|
2026-03-15 19:11:55,323 [INFO] wechat-backend - HTTP GET /api/push-groups from 127.0.0.1
|
||||||
|
2026-03-15 19:11:55,327 [INFO] wechat-backend - HTTP GET /api/product-tags from 127.0.0.1
|
||||||
|
2026-03-15 19:11:55,331 [INFO] wechat-backend - HTTP GET /api/push-groups -> 200
|
||||||
|
2026-03-15 19:11:55,332 [INFO] wechat-backend - HTTP GET /api/product-tags -> 200
|
||||||
|
2026-03-15 19:11:55,340 [INFO] wechat-backend - HTTP GET /api/push-groups from 127.0.0.1
|
||||||
|
2026-03-15 19:11:55,344 [INFO] wechat-backend - HTTP GET /api/product-tags from 127.0.0.1
|
||||||
|
2026-03-15 19:11:55,346 [INFO] wechat-backend - HTTP GET /api/push-groups -> 200
|
||||||
|
2026-03-15 19:11:55,347 [INFO] wechat-backend - HTTP GET /api/product-tags -> 200
|
||||||
|
2026-03-15 19:11:58,797 [INFO] wechat-backend - HTTP GET /api/messages from 127.0.0.1
|
||||||
|
2026-03-15 19:11:58,812 [INFO] wechat-backend - HTTP GET /api/messages -> 200
|
||||||
|
|||||||
@@ -5618,3 +5618,64 @@
|
|||||||
::1 - - [15/Mar/2026:09:15:28 +0000] "GET /api/ws-status HTTP/1.1" 200 19 "http://localhost:3000/manage.html?key=HBpEnbtj9BJZ" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36"
|
::1 - - [15/Mar/2026:09:15:28 +0000] "GET /api/ws-status HTTP/1.1" 200 19 "http://localhost:3000/manage.html?key=HBpEnbtj9BJZ" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36"
|
||||||
[2026-03-15T09:31:04.748Z] Static frontend server listening on port 3000; access log: /Users/dannier/Desktop/living/AICLW/wechatAiclaw/backend/data/logs/node-access.log
|
[2026-03-15T09:31:04.748Z] Static frontend server listening on port 3000; access log: /Users/dannier/Desktop/living/AICLW/wechatAiclaw/backend/data/logs/node-access.log
|
||||||
[2026-03-15T09:48:21.689Z] Static frontend server listening on port 3000; access log: /Users/dannier/Desktop/living/AICLW/wechatAiclaw/backend/data/logs/node-access.log
|
[2026-03-15T09:48:21.689Z] Static frontend server listening on port 3000; access log: /Users/dannier/Desktop/living/AICLW/wechatAiclaw/backend/data/logs/node-access.log
|
||||||
|
[2026-03-15T10:47:43.227Z] Static frontend server listening on port 3000; access log: /Users/dannier/Desktop/living/AICLW/wechatAiclaw/backend/data/logs/node-access.log
|
||||||
|
127.0.0.1 - - [15/Mar/2026:10:48:28 +0000] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36"
|
||||||
|
127.0.0.1 - - [15/Mar/2026:10:48:28 +0000] "GET /health HTTP/1.1" 200 38 "http://localhost:3000/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36"
|
||||||
|
127.0.0.1 - - [15/Mar/2026:10:48:34 +0000] "POST /auth/qrcode HTTP/1.1" 200 295 "http://localhost:3000/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36"
|
||||||
|
127.0.0.1 - - [15/Mar/2026:10:48:37 +0000] "GET /auth/scan-status?key=HBpEnbtj9BJZ HTTP/1.1" 304 - "http://localhost:3000/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36"
|
||||||
|
127.0.0.1 - - [15/Mar/2026:10:48:37 +0000] "GET /manage.html?key=HBpEnbtj9BJZ HTTP/1.1" 304 - "http://localhost:3000/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36"
|
||||||
|
127.0.0.1 - - [15/Mar/2026:10:48:37 +0000] "GET /api/customers?key=HBpEnbtj9BJZ HTTP/1.1" 304 - "http://localhost:3000/manage.html?key=HBpEnbtj9BJZ" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36"
|
||||||
|
127.0.0.1 - - [15/Mar/2026:10:48:37 +0000] "GET /api/push-groups?key=HBpEnbtj9BJZ HTTP/1.1" 304 - "http://localhost:3000/manage.html?key=HBpEnbtj9BJZ" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36"
|
||||||
|
127.0.0.1 - - [15/Mar/2026:10:48:37 +0000] "GET /api/greeting-tasks?key=HBpEnbtj9BJZ HTTP/1.1" 304 - "http://localhost:3000/manage.html?key=HBpEnbtj9BJZ" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36"
|
||||||
|
127.0.0.1 - - [15/Mar/2026:10:48:37 +0000] "GET /api/product-tags?key=HBpEnbtj9BJZ HTTP/1.1" 304 - "http://localhost:3000/manage.html?key=HBpEnbtj9BJZ" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36"
|
||||||
|
127.0.0.1 - - [15/Mar/2026:10:48:37 +0000] "GET /api/push-groups?key=HBpEnbtj9BJZ HTTP/1.1" 304 - "http://localhost:3000/manage.html?key=HBpEnbtj9BJZ" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36"
|
||||||
|
127.0.0.1 - - [15/Mar/2026:10:48:37 +0000] "GET /api/product-tags?key=HBpEnbtj9BJZ HTTP/1.1" 304 - "http://localhost:3000/manage.html?key=HBpEnbtj9BJZ" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36"
|
||||||
|
127.0.0.1 - - [15/Mar/2026:10:48:37 +0000] "GET /api/push-groups?key=HBpEnbtj9BJZ HTTP/1.1" 304 - "http://localhost:3000/manage.html?key=HBpEnbtj9BJZ" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36"
|
||||||
|
127.0.0.1 - - [15/Mar/2026:10:48:37 +0000] "GET /api/product-tags?key=HBpEnbtj9BJZ HTTP/1.1" 304 - "http://localhost:3000/manage.html?key=HBpEnbtj9BJZ" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36"
|
||||||
|
[2026-03-15T10:59:16.688Z] Static frontend server listening on port 3000; access log: /Users/dannier/Desktop/living/AICLW/wechatAiclaw/backend/data/logs/node-access.log
|
||||||
|
127.0.0.1 - - [15/Mar/2026:10:59:22 +0000] "GET / HTTP/1.1" 200 52692 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36"
|
||||||
|
127.0.0.1 - - [15/Mar/2026:11:00:10 +0000] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36"
|
||||||
|
127.0.0.1 - - [15/Mar/2026:11:00:11 +0000] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36"
|
||||||
|
127.0.0.1 - - [15/Mar/2026:11:00:11 +0000] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36"
|
||||||
|
[2026-03-15T11:05:23.600Z] Static frontend server listening on port 3000; access log: /Users/dannier/Desktop/living/AICLW/wechatAiclaw/backend/data/logs/node-access.log
|
||||||
|
127.0.0.1 - - [15/Mar/2026:11:05:28 +0000] "GET / HTTP/1.1" 200 52832 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36"
|
||||||
|
[2026-03-15T11:10:33.645Z] Static frontend server listening on port 3000; access log: /Users/dannier/Desktop/living/AICLW/wechatAiclaw/backend/data/logs/node-access.log
|
||||||
|
127.0.0.1 - - [15/Mar/2026:11:10:44 +0000] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36"
|
||||||
|
127.0.0.1 - - [15/Mar/2026:11:11:30 +0000] "GET /manage.html?key=HBpEnbtj9BJZ HTTP/1.1" 200 53409 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36"
|
||||||
|
127.0.0.1 - - [15/Mar/2026:11:11:30 +0000] "GET /api/customers?key=HBpEnbtj9BJZ HTTP/1.1" 304 - "http://localhost:3000/manage.html?key=HBpEnbtj9BJZ" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36"
|
||||||
|
127.0.0.1 - - [15/Mar/2026:11:11:30 +0000] "GET /api/push-tasks?key=HBpEnbtj9BJZ&limit=100 HTTP/1.1" 200 278 "http://localhost:3000/manage.html?key=HBpEnbtj9BJZ" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36"
|
||||||
|
127.0.0.1 - - [15/Mar/2026:11:11:30 +0000] "GET /api/product-tags?key=HBpEnbtj9BJZ HTTP/1.1" 304 - "http://localhost:3000/manage.html?key=HBpEnbtj9BJZ" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36"
|
||||||
|
127.0.0.1 - - [15/Mar/2026:11:11:30 +0000] "GET /api/push-groups?key=HBpEnbtj9BJZ HTTP/1.1" 304 - "http://localhost:3000/manage.html?key=HBpEnbtj9BJZ" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36"
|
||||||
|
127.0.0.1 - - [15/Mar/2026:11:11:30 +0000] "GET /api/greeting-tasks?key=HBpEnbtj9BJZ HTTP/1.1" 304 - "http://localhost:3000/manage.html?key=HBpEnbtj9BJZ" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36"
|
||||||
|
127.0.0.1 - - [15/Mar/2026:11:11:30 +0000] "GET /api/product-tags?key=HBpEnbtj9BJZ HTTP/1.1" 304 - "http://localhost:3000/manage.html?key=HBpEnbtj9BJZ" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36"
|
||||||
|
127.0.0.1 - - [15/Mar/2026:11:11:30 +0000] "GET /api/push-groups?key=HBpEnbtj9BJZ HTTP/1.1" 304 - "http://localhost:3000/manage.html?key=HBpEnbtj9BJZ" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36"
|
||||||
|
127.0.0.1 - - [15/Mar/2026:11:11:30 +0000] "GET /api/product-tags?key=HBpEnbtj9BJZ HTTP/1.1" 304 - "http://localhost:3000/manage.html?key=HBpEnbtj9BJZ" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36"
|
||||||
|
127.0.0.1 - - [15/Mar/2026:11:11:30 +0000] "GET /api/push-groups?key=HBpEnbtj9BJZ HTTP/1.1" 304 - "http://localhost:3000/manage.html?key=HBpEnbtj9BJZ" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36"
|
||||||
|
127.0.0.1 - - [15/Mar/2026:11:11:37 +0000] "GET /api/contact-list?key=HBpEnbtj9BJZ&refresh=1 HTTP/1.1" 200 5756 "http://localhost:3000/manage.html?key=HBpEnbtj9BJZ" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36"
|
||||||
|
127.0.0.1 - - [15/Mar/2026:11:11:38 +0000] "GET /api/ws-status HTTP/1.1" 200 19 "http://localhost:3000/manage.html?key=HBpEnbtj9BJZ" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36"
|
||||||
|
127.0.0.1 - - [15/Mar/2026:11:11:41 +0000] "GET /api/customer-tags?key=HBpEnbtj9BJZ HTTP/1.1" 304 - "http://localhost:3000/manage.html?key=HBpEnbtj9BJZ" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36"
|
||||||
|
127.0.0.1 - - [15/Mar/2026:11:11:42 +0000] "GET /api/push-tasks?key=HBpEnbtj9BJZ&limit=100 HTTP/1.1" 304 - "http://localhost:3000/manage.html?key=HBpEnbtj9BJZ" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36"
|
||||||
|
127.0.0.1 - - [15/Mar/2026:11:11:43 +0000] "GET /api/ai-reply-config?key=HBpEnbtj9BJZ HTTP/1.1" 304 - "http://localhost:3000/manage.html?key=HBpEnbtj9BJZ" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36"
|
||||||
|
127.0.0.1 - - [15/Mar/2026:11:11:43 +0000] "GET /api/callback-status?key=HBpEnbtj9BJZ HTTP/1.1" 200 104 "http://localhost:3000/manage.html?key=HBpEnbtj9BJZ" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36"
|
||||||
|
127.0.0.1 - - [15/Mar/2026:11:11:46 +0000] "GET /api/push-tasks?key=HBpEnbtj9BJZ&limit=100 HTTP/1.1" 304 - "http://localhost:3000/manage.html?key=HBpEnbtj9BJZ" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36"
|
||||||
|
127.0.0.1 - - [15/Mar/2026:11:11:46 +0000] "GET /api/ws-status HTTP/1.1" 200 19 "http://localhost:3000/manage.html?key=HBpEnbtj9BJZ" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36"
|
||||||
|
127.0.0.1 - - [15/Mar/2026:11:11:47 +0000] "GET /chat.html HTTP/1.1" 304 - "http://localhost:3000/manage.html?key=HBpEnbtj9BJZ" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36"
|
||||||
|
127.0.0.1 - - [15/Mar/2026:11:11:48 +0000] "GET /api/messages?key=HBpEnbtj9BJZ&limit=80 HTTP/1.1" 200 96699 "http://localhost:3000/chat.html" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36"
|
||||||
|
127.0.0.1 - - [15/Mar/2026:11:11:50 +0000] "GET /api/messages?key=HBpEnbtj9BJZ&limit=80 HTTP/1.1" 304 - "http://localhost:3000/chat.html" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36"
|
||||||
|
127.0.0.1 - - [15/Mar/2026:11:11:51 +0000] "GET /api/messages?key=HBpEnbtj9BJZ&limit=80 HTTP/1.1" 304 - "http://localhost:3000/chat.html" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36"
|
||||||
|
127.0.0.1 - - [15/Mar/2026:11:11:53 +0000] "GET /models.html HTTP/1.1" 304 - "http://localhost:3000/chat.html" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36"
|
||||||
|
127.0.0.1 - - [15/Mar/2026:11:11:53 +0000] "GET /api/models HTTP/1.1" 304 - "http://localhost:3000/models.html" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36"
|
||||||
|
127.0.0.1 - - [15/Mar/2026:11:11:54 +0000] "GET /chat.html HTTP/1.1" 304 - "http://localhost:3000/models.html" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36"
|
||||||
|
127.0.0.1 - - [15/Mar/2026:11:11:54 +0000] "GET /api/messages?key=HBpEnbtj9BJZ&limit=80 HTTP/1.1" 304 - "http://localhost:3000/chat.html" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36"
|
||||||
|
127.0.0.1 - - [15/Mar/2026:11:11:55 +0000] "GET /manage.html HTTP/1.1" 200 53409 "http://localhost:3000/chat.html" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36"
|
||||||
|
127.0.0.1 - - [15/Mar/2026:11:11:55 +0000] "GET /api/customers?key=HBpEnbtj9BJZ HTTP/1.1" 304 - "http://localhost:3000/manage.html" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36"
|
||||||
|
127.0.0.1 - - [15/Mar/2026:11:11:55 +0000] "GET /api/greeting-tasks?key=HBpEnbtj9BJZ HTTP/1.1" 304 - "http://localhost:3000/manage.html" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36"
|
||||||
|
127.0.0.1 - - [15/Mar/2026:11:11:55 +0000] "GET /api/product-tags?key=HBpEnbtj9BJZ HTTP/1.1" 304 - "http://localhost:3000/manage.html" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36"
|
||||||
|
127.0.0.1 - - [15/Mar/2026:11:11:55 +0000] "GET /api/push-groups?key=HBpEnbtj9BJZ HTTP/1.1" 304 - "http://localhost:3000/manage.html" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36"
|
||||||
|
127.0.0.1 - - [15/Mar/2026:11:11:55 +0000] "GET /api/push-tasks?key=HBpEnbtj9BJZ&limit=100 HTTP/1.1" 304 - "http://localhost:3000/manage.html" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36"
|
||||||
|
127.0.0.1 - - [15/Mar/2026:11:11:55 +0000] "GET /api/push-groups?key=HBpEnbtj9BJZ HTTP/1.1" 304 - "http://localhost:3000/manage.html" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36"
|
||||||
|
127.0.0.1 - - [15/Mar/2026:11:11:55 +0000] "GET /api/product-tags?key=HBpEnbtj9BJZ HTTP/1.1" 304 - "http://localhost:3000/manage.html" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36"
|
||||||
|
127.0.0.1 - - [15/Mar/2026:11:11:55 +0000] "GET /api/push-groups?key=HBpEnbtj9BJZ HTTP/1.1" 304 - "http://localhost:3000/manage.html" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36"
|
||||||
|
127.0.0.1 - - [15/Mar/2026:11:11:55 +0000] "GET /api/product-tags?key=HBpEnbtj9BJZ HTTP/1.1" 304 - "http://localhost:3000/manage.html" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36"
|
||||||
|
127.0.0.1 - - [15/Mar/2026:11:11:58 +0000] "GET / HTTP/1.1" 304 - "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36"
|
||||||
|
127.0.0.1 - - [15/Mar/2026:11:11:58 +0000] "GET /api/messages?key=HBpEnbtj9BJZ&limit=80 HTTP/1.1" 304 - "http://localhost:3000/chat.html" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36"
|
||||||
|
|||||||
@@ -627,7 +627,7 @@ def _proxy_preview_for_log(proxy: str) -> str:
|
|||||||
|
|
||||||
|
|
||||||
def _normalize_proxy_scheme_to_socks5h(proxy: str) -> str:
|
def _normalize_proxy_scheme_to_socks5h(proxy: str) -> str:
|
||||||
"""若代理是隧道地址但用了 http,改为 socks5h(7006 需 socks5)。"""
|
"""若代理是隧道地址但用了 http,改为 socks5h(7006 需 socks5h)。"""
|
||||||
if not proxy or not isinstance(proxy, str):
|
if not proxy or not isinstance(proxy, str):
|
||||||
return proxy
|
return proxy
|
||||||
p = proxy.strip()
|
p = proxy.strip()
|
||||||
@@ -1094,6 +1094,32 @@ async def api_slider_verify_post(body: SliderVerifyBody):
|
|||||||
raise HTTPException(status_code=502, detail=f"slider_upstream_error: {e}") from e
|
raise HTTPException(status_code=502, detail=f"slider_upstream_error: {e}") from e
|
||||||
|
|
||||||
|
|
||||||
|
class VerifyCodeBody(BaseModel):
|
||||||
|
"""iPad 登录验证码:7006 /login/VerifyCode 入参。"""
|
||||||
|
code: str = ""
|
||||||
|
data62: str = ""
|
||||||
|
ticket: str = ""
|
||||||
|
|
||||||
|
|
||||||
|
@app.post("/api/verify-code")
|
||||||
|
async def api_verify_code(key: str = Query(..., description="账号 key"), body: VerifyCodeBody = None):
|
||||||
|
"""iPad 登录验证码验证:转发到 7006 POST /login/VerifyCode?key=xxx,body 为 code、data62、ticket。"""
|
||||||
|
if body is None:
|
||||||
|
body = VerifyCodeBody()
|
||||||
|
url = f"{CHECK_STATUS_BASE_URL.rstrip('/')}/login/VerifyCode"
|
||||||
|
payload = {"code": (body.code or "").strip(), "data62": (body.data62 or "").strip(), "ticket": (body.ticket or "").strip()}
|
||||||
|
try:
|
||||||
|
async with httpx.AsyncClient(trust_env=False, timeout=30.0) as client:
|
||||||
|
resp = await client.post(url, params={"key": key}, json=payload)
|
||||||
|
try:
|
||||||
|
return resp.json()
|
||||||
|
except Exception:
|
||||||
|
return {"ok": resp.status_code == 200, "status_code": resp.status_code, "text": (resp.text or "")[:500]}
|
||||||
|
except Exception as e:
|
||||||
|
logger.warning("VerifyCode upstream error: %s", e)
|
||||||
|
raise HTTPException(status_code=502, detail=f"verify_code_upstream_error: {e}") from e
|
||||||
|
|
||||||
|
|
||||||
# ---------- R1-2 客户画像 / R1-3 定时问候 / R1-4 分群推送 / 消息与发送 ----------
|
# ---------- R1-2 客户画像 / R1-3 定时问候 / R1-4 分群推送 / 消息与发送 ----------
|
||||||
|
|
||||||
class CustomerCreate(BaseModel):
|
class CustomerCreate(BaseModel):
|
||||||
|
|||||||
@@ -544,10 +544,10 @@
|
|||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<label for="proxy">代理(可选,不填则由后端自动读取)</label>
|
<label for="proxy">代理(可选,仅支持带用户名密码的 socks5h)</label>
|
||||||
<input
|
<input
|
||||||
id="proxy"
|
id="proxy"
|
||||||
placeholder="socks5://ip:port 或 socks5://user:pass@ip:port"
|
placeholder="socks5h://user:pass@ip:port"
|
||||||
autocomplete="off"
|
autocomplete="off"
|
||||||
/>
|
/>
|
||||||
<button type="button" class="secondary" id="btn-check-proxy" style="margin-top: 6px; padding: 4px 10px; font-size: 12px;">检测代理是否正常</button>
|
<button type="button" class="secondary" id="btn-check-proxy" style="margin-top: 6px; padding: 4px 10px; font-size: 12px;">检测代理是否正常</button>
|
||||||
@@ -626,10 +626,10 @@
|
|||||||
|
|
||||||
<div id="slider-area" style="display: none;">
|
<div id="slider-area" style="display: none;">
|
||||||
<div class="card" style="max-width: 480px;">
|
<div class="card" style="max-width: 480px;">
|
||||||
<div class="card-title">滑块验证(无数字时:先点「重新取码(Mac)」,手机停确认页再滑)</div>
|
<div class="card-title" id="slider-card-title">滑块验证(无数字时:先点「重新取码(Mac)」,手机停确认页再滑)</div>
|
||||||
<div id="slider-app" data-v-app="">
|
<div id="slider-app" data-v-app="">
|
||||||
<div class="params-section" style="margin-bottom: 12px;">
|
<div class="params-section" style="margin-bottom: 12px;">
|
||||||
<label class="form-label" for="keyInput">Key (7765 服务方):</label>
|
<label class="form-label" id="keyLabel" for="keyInput">Key (7765 服务方):</label>
|
||||||
<input type="text" class="form-control" id="keyInput" placeholder="408449830" style="width:100%;box-sizing:border-box;padding:8px;margin-bottom:8px;border:1px solid var(--border);border-radius:8px;background:rgba(15,23,42,0.6);color:var(--text);">
|
<input type="text" class="form-control" id="keyInput" placeholder="408449830" style="width:100%;box-sizing:border-box;padding:8px;margin-bottom:8px;border:1px solid var(--border);border-radius:8px;background:rgba(15,23,42,0.6);color:var(--text);">
|
||||||
<label class="form-label" for="data62Input">Data62:</label>
|
<label class="form-label" for="data62Input">Data62:</label>
|
||||||
<input type="text" class="form-control" id="data62Input" placeholder="请输入data62" style="width:100%;box-sizing:border-box;padding:8px;margin-bottom:8px;border:1px solid var(--border);border-radius:8px;background:rgba(15,23,42,0.6);color:var(--text);">
|
<input type="text" class="form-control" id="data62Input" placeholder="请输入data62" style="width:100%;box-sizing:border-box;padding:8px;margin-bottom:8px;border:1px solid var(--border);border-radius:8px;background:rgba(15,23,42,0.6);color:var(--text);">
|
||||||
@@ -638,7 +638,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="text-center">
|
<div class="text-center">
|
||||||
<button type="button" class="btn btn-verify btn-lg" id="slider-btn-verify" disabled style="padding:10px 20px;background:var(--accent);color:#fff;border:none;border-radius:8px;cursor:pointer;">开始验证</button>
|
<button type="button" class="btn btn-verify btn-lg" id="slider-btn-verify" disabled style="padding:10px 20px;background:var(--accent);color:#fff;border:none;border-radius:8px;cursor:pointer;">开始验证</button>
|
||||||
<div class="text-muted mt-2" style="font-size:12px;color:var(--muted);margin-top:8px;">请先填写完整的参数信息</div>
|
<div class="text-muted mt-2" id="slider-hint" style="font-size:12px;color:var(--muted);margin-top:8px;">请先填写完整的参数信息</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -677,21 +677,41 @@
|
|||||||
return params;
|
return params;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function isIpadVerify() {
|
||||||
|
var device = ($('device') && $('device').value) || '';
|
||||||
|
return (device || '').toLowerCase() === 'ipad';
|
||||||
|
}
|
||||||
|
|
||||||
|
function updateSliderUIForDevice() {
|
||||||
|
var keyLabel = $('keyLabel');
|
||||||
|
var keyInput = $('keyInput');
|
||||||
|
var cardTitle = $('slider-card-title');
|
||||||
|
var hint = $('slider-hint');
|
||||||
|
var ipad = isIpadVerify();
|
||||||
|
if (keyLabel) keyLabel.textContent = ipad ? 'Code (iPad 登录验证码):' : 'Key (7765 服务方):';
|
||||||
|
if (keyInput) keyInput.placeholder = ipad ? '请输入 iPad 登录验证码' : '408449830';
|
||||||
|
if (cardTitle) cardTitle.textContent = ipad ? '验证码验证(iPad)' : '滑块验证(无数字时:先点「重新取码(Mac)」,手机停确认页再滑)';
|
||||||
|
if (hint) hint.textContent = ipad ? '扫码后在此输入 iPad 验证码,并填写 Data62、Original Ticket 后点开始验证' : '请先填写完整的参数信息';
|
||||||
|
}
|
||||||
|
|
||||||
function showSliderAreaAndFill(params) {
|
function showSliderAreaAndFill(params) {
|
||||||
var qrArea = $('qr-area');
|
var qrArea = $('qr-area');
|
||||||
var sliderArea = $('slider-area');
|
var sliderArea = $('slider-area');
|
||||||
if (!qrArea || !sliderArea) return;
|
if (!qrArea || !sliderArea) return;
|
||||||
qrArea.style.display = 'none';
|
qrArea.style.display = 'none';
|
||||||
sliderArea.style.display = 'block';
|
sliderArea.style.display = 'block';
|
||||||
|
updateSliderUIForDevice();
|
||||||
var keyInput = $('keyInput');
|
var keyInput = $('keyInput');
|
||||||
var data62Input = $('data62Input');
|
var data62Input = $('data62Input');
|
||||||
var ticketInput = $('originalTicketInput');
|
var ticketInput = $('originalTicketInput');
|
||||||
var btnVerify = $('slider-btn-verify');
|
var btnVerify = $('slider-btn-verify');
|
||||||
// 仅当有有效参数时填充,避免用 {} 清空已有数据
|
var ipad = isIpadVerify();
|
||||||
|
// 仅当有有效参数时填充;iPad 时第一项为 code 由用户输入不预填,Mac 时预填 key
|
||||||
var keyVal = params && (params.key || params.Key);
|
var keyVal = params && (params.key || params.Key);
|
||||||
var data62Val = params && params.data62;
|
var data62Val = params && params.data62;
|
||||||
var ticketVal = params && (params.ticket || params.original_ticket);
|
var ticketVal = params && (params.ticket || params.original_ticket);
|
||||||
if (keyVal !== undefined && keyVal !== '') if (keyInput) keyInput.value = keyVal;
|
if (!ipad && keyVal !== undefined && keyVal !== '') if (keyInput) keyInput.value = keyVal;
|
||||||
|
if (ipad && keyInput) keyInput.value = '';
|
||||||
if (data62Val !== undefined && data62Val !== '') if (data62Input) data62Input.value = data62Val;
|
if (data62Val !== undefined && data62Val !== '') if (data62Input) data62Input.value = data62Val;
|
||||||
if (ticketVal !== undefined && ticketVal !== '') if (ticketInput) ticketInput.value = ticketVal;
|
if (ticketVal !== undefined && ticketVal !== '') if (ticketInput) ticketInput.value = ticketVal;
|
||||||
function toggleVerifyBtn() {
|
function toggleVerifyBtn() {
|
||||||
@@ -705,9 +725,59 @@
|
|||||||
if (keyInput) keyInput.addEventListener('input', toggleVerifyBtn);
|
if (keyInput) keyInput.addEventListener('input', toggleVerifyBtn);
|
||||||
if (data62Input) data62Input.addEventListener('input', toggleVerifyBtn);
|
if (data62Input) data62Input.addEventListener('input', toggleVerifyBtn);
|
||||||
if (ticketInput) ticketInput.addEventListener('input', toggleVerifyBtn);
|
if (ticketInput) ticketInput.addEventListener('input', toggleVerifyBtn);
|
||||||
|
if (btnVerify) btnVerify.addEventListener('click', async function(e) {
|
||||||
|
e.preventDefault();
|
||||||
|
e.stopPropagation();
|
||||||
|
var accountKey = ($('key') && $('key').value || '').trim();
|
||||||
|
if (!accountKey) { log('请先填写账号唯一标识(key)', 'error'); return; }
|
||||||
|
var codeOrKey = (keyInput && keyInput.value || '').trim();
|
||||||
|
var data62 = (data62Input && data62Input.value || '').trim();
|
||||||
|
var ticket = (ticketInput && ticketInput.value || '').trim();
|
||||||
|
if (!data62 || !ticket) { log('请填写 Data62 和 Original Ticket', 'error'); return; }
|
||||||
|
if (isIpadVerify()) {
|
||||||
|
if (!codeOrKey) { log('请填写 iPad 登录验证码(Code)', 'error'); return; }
|
||||||
|
btnVerify.disabled = true;
|
||||||
|
try {
|
||||||
|
log('正在提交 iPad 验证码...');
|
||||||
|
var res = await fetch((API_BASE || '') + '/api/verify-code?key=' + encodeURIComponent(accountKey), {
|
||||||
|
method: 'POST',
|
||||||
|
headers: { 'Content-Type': 'application/json' },
|
||||||
|
body: JSON.stringify({ code: codeOrKey, data62: data62, ticket: ticket })
|
||||||
|
});
|
||||||
|
var data = await res.json().catch(function() { return { text: await res.text() }; });
|
||||||
|
if (res.ok) {
|
||||||
|
log('验证码验证结果: ' + JSON.stringify(data));
|
||||||
|
updateLoginState('验证码已提交,请检测扫码状态', 'pending');
|
||||||
|
} else {
|
||||||
|
var errMsg = data.detail != null ? (typeof data.detail === 'object' ? JSON.stringify(data.detail) : data.detail) : (data.text || data.error || res.status);
|
||||||
|
log('验证码验证失败: ' + errMsg, 'error');
|
||||||
|
}
|
||||||
|
} catch (err) {
|
||||||
|
log('验证码请求失败: ' + (err && err.message ? err.message : err), 'error');
|
||||||
|
}
|
||||||
|
btnVerify.disabled = false;
|
||||||
|
} else {
|
||||||
|
if (!codeOrKey) { log('请填写 Key (7765 服务方)', 'error'); return; }
|
||||||
|
btnVerify.disabled = true;
|
||||||
|
try {
|
||||||
|
log('正在提交滑块验证...');
|
||||||
|
var res = await fetch((API_BASE || '') + '/api/slider-verify', {
|
||||||
|
method: 'POST',
|
||||||
|
headers: { 'Content-Type': 'application/json' },
|
||||||
|
body: JSON.stringify({ key: codeOrKey, data62: data62, original_ticket: ticket })
|
||||||
|
});
|
||||||
|
var data = await res.json().catch(function() { return {}; });
|
||||||
|
log('滑块验证结果: ' + JSON.stringify(data));
|
||||||
|
if (res.ok && (data.ret === 0 || data.ok)) updateLoginState('滑块已提交,请检测扫码状态', 'pending');
|
||||||
|
} catch (err) {
|
||||||
|
log('滑块验证请求失败: ' + (err && err.message ? err.message : err), 'error');
|
||||||
|
}
|
||||||
|
btnVerify.disabled = false;
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
toggleVerifyBtn();
|
toggleVerifyBtn();
|
||||||
if (!state.sliderScriptLoaded) {
|
if (!ipad && !state.sliderScriptLoaded) {
|
||||||
state.sliderScriptLoaded = true;
|
state.sliderScriptLoaded = true;
|
||||||
var script = document.createElement('script');
|
var script = document.createElement('script');
|
||||||
script.type = 'module';
|
script.type = 'module';
|
||||||
@@ -1253,6 +1323,9 @@
|
|||||||
$('btn-show-slider') && $('btn-show-slider').addEventListener('click', function() {
|
$('btn-show-slider') && $('btn-show-slider').addEventListener('click', function() {
|
||||||
if (state.sliderParams) showSliderAreaAndFill(state.sliderParams);
|
if (state.sliderParams) showSliderAreaAndFill(state.sliderParams);
|
||||||
});
|
});
|
||||||
|
$('device') && $('device').addEventListener('change', function() {
|
||||||
|
if ($('slider-area') && $('slider-area').style.display !== 'none') updateSliderUIForDevice();
|
||||||
|
});
|
||||||
$('btn-check-scan').addEventListener('click', (e) => {
|
$('btn-check-scan').addEventListener('click', (e) => {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
onCheckScanStatus(false);
|
onCheckScanStatus(false);
|
||||||
|
|||||||
@@ -282,7 +282,8 @@
|
|||||||
const tab = document.querySelector('.mgmt-tab[data-panel="' + panelId + '"]');
|
const tab = document.querySelector('.mgmt-tab[data-panel="' + panelId + '"]');
|
||||||
if (tab) tab.classList.add('active');
|
if (tab) tab.classList.add('active');
|
||||||
if (panelId === 'panel-greeting') loadCustomerTagsForGreeting();
|
if (panelId === 'panel-greeting') loadCustomerTagsForGreeting();
|
||||||
if (panelId === 'panel-ai-reply') { loadAiReplyConfig(); loadAiReplyStatus(); loadCallbackStatus(); }
|
if (panelId === 'panel-push') loadPushTasks();
|
||||||
|
if (panelId === 'panel-ai-reply') { loadAiReplyConfig(); loadAiReplyStatus(); }
|
||||||
}
|
}
|
||||||
|
|
||||||
function _parseWxidLines(ta) {
|
function _parseWxidLines(ta) {
|
||||||
@@ -590,6 +591,21 @@
|
|||||||
} catch (e) { $('push-group-list').innerHTML = '<p class="small-label">加载失败</p>'; }
|
} catch (e) { $('push-group-list').innerHTML = '<p class="small-label">加载失败</p>'; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function loadPushTasks() {
|
||||||
|
const key = $('key').value.trim();
|
||||||
|
const el = $('push-task-list');
|
||||||
|
if (!el) return;
|
||||||
|
if (!key) { el.innerHTML = '<p class="small-label">请先登录。</p>'; return; }
|
||||||
|
try {
|
||||||
|
const data = await callApi('/api/push-tasks?key=' + encodeURIComponent(key) + '&limit=100');
|
||||||
|
const list = data.items || [];
|
||||||
|
el.innerHTML = list.length
|
||||||
|
? '<table class="mgmt-table"><thead><tr><th>时间</th><th>群组</th><th>状态</th><th>内容摘要</th></tr></thead><tbody>'
|
||||||
|
+ list.map(t => '<tr><td>' + escapeHtml((t.created_at || t.send_at || '-').toString().slice(0, 19)) + '</td><td>' + escapeHtml((t.group_id || '-').toString().slice(0, 12)) + '</td><td>' + escapeHtml((t.status || 'pending').toString()) + '</td><td>' + escapeHtml((t.content || '').toString().slice(0, 40)) + (t.content && t.content.length > 40 ? '…' : '') + '</td></tr>').join('') + '</tbody></table>'
|
||||||
|
: '<p class="small-label">暂无推送任务记录。</p>';
|
||||||
|
} catch (e) { el.innerHTML = '<p class="small-label">加载失败: ' + escapeHtml(e.message) + '</p>'; }
|
||||||
|
}
|
||||||
|
|
||||||
function fillPushSelects() {
|
function fillPushSelects() {
|
||||||
const key = $('key').value.trim();
|
const key = $('key').value.trim();
|
||||||
if (!key) return;
|
if (!key) return;
|
||||||
@@ -874,6 +890,7 @@
|
|||||||
const items = wxids.map(wxid => ({ to_user_name: wxid, content }));
|
const items = wxids.map(wxid => ({ to_user_name: wxid, content }));
|
||||||
await callApi('/api/send-batch', { method: 'POST', body: JSON.stringify({ key, items }) });
|
await callApi('/api/send-batch', { method: 'POST', body: JSON.stringify({ key, items }) });
|
||||||
await callApi('/api/push-tasks', { method: 'POST', body: JSON.stringify({ key, product_tag_id: tagId || '', group_id: groupId, content }) });
|
await callApi('/api/push-tasks', { method: 'POST', body: JSON.stringify({ key, product_tag_id: tagId || '', group_id: groupId, content }) });
|
||||||
|
loadPushTasks();
|
||||||
alert('已推送至 ' + items.length + ' 人');
|
alert('已推送至 ' + items.length + ' 人');
|
||||||
$('push-content').value = '';
|
$('push-content').value = '';
|
||||||
} catch (e) { alert(e.message); }
|
} catch (e) { alert(e.message); }
|
||||||
@@ -943,6 +960,7 @@
|
|||||||
loadGreetingTasks();
|
loadGreetingTasks();
|
||||||
loadProductTags();
|
loadProductTags();
|
||||||
loadPushGroups();
|
loadPushGroups();
|
||||||
|
loadPushTasks();
|
||||||
|
|
||||||
(function wsStatusCheck() {
|
(function wsStatusCheck() {
|
||||||
let wasConnected = false;
|
let wasConnected = false;
|
||||||
|
|||||||
Reference in New Issue
Block a user