diff --git a/logs/app.log b/logs/app.log index dc0a7e6..0da614a 100644 --- a/logs/app.log +++ b/logs/app.log @@ -1643,3 +1643,9 @@ sqlalchemy.exc.NoForeignKeysError: Could not determine join condition between pa 2025-10-10 23:53:07,815 INFO: 应用启动 [in /home/renjianbo/aitsc/config/base.py:82] 2025-10-11 00:01:46,182 INFO: 应用启动 [in /home/renjianbo/aitsc/config/base.py:82] 2025-10-11 00:06:23,151 INFO: 应用启动 [in /home/renjianbo/aitsc/config/base.py:82] +2025-10-11 00:11:46,608 INFO: 应用启动 [in /home/renjianbo/aitsc/config/base.py:82] +2025-10-11 00:21:06,973 INFO: 应用启动 [in /home/renjianbo/aitsc/config/base.py:82] +2025-10-11 00:28:13,533 INFO: 应用启动 [in /home/renjianbo/aitsc/config/base.py:82] +2025-10-11 00:34:59,638 INFO: 应用启动 [in /home/renjianbo/aitsc/config/base.py:82] +2025-10-11 00:39:17,904 INFO: 应用启动 [in /home/renjianbo/aitsc/config/base.py:82] +2025-10-11 00:46:17,612 INFO: 应用启动 [in /home/renjianbo/aitsc/config/base.py:82] diff --git a/logs/gunicorn.pid b/logs/gunicorn.pid index 423f4c0..565cb59 100644 --- a/logs/gunicorn.pid +++ b/logs/gunicorn.pid @@ -1 +1 @@ -28527 +15379 diff --git a/logs/gunicorn_access.log b/logs/gunicorn_access.log index 0797e99..fd3e762 100644 --- a/logs/gunicorn_access.log +++ b/logs/gunicorn_access.log @@ -11554,3 +11554,115 @@ 127.0.0.1 - - [11/Oct/2025:00:07:17 +0800] "GET / HTTP/1.1" 200 1404048 "http://localhost:5002/login" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 223912 127.0.0.1 - - [11/Oct/2025:00:07:19 +0800] "GET /static/js/interactions.js HTTP/1.1" 404 207 "http://localhost:5002/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 1076 127.0.0.1 - - [11/Oct/2025:00:07:20 +0800] "GET /api/check-login HTTP/1.1" 200 115 "http://localhost:5002/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 969 +127.0.0.1 - - [11/Oct/2025:00:11:52 +0800] "GET / HTTP/1.1" 200 1404048 "-" "python-requests/2.31.0" 570577 +127.0.0.1 - - [11/Oct/2025:00:11:52 +0800] "GET /static/js/interactions.js HTTP/1.1" 404 207 "-" "python-requests/2.31.0" 1249 +127.0.0.1 - - [11/Oct/2025:00:11:53 +0800] "GET / HTTP/1.1" 200 1404048 "http://localhost:5002/login" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 581808 +127.0.0.1 - - [11/Oct/2025:00:11:54 +0800] "GET /static/js/interactions.js HTTP/1.1" 404 207 "http://localhost:5002/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 5212 +127.0.0.1 - - [11/Oct/2025:00:11:55 +0800] "GET /api/check-login HTTP/1.1" 200 115 "http://localhost:5002/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 5871 +127.0.0.1 - - [11/Oct/2025:00:12:44 +0800] "POST / HTTP/1.1" 200 1407588 "http://localhost:5002/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 20646019 +127.0.0.1 - - [11/Oct/2025:00:12:46 +0800] "GET /static/js/interactions.js HTTP/1.1" 404 207 "http://localhost:5002/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 1215 +127.0.0.1 - - [11/Oct/2025:00:12:46 +0800] "GET /api/check-login HTTP/1.1" 200 115 "http://localhost:5002/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 1067 +127.0.0.1 - - [11/Oct/2025:00:12:57 +0800] "GET /history HTTP/1.1" 200 30318 "http://localhost:5002/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 110681 +127.0.0.1 - - [11/Oct/2025:00:12:58 +0800] "GET /api/history/templates HTTP/1.1" 200 28639 "http://localhost:5002/history" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 179443 +127.0.0.1 - - [11/Oct/2025:00:12:58 +0800] "GET /api/history/statistics HTTP/1.1" 200 216 "http://localhost:5002/history" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 483351 +127.0.0.1 - - [11/Oct/2025:00:12:58 +0800] "GET /api/history?page=1&per_page=20 HTTP/1.1" 200 6522 "http://localhost:5002/history" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 518128 +127.0.0.1 - - [11/Oct/2025:00:13:08 +0800] "GET /history HTTP/1.1" 200 30318 "http://localhost:5002/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 112649 +127.0.0.1 - - [11/Oct/2025:00:13:08 +0800] "GET /api/history?page=1&per_page=20 HTTP/1.1" 200 6522 "http://localhost:5002/history" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 166143 +127.0.0.1 - - [11/Oct/2025:00:13:08 +0800] "GET /api/history/statistics HTTP/1.1" 200 216 "http://localhost:5002/history" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 130784 +127.0.0.1 - - [11/Oct/2025:00:13:08 +0800] "GET /api/history/templates HTTP/1.1" 200 28639 "http://localhost:5002/history" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 178976 +127.0.0.1 - - [11/Oct/2025:00:13:19 +0800] "GET / HTTP/1.1" 200 1404048 "http://localhost:5002/history" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 221581 +127.0.0.1 - - [11/Oct/2025:00:13:20 +0800] "GET /static/js/interactions.js HTTP/1.1" 404 207 "http://localhost:5002/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 1043 +127.0.0.1 - - [11/Oct/2025:00:13:21 +0800] "GET /api/check-login HTTP/1.1" 200 115 "http://localhost:5002/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 907 +127.0.0.1 - - [11/Oct/2025:00:13:28 +0800] "GET /history HTTP/1.1" 200 30318 "http://localhost:5002/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 112258 +127.0.0.1 - - [11/Oct/2025:00:13:28 +0800] "GET /api/history?page=1&per_page=20 HTTP/1.1" 200 6522 "http://localhost:5002/history" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 160954 +127.0.0.1 - - [11/Oct/2025:00:13:28 +0800] "GET /api/history/statistics HTTP/1.1" 200 216 "http://localhost:5002/history" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 130858 +127.0.0.1 - - [11/Oct/2025:00:13:28 +0800] "GET /api/history/templates HTTP/1.1" 200 28639 "http://localhost:5002/history" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 159255 +127.0.0.1 - - [11/Oct/2025:00:13:46 +0800] "GET / HTTP/1.1" 200 1404048 "http://localhost:5002/history" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 240077 +127.0.0.1 - - [11/Oct/2025:00:13:48 +0800] "GET /static/js/interactions.js HTTP/1.1" 404 207 "http://localhost:5002/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 1694 +127.0.0.1 - - [11/Oct/2025:00:13:49 +0800] "GET /api/check-login HTTP/1.1" 200 115 "http://localhost:5002/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 868 +127.0.0.1 - - [11/Oct/2025:00:14:34 +0800] "POST / HTTP/1.1" 200 1408679 "http://localhost:5002/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 24721434 +127.0.0.1 - - [11/Oct/2025:00:14:36 +0800] "GET /static/js/interactions.js HTTP/1.1" 404 207 "http://localhost:5002/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 1625 +127.0.0.1 - - [11/Oct/2025:00:14:37 +0800] "GET /api/check-login HTTP/1.1" 200 115 "http://localhost:5002/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 934 +127.0.0.1 - - [11/Oct/2025:00:14:48 +0800] "GET /history HTTP/1.1" 200 30318 "http://localhost:5002/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 112718 +127.0.0.1 - - [11/Oct/2025:00:14:48 +0800] "GET /api/history?page=1&per_page=20 HTTP/1.1" 200 10139 "http://localhost:5002/history" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 158541 +127.0.0.1 - - [11/Oct/2025:00:14:48 +0800] "GET /api/history/statistics HTTP/1.1" 200 216 "http://localhost:5002/history" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 129788 +127.0.0.1 - - [11/Oct/2025:00:14:48 +0800] "GET /api/history/templates HTTP/1.1" 200 28639 "http://localhost:5002/history" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 161055 +127.0.0.1 - - [11/Oct/2025:00:15:40 +0800] "GET / HTTP/1.1" 200 1404048 "http://localhost:5002/history" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 200064 +127.0.0.1 - - [11/Oct/2025:00:15:41 +0800] "GET /static/js/interactions.js HTTP/1.1" 404 207 "http://localhost:5002/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 1042 +127.0.0.1 - - [11/Oct/2025:00:15:42 +0800] "GET /api/check-login HTTP/1.1" 200 115 "http://localhost:5002/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 878 +127.0.0.1 - - [11/Oct/2025:00:15:47 +0800] "GET /history HTTP/1.1" 200 30318 "http://localhost:5002/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 102989 +127.0.0.1 - - [11/Oct/2025:00:15:47 +0800] "GET /api/history?page=1&per_page=20 HTTP/1.1" 200 10139 "http://localhost:5002/history" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 158976 +127.0.0.1 - - [11/Oct/2025:00:15:47 +0800] "GET /api/history/statistics HTTP/1.1" 200 216 "http://localhost:5002/history" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 128644 +127.0.0.1 - - [11/Oct/2025:00:15:48 +0800] "GET /api/history/templates HTTP/1.1" 200 28639 "http://localhost:5002/history" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 158285 +127.0.0.1 - - [11/Oct/2025:00:18:47 +0800] "GET /favorites HTTP/1.1" 200 32705 "http://localhost:5002/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 498869 +127.0.0.1 - - [11/Oct/2025:00:18:47 +0800] "GET /static/js/interactions.js HTTP/1.1" 404 207 "http://localhost:5002/favorites" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 1473 +127.0.0.1 - - [11/Oct/2025:00:18:47 +0800] "GET /api/check-login HTTP/1.1" 200 115 "http://localhost:5002/favorites" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 1256 +127.0.0.1 - - [11/Oct/2025:00:18:47 +0800] "GET /api/favorites?page=1&per_page=10&search=&category=all HTTP/1.1" 200 8445 "http://localhost:5002/favorites" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 280704 +127.0.0.1 - - [11/Oct/2025:00:18:47 +0800] "GET /api/favorites/stats HTTP/1.1" 200 8488 "http://localhost:5002/favorites" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 313468 +127.0.0.1 - - [11/Oct/2025:00:21:32 +0800] "GET /history HTTP/1.1" 200 33566 "-" "python-requests/2.31.0" 18645 +127.0.0.1 - - [11/Oct/2025:00:21:33 +0800] "GET / HTTP/1.1" 200 1404048 "-" "python-requests/2.31.0" 535288 +123.139.95.145 - - [11/Oct/2025:00:22:17 +0800] "GET / HTTP/1.1" 200 1404048 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 2121549 +123.139.95.145 - - [11/Oct/2025:00:22:17 +0800] "GET /static/js/interactions.js HTTP/1.1" 404 207 "http://101.43.95.130:5002/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 5240 +123.139.95.145 - - [11/Oct/2025:00:22:18 +0800] "GET /api/check-login HTTP/1.1" 200 115 "http://101.43.95.130:5002/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 1093 +123.139.95.145 - - [11/Oct/2025:00:22:21 +0800] "GET /history HTTP/1.1" 200 33566 "http://101.43.95.130:5002/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 485385 +123.139.95.145 - - [11/Oct/2025:00:22:21 +0800] "GET /static/js/interactions.js HTTP/1.1" 404 207 "http://101.43.95.130:5002/history" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 1290 +123.139.95.145 - - [11/Oct/2025:00:22:21 +0800] "GET /api/check-login HTTP/1.1" 200 115 "http://101.43.95.130:5002/history" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 4595 +123.139.95.145 - - [11/Oct/2025:00:28:20 +0800] "GET /history HTTP/1.1" 200 41736 "http://101.43.95.130:5002/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 557356 +123.139.95.145 - - [11/Oct/2025:00:28:20 +0800] "GET /static/js/interactions.js HTTP/1.1" 404 207 "http://101.43.95.130:5002/history" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 5024 +123.139.95.145 - - [11/Oct/2025:00:28:20 +0800] "GET /api/check-login HTTP/1.1" 200 115 "http://101.43.95.130:5002/history" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 990 +123.139.95.145 - - [11/Oct/2025:00:28:34 +0800] "GET /history HTTP/1.1" 200 41736 "http://101.43.95.130:5002/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 129863 +123.139.95.145 - - [11/Oct/2025:00:28:34 +0800] "GET /static/js/interactions.js HTTP/1.1" 404 207 "http://101.43.95.130:5002/history" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 1129 +123.139.95.145 - - [11/Oct/2025:00:28:34 +0800] "GET /api/check-login HTTP/1.1" 200 115 "http://101.43.95.130:5002/history" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 4646 +127.0.0.1 - - [11/Oct/2025:00:29:02 +0800] "GET /history HTTP/1.1" 200 41736 "-" "python-requests/2.31.0" 17415 +123.139.95.145 - - [11/Oct/2025:00:29:17 +0800] "GET /favorites HTTP/1.1" 200 32705 "http://101.43.95.130:5002/history" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 483842 +123.139.95.145 - - [11/Oct/2025:00:29:18 +0800] "GET /static/js/interactions.js HTTP/1.1" 404 207 "http://101.43.95.130:5002/favorites" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 5152 +123.139.95.145 - - [11/Oct/2025:00:29:18 +0800] "GET /api/check-login HTTP/1.1" 200 115 "http://101.43.95.130:5002/favorites" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 947 +123.139.95.145 - - [11/Oct/2025:00:29:18 +0800] "GET /api/favorites/stats HTTP/1.1" 200 8488 "http://101.43.95.130:5002/favorites" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 182426 +123.139.95.145 - - [11/Oct/2025:00:29:18 +0800] "GET /api/favorites?page=1&per_page=10&search=&category=all HTTP/1.1" 200 8445 "http://101.43.95.130:5002/favorites" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 475937 +123.139.95.145 - - [11/Oct/2025:00:29:25 +0800] "GET /history HTTP/1.1" 200 41736 "http://101.43.95.130:5002/favorites" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 142507 +123.139.95.145 - - [11/Oct/2025:00:29:25 +0800] "GET /static/js/interactions.js HTTP/1.1" 404 207 "http://101.43.95.130:5002/history" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 1007 +123.139.95.145 - - [11/Oct/2025:00:29:25 +0800] "GET /api/check-login HTTP/1.1" 200 115 "http://101.43.95.130:5002/history" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 4671 +123.139.95.145 - - [11/Oct/2025:00:35:08 +0800] "GET /history HTTP/1.1" 200 48665 "http://101.43.95.130:5002/favorites" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 517092 +123.139.95.145 - - [11/Oct/2025:00:35:08 +0800] "GET /static/js/interactions.js HTTP/1.1" 404 207 "http://101.43.95.130:5002/history" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 6851 +123.139.95.145 - - [11/Oct/2025:00:35:08 +0800] "GET /api/check-login HTTP/1.1" 200 115 "http://101.43.95.130:5002/history" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 6170 +123.139.95.145 - - [11/Oct/2025:00:35:21 +0800] "GET /favorites HTTP/1.1" 200 32705 "http://101.43.95.130:5002/history" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 512450 +123.139.95.145 - - [11/Oct/2025:00:35:21 +0800] "GET /static/js/interactions.js HTTP/1.1" 404 207 "http://101.43.95.130:5002/favorites" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 5115 +123.139.95.145 - - [11/Oct/2025:00:35:21 +0800] "GET /api/check-login HTTP/1.1" 200 115 "http://101.43.95.130:5002/favorites" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 1083 +123.139.95.145 - - [11/Oct/2025:00:35:21 +0800] "GET /api/favorites/stats HTTP/1.1" 200 8488 "http://101.43.95.130:5002/favorites" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 496578 +123.139.95.145 - - [11/Oct/2025:00:35:21 +0800] "GET /api/favorites?page=1&per_page=10&search=&category=all HTTP/1.1" 200 8445 "http://101.43.95.130:5002/favorites" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 507231 +123.139.95.145 - - [11/Oct/2025:00:35:29 +0800] "GET /history HTTP/1.1" 200 48665 "http://101.43.95.130:5002/favorites" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 165908 +123.139.95.145 - - [11/Oct/2025:00:35:29 +0800] "GET /static/js/interactions.js HTTP/1.1" 404 207 "http://101.43.95.130:5002/history" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 1038 +123.139.95.145 - - [11/Oct/2025:00:35:29 +0800] "GET /api/check-login HTTP/1.1" 200 115 "http://101.43.95.130:5002/history" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 857 +3.130.96.91 - - [11/Oct/2025:00:35:34 +0800] "GET / HTTP/1.1" 200 1404048 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) Chrome/126.0.0.0 Safari/537.36" 833609 +123.139.95.145 - - [11/Oct/2025:00:35:56 +0800] "GET /favorites HTTP/1.1" 200 32705 "http://101.43.95.130:5002/history" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 141721 +123.139.95.145 - - [11/Oct/2025:00:35:56 +0800] "GET /static/js/interactions.js HTTP/1.1" 404 207 "http://101.43.95.130:5002/favorites" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 1297 +123.139.95.145 - - [11/Oct/2025:00:35:56 +0800] "GET /api/check-login HTTP/1.1" 200 115 "http://101.43.95.130:5002/favorites" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 816 +123.139.95.145 - - [11/Oct/2025:00:35:56 +0800] "GET /api/favorites/stats HTTP/1.1" 200 8488 "http://101.43.95.130:5002/favorites" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 154165 +123.139.95.145 - - [11/Oct/2025:00:35:57 +0800] "GET /api/favorites?page=1&per_page=10&search=&category=all HTTP/1.1" 200 8445 "http://101.43.95.130:5002/favorites" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 464452 +123.139.95.145 - - [11/Oct/2025:00:36:24 +0800] "GET /history HTTP/1.1" 200 48665 "http://101.43.95.130:5002/favorites" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 153086 +123.139.95.145 - - [11/Oct/2025:00:36:24 +0800] "GET /static/js/interactions.js HTTP/1.1" 404 207 "http://101.43.95.130:5002/history" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 966 +123.139.95.145 - - [11/Oct/2025:00:36:24 +0800] "GET /api/check-login HTTP/1.1" 200 115 "http://101.43.95.130:5002/history" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 1093 +3.130.96.91 - - [11/Oct/2025:00:36:57 +0800] "GET / HTTP/1.1" 200 1404048 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) Chrome/126.0.0.0 Safari/537.36" 729528 +123.139.95.145 - - [11/Oct/2025:00:37:47 +0800] "GET /favorites HTTP/1.1" 200 32705 "http://101.43.95.130:5002/history" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 139854 +123.139.95.145 - - [11/Oct/2025:00:37:47 +0800] "GET /static/js/interactions.js HTTP/1.1" 404 207 "http://101.43.95.130:5002/favorites" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 948 +123.139.95.145 - - [11/Oct/2025:00:37:48 +0800] "GET /api/check-login HTTP/1.1" 200 115 "http://101.43.95.130:5002/favorites" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 925 +123.139.95.145 - - [11/Oct/2025:00:37:48 +0800] "GET /api/favorites?page=1&per_page=10&search=&category=all HTTP/1.1" 200 8445 "http://101.43.95.130:5002/favorites" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 138033 +123.139.95.145 - - [11/Oct/2025:00:37:48 +0800] "GET /api/favorites/stats HTTP/1.1" 200 8488 "http://101.43.95.130:5002/favorites" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 153929 +123.139.95.145 - - [11/Oct/2025:00:37:57 +0800] "GET /history HTTP/1.1" 200 54246 "http://101.43.95.130:5002/favorites" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 149746 +123.139.95.145 - - [11/Oct/2025:00:37:57 +0800] "GET /static/js/interactions.js HTTP/1.1" 404 207 "http://101.43.95.130:5002/history" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 873 +123.139.95.145 - - [11/Oct/2025:00:37:57 +0800] "GET /api/check-login HTTP/1.1" 200 115 "http://101.43.95.130:5002/history" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 718 +123.139.95.145 - - [11/Oct/2025:00:39:19 +0800] "GET /history HTTP/1.1" 200 55644 "http://101.43.95.130:5002/favorites" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 558260 +123.139.95.145 - - [11/Oct/2025:00:39:19 +0800] "GET /static/js/interactions.js HTTP/1.1" 404 207 "http://101.43.95.130:5002/history" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 5012 +123.139.95.145 - - [11/Oct/2025:00:39:19 +0800] "GET /api/check-login HTTP/1.1" 200 115 "http://101.43.95.130:5002/history" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 4438 +127.0.0.1 - - [11/Oct/2025:00:39:54 +0800] "GET /history HTTP/1.1" 200 55644 "-" "python-requests/2.31.0" 18498 +123.139.95.145 - - [11/Oct/2025:00:40:48 +0800] "GET /favorites HTTP/1.1" 200 32705 "http://101.43.95.130:5002/history" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 149579 +123.139.95.145 - - [11/Oct/2025:00:40:48 +0800] "GET /static/js/interactions.js HTTP/1.1" 404 207 "http://101.43.95.130:5002/favorites" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 5152 +123.139.95.145 - - [11/Oct/2025:00:40:48 +0800] "GET /api/check-login HTTP/1.1" 200 115 "http://101.43.95.130:5002/favorites" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 5650 +123.139.95.145 - - [11/Oct/2025:00:40:48 +0800] "GET /api/favorites?page=1&per_page=10&search=&category=all HTTP/1.1" 200 8445 "http://101.43.95.130:5002/favorites" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 575654 +123.139.95.145 - - [11/Oct/2025:00:40:49 +0800] "GET /api/favorites/stats HTTP/1.1" 200 8488 "http://101.43.95.130:5002/favorites" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 681931 +123.139.95.145 - - [11/Oct/2025:00:40:53 +0800] "GET /history HTTP/1.1" 200 55644 "http://101.43.95.130:5002/favorites" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 181585 +123.139.95.145 - - [11/Oct/2025:00:40:53 +0800] "GET /static/js/interactions.js HTTP/1.1" 404 207 "http://101.43.95.130:5002/history" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 1346 +123.139.95.145 - - [11/Oct/2025:00:40:54 +0800] "GET /api/check-login HTTP/1.1" 200 115 "http://101.43.95.130:5002/history" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 824 +123.139.95.145 - - [11/Oct/2025:00:46:19 +0800] "GET /history HTTP/1.1" 200 58070 "http://101.43.95.130:5002/favorites" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 532051 +123.139.95.145 - - [11/Oct/2025:00:46:19 +0800] "GET /static/js/interactions.js HTTP/1.1" 404 207 "http://101.43.95.130:5002/history" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 5296 +123.139.95.145 - - [11/Oct/2025:00:46:20 +0800] "GET /api/check-login HTTP/1.1" 200 115 "http://101.43.95.130:5002/history" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36 Edg/141.0.0.0" 4870 diff --git a/logs/gunicorn_error.log b/logs/gunicorn_error.log index 71e07ba..f39465e 100644 --- a/logs/gunicorn_error.log +++ b/logs/gunicorn_error.log @@ -6309,3 +6309,201 @@ sqlalchemy.exc.NoForeignKeysError: Could not determine join condition between pa [2025-10-11 00:06:24 +0800] [28542] [INFO] Booting worker with pid: 28542 [2025-10-11 00:06:24 +0800] [28542] [INFO] 工作进程 28542 已启动 [2025-10-11 00:06:24 +0800] [28542] [INFO] 工作进程 28542 初始化完成 +[2025-10-11 00:11:25 +0800] [28538] [INFO] Worker exiting (pid: 28538) +[2025-10-11 00:11:25 +0800] [28527] [INFO] Handling signal: term +[2025-10-11 00:11:25 +0800] [28537] [INFO] Worker exiting (pid: 28537) +[2025-10-11 00:11:25 +0800] [28540] [INFO] Worker exiting (pid: 28540) +[2025-10-11 00:11:25 +0800] [28539] [INFO] Worker exiting (pid: 28539) +[2025-10-11 00:11:25 +0800] [28542] [INFO] Worker exiting (pid: 28542) +[2025-10-11 00:11:26 +0800] [28527] [INFO] Shutting down: Master +[2025-10-11 00:11:47 +0800] [23606] [INFO] Starting gunicorn 21.2.0 +[2025-10-11 00:11:47 +0800] [23606] [INFO] Gunicorn服务器启动中... +[2025-10-11 00:11:47 +0800] [23606] [INFO] Listening at: http://0.0.0.0:5002 (23606) +[2025-10-11 00:11:47 +0800] [23606] [INFO] Using worker: sync +[2025-10-11 00:11:47 +0800] [23606] [INFO] 工作进程 [booting] 即将启动 +[2025-10-11 00:11:47 +0800] [23619] [INFO] Booting worker with pid: 23619 +[2025-10-11 00:11:47 +0800] [23619] [INFO] 工作进程 23619 已启动 +[2025-10-11 00:11:47 +0800] [23619] [INFO] 工作进程 23619 初始化完成 +[2025-10-11 00:11:47 +0800] [23606] [INFO] 工作进程 [booting] 即将启动 +[2025-10-11 00:11:47 +0800] [23620] [INFO] Booting worker with pid: 23620 +[2025-10-11 00:11:47 +0800] [23620] [INFO] 工作进程 23620 已启动 +[2025-10-11 00:11:47 +0800] [23620] [INFO] 工作进程 23620 初始化完成 +[2025-10-11 00:11:47 +0800] [23606] [INFO] 工作进程 [booting] 即将启动 +[2025-10-11 00:11:47 +0800] [23621] [INFO] Booting worker with pid: 23621 +[2025-10-11 00:11:47 +0800] [23621] [INFO] 工作进程 23621 已启动 +[2025-10-11 00:11:47 +0800] [23621] [INFO] 工作进程 23621 初始化完成 +[2025-10-11 00:11:47 +0800] [23606] [INFO] 工作进程 [booting] 即将启动 +[2025-10-11 00:11:47 +0800] [23622] [INFO] Booting worker with pid: 23622 +[2025-10-11 00:11:47 +0800] [23622] [INFO] 工作进程 23622 已启动 +[2025-10-11 00:11:47 +0800] [23622] [INFO] 工作进程 23622 初始化完成 +[2025-10-11 00:11:47 +0800] [23606] [INFO] 工作进程 [booting] 即将启动 +[2025-10-11 00:11:47 +0800] [23626] [INFO] Booting worker with pid: 23626 +[2025-10-11 00:11:47 +0800] [23626] [INFO] 工作进程 23626 已启动 +[2025-10-11 00:11:47 +0800] [23626] [INFO] 工作进程 23626 初始化完成 +[2025-10-11 00:17:57 +0800] [23606] [CRITICAL] WORKER TIMEOUT (pid:23622) +[2025-10-11 00:17:57 +0800] [23622] [INFO] 工作进程 23622 异常退出 +[2025-10-11 00:17:57 +0800] [23622] [INFO] Worker exiting (pid: 23622) +[2025-10-11 00:17:57 +0800] [23606] [ERROR] Worker (pid:23622) exited with code 1 +[2025-10-11 00:17:57 +0800] [23606] [ERROR] Worker (pid:23622) exited with code 1. +[2025-10-11 00:17:57 +0800] [23606] [INFO] 工作进程 [booting] 即将启动 +[2025-10-11 00:17:57 +0800] [17811] [INFO] Booting worker with pid: 17811 +[2025-10-11 00:17:57 +0800] [17811] [INFO] 工作进程 17811 已启动 +[2025-10-11 00:17:57 +0800] [17811] [INFO] 工作进程 17811 初始化完成 +[2025-10-11 00:20:44 +0800] [17811] [INFO] Worker exiting (pid: 17811) +[2025-10-11 00:20:44 +0800] [23620] [INFO] Worker exiting (pid: 23620) +[2025-10-11 00:20:44 +0800] [23606] [INFO] Handling signal: term +[2025-10-11 00:20:44 +0800] [23619] [INFO] Worker exiting (pid: 23619) +[2025-10-11 00:20:44 +0800] [23621] [INFO] Worker exiting (pid: 23621) +[2025-10-11 00:20:44 +0800] [23626] [INFO] Worker exiting (pid: 23626) +[2025-10-11 00:20:44 +0800] [23606] [ERROR] Worker (pid:17811) was sent SIGTERM! +[2025-10-11 00:20:44 +0800] [23606] [ERROR] Worker (pid:23620) was sent SIGTERM! +[2025-10-11 00:20:45 +0800] [23606] [INFO] Shutting down: Master +[2025-10-11 00:21:07 +0800] [11523] [INFO] Starting gunicorn 21.2.0 +[2025-10-11 00:21:07 +0800] [11523] [INFO] Gunicorn服务器启动中... +[2025-10-11 00:21:07 +0800] [11523] [INFO] Listening at: http://0.0.0.0:5002 (11523) +[2025-10-11 00:21:07 +0800] [11523] [INFO] Using worker: sync +[2025-10-11 00:21:07 +0800] [11523] [INFO] 工作进程 [booting] 即将启动 +[2025-10-11 00:21:07 +0800] [11531] [INFO] Booting worker with pid: 11531 +[2025-10-11 00:21:07 +0800] [11531] [INFO] 工作进程 11531 已启动 +[2025-10-11 00:21:07 +0800] [11531] [INFO] 工作进程 11531 初始化完成 +[2025-10-11 00:21:07 +0800] [11523] [INFO] 工作进程 [booting] 即将启动 +[2025-10-11 00:21:07 +0800] [11532] [INFO] Booting worker with pid: 11532 +[2025-10-11 00:21:07 +0800] [11532] [INFO] 工作进程 11532 已启动 +[2025-10-11 00:21:07 +0800] [11532] [INFO] 工作进程 11532 初始化完成 +[2025-10-11 00:21:07 +0800] [11523] [INFO] 工作进程 [booting] 即将启动 +[2025-10-11 00:21:07 +0800] [11533] [INFO] Booting worker with pid: 11533 +[2025-10-11 00:21:07 +0800] [11533] [INFO] 工作进程 11533 已启动 +[2025-10-11 00:21:07 +0800] [11533] [INFO] 工作进程 11533 初始化完成 +[2025-10-11 00:21:08 +0800] [11523] [INFO] 工作进程 [booting] 即将启动 +[2025-10-11 00:21:08 +0800] [11534] [INFO] Booting worker with pid: 11534 +[2025-10-11 00:21:08 +0800] [11534] [INFO] 工作进程 11534 已启动 +[2025-10-11 00:21:08 +0800] [11534] [INFO] 工作进程 11534 初始化完成 +[2025-10-11 00:21:08 +0800] [11523] [INFO] 工作进程 [booting] 即将启动 +[2025-10-11 00:21:08 +0800] [11535] [INFO] Booting worker with pid: 11535 +[2025-10-11 00:21:08 +0800] [11535] [INFO] 工作进程 11535 已启动 +[2025-10-11 00:21:08 +0800] [11535] [INFO] 工作进程 11535 初始化完成 +[2025-10-11 00:27:42 +0800] [11523] [INFO] Handling signal: term +[2025-10-11 00:27:42 +0800] [11531] [INFO] Worker exiting (pid: 11531) +[2025-10-11 00:27:42 +0800] [11534] [INFO] Worker exiting (pid: 11534) +[2025-10-11 00:27:42 +0800] [11532] [INFO] Worker exiting (pid: 11532) +[2025-10-11 00:27:42 +0800] [11533] [INFO] Worker exiting (pid: 11533) +[2025-10-11 00:27:42 +0800] [11535] [INFO] Worker exiting (pid: 11535) +[2025-10-11 00:27:43 +0800] [11523] [INFO] Shutting down: Master +[2025-10-11 00:28:14 +0800] [6784] [INFO] Starting gunicorn 21.2.0 +[2025-10-11 00:28:14 +0800] [6784] [INFO] Gunicorn服务器启动中... +[2025-10-11 00:28:14 +0800] [6784] [INFO] Listening at: http://0.0.0.0:5002 (6784) +[2025-10-11 00:28:14 +0800] [6784] [INFO] Using worker: sync +[2025-10-11 00:28:14 +0800] [6784] [INFO] 工作进程 [booting] 即将启动 +[2025-10-11 00:28:14 +0800] [6807] [INFO] Booting worker with pid: 6807 +[2025-10-11 00:28:14 +0800] [6807] [INFO] 工作进程 6807 已启动 +[2025-10-11 00:28:14 +0800] [6807] [INFO] 工作进程 6807 初始化完成 +[2025-10-11 00:28:14 +0800] [6784] [INFO] 工作进程 [booting] 即将启动 +[2025-10-11 00:28:14 +0800] [6808] [INFO] Booting worker with pid: 6808 +[2025-10-11 00:28:14 +0800] [6808] [INFO] 工作进程 6808 已启动 +[2025-10-11 00:28:14 +0800] [6784] [INFO] 工作进程 [booting] 即将启动 +[2025-10-11 00:28:14 +0800] [6808] [INFO] 工作进程 6808 初始化完成 +[2025-10-11 00:28:14 +0800] [6809] [INFO] Booting worker with pid: 6809 +[2025-10-11 00:28:14 +0800] [6809] [INFO] 工作进程 6809 已启动 +[2025-10-11 00:28:14 +0800] [6809] [INFO] 工作进程 6809 初始化完成 +[2025-10-11 00:28:14 +0800] [6784] [INFO] 工作进程 [booting] 即将启动 +[2025-10-11 00:28:14 +0800] [6810] [INFO] Booting worker with pid: 6810 +[2025-10-11 00:28:14 +0800] [6810] [INFO] 工作进程 6810 已启动 +[2025-10-11 00:28:14 +0800] [6810] [INFO] 工作进程 6810 初始化完成 +[2025-10-11 00:28:14 +0800] [6784] [INFO] 工作进程 [booting] 即将启动 +[2025-10-11 00:28:14 +0800] [6811] [INFO] Booting worker with pid: 6811 +[2025-10-11 00:28:14 +0800] [6811] [INFO] 工作进程 6811 已启动 +[2025-10-11 00:28:14 +0800] [6811] [INFO] 工作进程 6811 初始化完成 +[2025-10-11 00:34:34 +0800] [6807] [INFO] Worker exiting (pid: 6807) +[2025-10-11 00:34:34 +0800] [6784] [INFO] Handling signal: term +[2025-10-11 00:34:34 +0800] [6809] [INFO] Worker exiting (pid: 6809) +[2025-10-11 00:34:34 +0800] [6811] [INFO] Worker exiting (pid: 6811) +[2025-10-11 00:34:34 +0800] [6808] [INFO] Worker exiting (pid: 6808) +[2025-10-11 00:34:34 +0800] [6810] [INFO] Worker exiting (pid: 6810) +[2025-10-11 00:34:35 +0800] [6784] [INFO] Shutting down: Master +[2025-10-11 00:35:00 +0800] [1932] [INFO] Starting gunicorn 21.2.0 +[2025-10-11 00:35:00 +0800] [1932] [INFO] Gunicorn服务器启动中... +[2025-10-11 00:35:00 +0800] [1932] [INFO] Listening at: http://0.0.0.0:5002 (1932) +[2025-10-11 00:35:00 +0800] [1932] [INFO] Using worker: sync +[2025-10-11 00:35:00 +0800] [1932] [INFO] 工作进程 [booting] 即将启动 +[2025-10-11 00:35:00 +0800] [1952] [INFO] Booting worker with pid: 1952 +[2025-10-11 00:35:00 +0800] [1952] [INFO] 工作进程 1952 已启动 +[2025-10-11 00:35:00 +0800] [1952] [INFO] 工作进程 1952 初始化完成 +[2025-10-11 00:35:00 +0800] [1932] [INFO] 工作进程 [booting] 即将启动 +[2025-10-11 00:35:00 +0800] [1953] [INFO] Booting worker with pid: 1953 +[2025-10-11 00:35:00 +0800] [1953] [INFO] 工作进程 1953 已启动 +[2025-10-11 00:35:00 +0800] [1953] [INFO] 工作进程 1953 初始化完成 +[2025-10-11 00:35:00 +0800] [1932] [INFO] 工作进程 [booting] 即将启动 +[2025-10-11 00:35:00 +0800] [1954] [INFO] Booting worker with pid: 1954 +[2025-10-11 00:35:00 +0800] [1954] [INFO] 工作进程 1954 已启动 +[2025-10-11 00:35:00 +0800] [1954] [INFO] 工作进程 1954 初始化完成 +[2025-10-11 00:35:00 +0800] [1932] [INFO] 工作进程 [booting] 即将启动 +[2025-10-11 00:35:00 +0800] [1955] [INFO] Booting worker with pid: 1955 +[2025-10-11 00:35:00 +0800] [1955] [INFO] 工作进程 1955 已启动 +[2025-10-11 00:35:00 +0800] [1955] [INFO] 工作进程 1955 初始化完成 +[2025-10-11 00:35:00 +0800] [1932] [INFO] 工作进程 [booting] 即将启动 +[2025-10-11 00:35:00 +0800] [1956] [INFO] Booting worker with pid: 1956 +[2025-10-11 00:35:00 +0800] [1956] [INFO] 工作进程 1956 已启动 +[2025-10-11 00:35:00 +0800] [1956] [INFO] 工作进程 1956 初始化完成 +[2025-10-11 00:38:23 +0800] [1954] [INFO] Worker exiting (pid: 1954) +[2025-10-11 00:38:23 +0800] [1932] [INFO] Handling signal: term +[2025-10-11 00:38:23 +0800] [1952] [INFO] Worker exiting (pid: 1952) +[2025-10-11 00:38:23 +0800] [1955] [INFO] Worker exiting (pid: 1955) +[2025-10-11 00:38:23 +0800] [1953] [INFO] Worker exiting (pid: 1953) +[2025-10-11 00:38:23 +0800] [1956] [INFO] Worker exiting (pid: 1956) +[2025-10-11 00:38:25 +0800] [1932] [INFO] Shutting down: Master +[2025-10-11 00:39:18 +0800] [28745] [INFO] Starting gunicorn 21.2.0 +[2025-10-11 00:39:18 +0800] [28745] [INFO] Gunicorn服务器启动中... +[2025-10-11 00:39:18 +0800] [28745] [INFO] Listening at: http://0.0.0.0:5002 (28745) +[2025-10-11 00:39:18 +0800] [28745] [INFO] Using worker: sync +[2025-10-11 00:39:18 +0800] [28745] [INFO] 工作进程 [booting] 即将启动 +[2025-10-11 00:39:18 +0800] [28755] [INFO] Booting worker with pid: 28755 +[2025-10-11 00:39:18 +0800] [28755] [INFO] 工作进程 28755 已启动 +[2025-10-11 00:39:18 +0800] [28755] [INFO] 工作进程 28755 初始化完成 +[2025-10-11 00:39:18 +0800] [28745] [INFO] 工作进程 [booting] 即将启动 +[2025-10-11 00:39:18 +0800] [28756] [INFO] Booting worker with pid: 28756 +[2025-10-11 00:39:18 +0800] [28756] [INFO] 工作进程 28756 已启动 +[2025-10-11 00:39:18 +0800] [28756] [INFO] 工作进程 28756 初始化完成 +[2025-10-11 00:39:18 +0800] [28745] [INFO] 工作进程 [booting] 即将启动 +[2025-10-11 00:39:18 +0800] [28757] [INFO] Booting worker with pid: 28757 +[2025-10-11 00:39:18 +0800] [28757] [INFO] 工作进程 28757 已启动 +[2025-10-11 00:39:18 +0800] [28757] [INFO] 工作进程 28757 初始化完成 +[2025-10-11 00:39:18 +0800] [28745] [INFO] 工作进程 [booting] 即将启动 +[2025-10-11 00:39:18 +0800] [28758] [INFO] Booting worker with pid: 28758 +[2025-10-11 00:39:18 +0800] [28758] [INFO] 工作进程 28758 已启动 +[2025-10-11 00:39:18 +0800] [28758] [INFO] 工作进程 28758 初始化完成 +[2025-10-11 00:39:18 +0800] [28745] [INFO] 工作进程 [booting] 即将启动 +[2025-10-11 00:39:18 +0800] [28759] [INFO] Booting worker with pid: 28759 +[2025-10-11 00:39:18 +0800] [28759] [INFO] 工作进程 28759 已启动 +[2025-10-11 00:39:18 +0800] [28759] [INFO] 工作进程 28759 初始化完成 +[2025-10-11 00:40:18 +0800] [28759] [WARNING] Invalid request from ip=3.130.96.91: Invalid HTTP request line: 'SSH-2.0-Go' +[2025-10-11 00:44:41 +0800] [28756] [INFO] Worker exiting (pid: 28756) +[2025-10-11 00:44:41 +0800] [28745] [INFO] Handling signal: term +[2025-10-11 00:44:41 +0800] [28755] [INFO] Worker exiting (pid: 28755) +[2025-10-11 00:44:41 +0800] [28757] [INFO] Worker exiting (pid: 28757) +[2025-10-11 00:44:41 +0800] [28758] [INFO] Worker exiting (pid: 28758) +[2025-10-11 00:44:41 +0800] [28759] [INFO] Worker exiting (pid: 28759) +[2025-10-11 00:44:42 +0800] [28745] [INFO] Shutting down: Master +[2025-10-11 00:46:18 +0800] [15379] [INFO] Starting gunicorn 21.2.0 +[2025-10-11 00:46:18 +0800] [15379] [INFO] Gunicorn服务器启动中... +[2025-10-11 00:46:18 +0800] [15379] [INFO] Listening at: http://0.0.0.0:5002 (15379) +[2025-10-11 00:46:18 +0800] [15379] [INFO] Using worker: sync +[2025-10-11 00:46:18 +0800] [15379] [INFO] 工作进程 [booting] 即将启动 +[2025-10-11 00:46:18 +0800] [15397] [INFO] Booting worker with pid: 15397 +[2025-10-11 00:46:18 +0800] [15397] [INFO] 工作进程 15397 已启动 +[2025-10-11 00:46:18 +0800] [15397] [INFO] 工作进程 15397 初始化完成 +[2025-10-11 00:46:18 +0800] [15379] [INFO] 工作进程 [booting] 即将启动 +[2025-10-11 00:46:18 +0800] [15398] [INFO] Booting worker with pid: 15398 +[2025-10-11 00:46:18 +0800] [15398] [INFO] 工作进程 15398 已启动 +[2025-10-11 00:46:18 +0800] [15398] [INFO] 工作进程 15398 初始化完成 +[2025-10-11 00:46:18 +0800] [15379] [INFO] 工作进程 [booting] 即将启动 +[2025-10-11 00:46:18 +0800] [15399] [INFO] Booting worker with pid: 15399 +[2025-10-11 00:46:18 +0800] [15399] [INFO] 工作进程 15399 已启动 +[2025-10-11 00:46:18 +0800] [15399] [INFO] 工作进程 15399 初始化完成 +[2025-10-11 00:46:18 +0800] [15379] [INFO] 工作进程 [booting] 即将启动 +[2025-10-11 00:46:18 +0800] [15400] [INFO] Booting worker with pid: 15400 +[2025-10-11 00:46:18 +0800] [15400] [INFO] 工作进程 15400 已启动 +[2025-10-11 00:46:18 +0800] [15400] [INFO] 工作进程 15400 初始化完成 +[2025-10-11 00:46:18 +0800] [15379] [INFO] 工作进程 [booting] 即将启动 +[2025-10-11 00:46:18 +0800] [15401] [INFO] Booting worker with pid: 15401 +[2025-10-11 00:46:18 +0800] [15401] [INFO] 工作进程 15401 已启动 +[2025-10-11 00:46:18 +0800] [15401] [INFO] 工作进程 15401 初始化完成 diff --git a/src/flask_prompt_master/static/css/style.css b/src/flask_prompt_master/static/css/style.css index 98ed16a..a1b57a4 100644 --- a/src/flask_prompt_master/static/css/style.css +++ b/src/flask_prompt_master/static/css/style.css @@ -603,13 +603,490 @@ nav a:hover { } } -/* 响应式设计 */ +/* 侧边栏优化 */ +.sidebar { + background: white; + border-radius: var(--radius-xl); + box-shadow: var(--shadow-lg); + padding: var(--spacing-6); + margin-bottom: var(--spacing-6); + border: 1px solid var(--neutral-200); + position: sticky; + top: var(--spacing-6); +} + +.sidebar-header { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: var(--spacing-4); + padding-bottom: var(--spacing-4); + border-bottom: 2px solid var(--neutral-100); +} + +.sidebar-title { + font-size: var(--font-size-lg); + font-weight: 600; + color: var(--primary-color); + margin: 0; +} + +.sidebar-toggle { + background: none; + border: none; + color: var(--neutral-500); + cursor: pointer; + padding: var(--spacing-2); + border-radius: var(--radius-md); + transition: all 0.3s ease; +} + +.sidebar-toggle:hover { + background: var(--neutral-100); + color: var(--primary-color); +} + +/* 搜索框优化 */ +.search-container { + position: relative; + margin-bottom: var(--spacing-4); +} + +.search-input { + width: 100%; + padding: var(--spacing-3) var(--spacing-4) var(--spacing-3) 2.5rem; + border: 2px solid var(--neutral-300); + border-radius: var(--radius-lg); + font-size: var(--font-size-sm); + transition: all 0.3s ease; + background: var(--neutral-50); +} + +.search-input:focus { + border-color: var(--primary-color); + background: white; + box-shadow: 0 0 0 3px rgba(30, 58, 138, 0.1); +} + +.search-icon { + position: absolute; + left: var(--spacing-3); + top: 50%; + transform: translateY(-50%); + color: var(--neutral-400); + font-size: var(--font-size-sm); +} + +/* 筛选标签优化 */ +.filter-tabs { + display: flex; + flex-wrap: wrap; + gap: var(--spacing-2); + margin-bottom: var(--spacing-4); +} + +.filter-tab { + padding: var(--spacing-2) var(--spacing-3); + background: var(--neutral-100); + border: 1px solid var(--neutral-300); + border-radius: var(--radius-lg); + color: var(--neutral-600); + font-size: var(--font-size-sm); + cursor: pointer; + transition: all 0.3s ease; +} + +.filter-tab:hover { + background: var(--primary-color); + color: white; + transform: translateY(-1px); +} + +.filter-tab.active { + background: var(--gradient-primary); + color: white; + border-color: var(--primary-color); + box-shadow: var(--shadow-md); +} + +/* 模板网格优化 */ +.template-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); + gap: var(--spacing-4); + margin-bottom: var(--spacing-6); +} + +.template-card { + background: white; + border: 2px solid var(--neutral-200); + border-radius: var(--radius-xl); + padding: var(--spacing-4); + cursor: pointer; + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); + position: relative; + overflow: hidden; +} + +.template-card::before { + content: ''; + position: absolute; + top: 0; + left: 0; + right: 0; + height: 4px; + background: var(--gradient-primary); + transform: scaleX(0); + transition: transform 0.3s ease; +} + +.template-card:hover::before { + transform: scaleX(1); +} + +.template-card:hover { + transform: translateY(-4px); + box-shadow: var(--shadow-xl); + border-color: var(--primary-color); +} + +.template-card.selected { + border-color: var(--primary-color); + background: linear-gradient(135deg, rgba(30, 58, 138, 0.05) 0%, rgba(99, 102, 241, 0.05) 100%); +} + +.template-card h3 { + font-size: var(--font-size-base); + font-weight: 600; + color: var(--neutral-800); + margin: 0 0 var(--spacing-2) 0; + transition: color 0.3s ease; +} + +.template-card:hover h3 { + color: var(--primary-color); +} + +.template-card p { + font-size: var(--font-size-sm); + color: var(--neutral-600); + margin: 0; + line-height: 1.5; +} + +/* 双栏对比布局 */ +.comparison-layout { + display: grid; + grid-template-columns: 1fr 1fr; + gap: var(--spacing-6); + margin-top: var(--spacing-6); +} + +.comparison-panel { + background: white; + border-radius: var(--radius-xl); + box-shadow: var(--shadow-lg); + padding: var(--spacing-6); + border: 1px solid var(--neutral-200); +} + +.comparison-header { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: var(--spacing-4); + padding-bottom: var(--spacing-3); + border-bottom: 2px solid var(--neutral-100); +} + +.comparison-title { + font-size: var(--font-size-lg); + font-weight: 600; + color: var(--neutral-800); + margin: 0; +} + +.copy-button { + background: var(--gradient-primary); + color: white; + border: none; + padding: var(--spacing-2) var(--spacing-4); + border-radius: var(--radius-md); + font-size: var(--font-size-sm); + cursor: pointer; + transition: all 0.3s ease; +} + +.copy-button:hover { + transform: translateY(-1px); + box-shadow: var(--shadow-md); +} + +/* 底部功能区 */ +.bottom-function-area { + background: white; + border-radius: var(--radius-xl); + box-shadow: var(--shadow-lg); + padding: var(--spacing-6); + margin-top: var(--spacing-8); + border: 1px solid var(--neutral-200); +} + +.function-header { + text-align: center; + margin-bottom: var(--spacing-6); +} + +.function-title { + font-size: var(--font-size-xl); + font-weight: 600; + color: var(--primary-color); + margin: 0 0 var(--spacing-2) 0; +} + +.function-subtitle { + font-size: var(--font-size-sm); + color: var(--neutral-600); + margin: 0; +} + +.quick-templates { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); + gap: var(--spacing-4); + margin-bottom: var(--spacing-6); +} + +.quick-template { + background: var(--neutral-50); + border: 2px solid var(--neutral-200); + border-radius: var(--radius-lg); + padding: var(--spacing-4); + text-align: center; + cursor: pointer; + transition: all 0.3s ease; +} + +.quick-template:hover { + background: var(--primary-color); + color: white; + transform: translateY(-2px); + box-shadow: var(--shadow-md); +} + +.quick-template h4 { + font-size: var(--font-size-base); + font-weight: 600; + margin: 0 0 var(--spacing-2) 0; +} + +.quick-template p { + font-size: var(--font-size-sm); + margin: 0; + opacity: 0.8; +} + +/* 统计信息 */ +.stats-container { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); + gap: var(--spacing-4); +} + +.stat-item { + text-align: center; + padding: var(--spacing-4); + background: var(--neutral-50); + border-radius: var(--radius-lg); + border: 1px solid var(--neutral-200); +} + +.stat-number { + font-size: var(--font-size-2xl); + font-weight: 700; + color: var(--primary-color); + margin: 0 0 var(--spacing-1) 0; +} + +.stat-label { + font-size: var(--font-size-sm); + color: var(--neutral-600); + margin: 0; +} + +/* 移动端优化 */ @media (max-width: 768px) { .container { - padding: 10px; + padding: var(--spacing-4); } + /* 侧边栏移动端适配 */ + .sidebar { + position: relative; + top: 0; + margin-bottom: var(--spacing-4); + } + + /* 模板网格移动端 */ + .template-grid { + grid-template-columns: 1fr; + gap: var(--spacing-3); + } + + .template-card { + padding: var(--spacing-4); + } + + /* 双栏对比移动端 */ + .comparison-layout { + grid-template-columns: 1fr; + gap: var(--spacing-4); + } + + .comparison-panel { + padding: var(--spacing-4); + } + + /* 底部功能区移动端 */ + .quick-templates { + grid-template-columns: 1fr; + gap: var(--spacing-3); + } + + .stats-container { + grid-template-columns: repeat(2, 1fr); + gap: var(--spacing-3); + } + + /* 导航栏移动端 */ + nav { + padding: var(--spacing-3); + margin-bottom: var(--spacing-4); + } + + nav a { + margin-right: var(--spacing-3); + padding: var(--spacing-2) var(--spacing-3); + font-size: var(--font-size-sm); + } + + /* 按钮移动端 */ + .btn { + padding: var(--spacing-3) var(--spacing-4); + font-size: var(--font-size-sm); + } + + /* 表单移动端 */ + .form-control { + padding: var(--spacing-3); + font-size: var(--font-size-base); + } + + /* 卡片移动端 */ .prompt-card { - padding: 1rem; + padding: var(--spacing-4); + margin-bottom: var(--spacing-4); + } + + .feature { + padding: var(--spacing-4); + margin-bottom: var(--spacing-4); + } +} + +/* 平板端优化 */ +@media (min-width: 769px) and (max-width: 1024px) { + .container { + padding: var(--spacing-6); + } + + /* 模板网格平板端 */ + .template-grid { + grid-template-columns: repeat(2, 1fr); + gap: var(--spacing-4); + } + + /* 双栏对比平板端 */ + .comparison-layout { + grid-template-columns: 1fr; + gap: var(--spacing-4); + } + + /* 底部功能区平板端 */ + .quick-templates { + grid-template-columns: repeat(2, 1fr); + gap: var(--spacing-4); + } + + .stats-container { + grid-template-columns: repeat(3, 1fr); + gap: var(--spacing-4); + } +} + +/* 桌面端优化 */ +@media (min-width: 1025px) { + .container { + max-width: 1400px; + padding: var(--spacing-8); + } + + /* 主布局桌面端 */ + .main-layout { + display: grid; + grid-template-columns: 300px 1fr; + gap: var(--spacing-8); + align-items: start; + } + + /* 侧边栏桌面端 */ + .sidebar { + position: sticky; + top: var(--spacing-8); + max-height: calc(100vh - var(--spacing-16)); + overflow-y: auto; + } + + /* 模板网格桌面端 */ + .template-grid { + grid-template-columns: repeat(3, 1fr); + gap: var(--spacing-6); + } + + /* 双栏对比桌面端 */ + .comparison-layout { + grid-template-columns: 1fr 1fr; + gap: var(--spacing-8); + } + + /* 底部功能区桌面端 */ + .quick-templates { + grid-template-columns: repeat(4, 1fr); + gap: var(--spacing-6); + } + + .stats-container { + grid-template-columns: repeat(4, 1fr); + gap: var(--spacing-6); + } +} + +/* 大屏幕优化 */ +@media (min-width: 1440px) { + .container { + max-width: 1600px; + } + + .main-layout { + grid-template-columns: 350px 1fr; + gap: var(--spacing-12); + } + + .template-grid { + grid-template-columns: repeat(4, 1fr); + } + + .quick-templates { + grid-template-columns: repeat(5, 1fr); } } diff --git a/src/flask_prompt_master/static/js/interactions.js b/src/flask_prompt_master/static/js/interactions.js index 210878d..7d7bae4 100644 --- a/src/flask_prompt_master/static/js/interactions.js +++ b/src/flask_prompt_master/static/js/interactions.js @@ -30,6 +30,14 @@ function initializeInteractions() { // 打字机效果 initializeTypewriterEffect(); + // 第三周新功能 + initializeSidebarToggle(); + initializeTemplateSelection(); + initializeComparisonView(); + initializeQuickTemplates(); + initializeStatsDisplay(); + initializeResponsiveLayout(); + console.log('🎨 交互增强功能已初始化'); } @@ -339,6 +347,247 @@ style.textContent = ` `; document.head.appendChild(style); +/** + * 侧边栏切换功能 + */ +function initializeSidebarToggle() { + const sidebarToggle = document.querySelector('.sidebar-toggle'); + const sidebar = document.querySelector('.sidebar'); + + if (sidebarToggle && sidebar) { + sidebarToggle.addEventListener('click', function() { + sidebar.classList.toggle('collapsed'); + this.classList.toggle('active'); + + // 保存状态到本地存储 + localStorage.setItem('sidebarCollapsed', sidebar.classList.contains('collapsed')); + }); + + // 恢复状态 + const isCollapsed = localStorage.getItem('sidebarCollapsed') === 'true'; + if (isCollapsed) { + sidebar.classList.add('collapsed'); + sidebarToggle.classList.add('active'); + } + } +} + +/** + * 模板选择功能 + */ +function initializeTemplateSelection() { + const templateCards = document.querySelectorAll('.template-card'); + + templateCards.forEach(card => { + card.addEventListener('click', function() { + // 移除其他选中状态 + templateCards.forEach(c => c.classList.remove('selected')); + + // 添加选中状态 + this.classList.add('selected'); + + // 获取模板ID + const templateId = this.dataset.templateId; + if (templateId) { + // 更新隐藏输入框 + const hiddenInput = document.querySelector('input[name="template_id"]'); + if (hiddenInput) { + hiddenInput.value = templateId; + } + + // 触发选择事件 + this.dispatchEvent(new CustomEvent('templateSelected', { + detail: { templateId, templateName: this.querySelector('h3').textContent } + })); + } + }); + }); +} + +/** + * 双栏对比视图 + */ +function initializeComparisonView() { + // 创建对比视图 + window.showComparison = function(originalText, generatedText) { + const comparisonContainer = document.querySelector('.comparison-layout'); + if (!comparisonContainer) return; + + comparisonContainer.innerHTML = ` +
正在加载历史记录...
-查看和管理您的提示词生成历史
+正在加载历史记录...
+