完成前两周优化

This commit is contained in:
rjb
2025-10-07 23:49:40 +08:00
parent 28f06836dd
commit 1fba655620
6 changed files with 1838 additions and 59 deletions

View File

@@ -1294,3 +1294,86 @@ OSError: [Errno 5] Input/output error
2025-10-07 02:10:44,604 INFO: 应用启动 [in /home/renjianbo/aitsc/config/base.py:82]
2025-10-07 02:16:42,545 INFO: 应用启动 [in /home/renjianbo/aitsc/config/base.py:82]
2025-10-07 23:02:53,076 INFO: 应用启动 [in /home/renjianbo/aitsc/config/base.py:82]
2025-10-07 23:18:04,104 INFO: 应用启动 [in /home/renjianbo/aitsc/config/base.py:82]
2025-10-07 23:18:15,871 ERROR: Exception on / [GET] [in /home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py:1414]
Traceback (most recent call last):
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 2190, in wsgi_app
response = self.full_dispatch_request()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 1486, in full_dispatch_request
rv = self.handle_user_exception(e)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask_cors/extension.py", line 176, in wrapped_function
return cors_after_request(app.make_response(f(*args, **kwargs)))
^^^^^^^^^^^^^^^^^^
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 1484, in full_dispatch_request
rv = self.dispatch_request()
^^^^^^^^^^^^^^^^^^^^^^^
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 1469, in dispatch_request
return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/renjianbo/aitsc/src/flask_prompt_master/routes/routes.py", line 172, in index
return render_template('generate.html', form=form, prompt=None, templates=templates,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/templating.py", line 151, in render_template
return _render(app, template, context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/templating.py", line 132, in _render
rv = template.render(context)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/jinja2/environment.py", line 1295, in render
self.environment.handle_exception()
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/jinja2/environment.py", line 942, in handle_exception
raise rewrite_traceback_stack(source=source)
File "/home/renjianbo/aitsc/src/flask_prompt_master/templates/generate.html", line 1, in top-level template code
{% extends "base.html" %}
File "/home/renjianbo/aitsc/src/flask_prompt_master/templates/base.html", line 477, in top-level template code
{% block content %}{% endblock %}
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/renjianbo/aitsc/src/flask_prompt_master/templates/generate.html", line 203, in block 'content'
{{ template.content[:200] }}{% if template.content|length > 200 %}...{% endif %}
^^^^^^^^^^^^^^^^^^^^^^^^^
jinja2.exceptions.UndefinedError: 'src.flask_prompt_master.models.models.PromptTemplate object' has no attribute 'content'
2025-10-07 23:18:24,389 ERROR: Exception on / [GET] [in /home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py:1414]
Traceback (most recent call last):
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 2190, in wsgi_app
response = self.full_dispatch_request()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 1486, in full_dispatch_request
rv = self.handle_user_exception(e)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask_cors/extension.py", line 176, in wrapped_function
return cors_after_request(app.make_response(f(*args, **kwargs)))
^^^^^^^^^^^^^^^^^^
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 1484, in full_dispatch_request
rv = self.dispatch_request()
^^^^^^^^^^^^^^^^^^^^^^^
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 1469, in dispatch_request
return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/renjianbo/aitsc/src/flask_prompt_master/routes/routes.py", line 172, in index
return render_template('generate.html', form=form, prompt=None, templates=templates,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/templating.py", line 151, in render_template
return _render(app, template, context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/templating.py", line 132, in _render
rv = template.render(context)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/jinja2/environment.py", line 1295, in render
self.environment.handle_exception()
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/jinja2/environment.py", line 942, in handle_exception
raise rewrite_traceback_stack(source=source)
File "/home/renjianbo/aitsc/src/flask_prompt_master/templates/generate.html", line 1, in top-level template code
{% extends "base.html" %}
File "/home/renjianbo/aitsc/src/flask_prompt_master/templates/base.html", line 477, in top-level template code
{% block content %}{% endblock %}
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/renjianbo/aitsc/src/flask_prompt_master/templates/generate.html", line 203, in block 'content'
{{ template.content[:200] }}{% if template.content|length > 200 %}...{% endif %}
^^^^^^^^^^^^^^^^^^^^^^^^^
jinja2.exceptions.UndefinedError: 'src.flask_prompt_master.models.models.PromptTemplate object' has no attribute 'content'
2025-10-07 23:19:50,178 INFO: 应用启动 [in /home/renjianbo/aitsc/config/base.py:82]
2025-10-07 23:25:36,182 INFO: 应用启动 [in /home/renjianbo/aitsc/config/base.py:82]
2025-10-07 23:38:14,991 INFO: 应用启动 [in /home/renjianbo/aitsc/config/base.py:82]
2025-10-07 23:47:17,992 INFO: 应用启动 [in /home/renjianbo/aitsc/config/base.py:82]

View File

@@ -1 +1 @@
15478
25390

View File

@@ -11399,3 +11399,35 @@
123.139.95.170 - - [07/Oct/2025:23:04:58 +0800] "GET /api/profile/stats HTTP/1.1" 200 104 "http://101.43.95.130:5002/profile" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36 Edg/140.0.0.0" 169337
123.139.95.170 - - [07/Oct/2025:23:05:00 +0800] "GET / HTTP/1.1" 200 624367 "http://101.43.95.130:5002/profile" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36 Edg/140.0.0.0" 690365
123.139.95.170 - - [07/Oct/2025:23:05:01 +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/140.0.0.0 Safari/537.36 Edg/140.0.0.0" 1077
123.139.95.170 - - [07/Oct/2025:23:07:37 +0800] "GET /meal-planning HTTP/1.1" 200 31971 "http://101.43.95.130:5002/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36 Edg/140.0.0.0" 127827
123.139.95.170 - - [07/Oct/2025:23:07:37 +0800] "GET /api/check-login HTTP/1.1" 200 35 "http://101.43.95.130:5002/meal-planning" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36 Edg/140.0.0.0" 754
123.139.95.170 - - [07/Oct/2025:23:07:45 +0800] "GET / HTTP/1.1" 200 624367 "http://101.43.95.130:5002/meal-planning" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36 Edg/140.0.0.0" 735646
123.139.95.170 - - [07/Oct/2025:23:07:45 +0800] "GET /api/check-login HTTP/1.1" 200 35 "http://101.43.95.130:5002/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36 Edg/140.0.0.0" 1116
123.139.95.170 - - [07/Oct/2025:23:08:06 +0800] "GET /expert_generate HTTP/1.1" 200 29885 "http://101.43.95.130:5002/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36 Edg/140.0.0.0" 140990
123.139.95.170 - - [07/Oct/2025:23:08:06 +0800] "GET /api/check-login HTTP/1.1" 200 35 "http://101.43.95.130:5002/expert_generate" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36 Edg/140.0.0.0" 750
123.139.95.170 - - [07/Oct/2025:23:08:09 +0800] "GET / HTTP/1.1" 200 624367 "http://101.43.95.130:5002/meal-planning" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36 Edg/140.0.0.0" 714879
123.139.95.170 - - [07/Oct/2025:23:08:57 +0800] "GET /register HTTP/1.1" 200 23092 "http://101.43.95.130:5002/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36 Edg/140.0.0.0" 253702
123.139.95.170 - - [07/Oct/2025:23:08:57 +0800] "GET /api/check-login HTTP/1.1" 200 35 "http://101.43.95.130:5002/register" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36 Edg/140.0.0.0" 783
123.139.95.170 - - [07/Oct/2025:23:09:03 +0800] "GET /login HTTP/1.1" 200 19939 "http://101.43.95.130:5002/register" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36 Edg/140.0.0.0" 111149
123.139.95.170 - - [07/Oct/2025:23:09:03 +0800] "GET /api/check-login HTTP/1.1" 200 35 "http://101.43.95.130:5002/login" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36 Edg/140.0.0.0" 752
123.139.95.170 - - [07/Oct/2025:23:09:06 +0800] "POST /api/login HTTP/1.1" 200 174 "http://101.43.95.130:5002/login" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36 Edg/140.0.0.0" 252242
123.139.95.170 - - [07/Oct/2025:23:09:09 +0800] "GET / HTTP/1.1" 200 624367 "http://101.43.95.130:5002/login" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36 Edg/140.0.0.0" 770897
123.139.95.170 - - [07/Oct/2025:23:09:10 +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/140.0.0.0 Safari/537.36 Edg/140.0.0.0" 844
123.139.95.170 - - [07/Oct/2025:23:18:16 +0800] "GET / HTTP/1.1" 500 265 "http://101.43.95.130:5002/login" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36 Edg/140.0.0.0" 665705
123.139.95.170 - - [07/Oct/2025:23:18:24 +0800] "GET / HTTP/1.1" 500 265 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36 Edg/140.0.0.0" 549021
123.139.95.170 - - [07/Oct/2025:23:19:52 +0800] "GET / HTTP/1.1" 200 1378979 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36 Edg/140.0.0.0" 1748598
123.139.95.170 - - [07/Oct/2025:23:19:53 +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/140.0.0.0 Safari/537.36 Edg/140.0.0.0" 4642
123.139.95.170 - - [07/Oct/2025:23:25:39 +0800] "GET / HTTP/1.1" 200 1392263 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36 Edg/140.0.0.0" 1732540
123.139.95.170 - - [07/Oct/2025:23:25:39 +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/140.0.0.0 Safari/537.36 Edg/140.0.0.0" 4869
123.139.95.170 - - [07/Oct/2025:23:27:34 +0800] "POST / HTTP/1.1" 200 1397094 "http://101.43.95.130:5002/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36 Edg/140.0.0.0" 28804797
123.139.95.170 - - [07/Oct/2025:23:27:34 +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/140.0.0.0 Safari/537.36 Edg/140.0.0.0" 4662
123.139.95.170 - - [07/Oct/2025:23:31:02 +0800] "GET /expert_generate HTTP/1.1" 200 29885 "http://101.43.95.130:5002/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36 Edg/140.0.0.0" 451512
123.139.95.170 - - [07/Oct/2025:23:31:02 +0800] "GET /api/check-login HTTP/1.1" 200 115 "http://101.43.95.130:5002/expert_generate" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36 Edg/140.0.0.0" 4770
123.139.95.170 - - [07/Oct/2025:23:39:10 +0800] "GET / HTTP/1.1" 200 1396182 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36 Edg/140.0.0.0" 1883227
123.139.95.170 - - [07/Oct/2025:23:39:11 +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/140.0.0.0 Safari/537.36 Edg/140.0.0.0" 1145
123.139.95.170 - - [07/Oct/2025:23:39:27 +0800] "POST / HTTP/1.1" 200 1401033 "http://101.43.95.130:5002/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36 Edg/140.0.0.0" 29029514
123.139.95.170 - - [07/Oct/2025:23:39:27 +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/140.0.0.0 Safari/537.36 Edg/140.0.0.0" 798
123.139.95.170 - - [07/Oct/2025:23:47:20 +0800] "GET / HTTP/1.1" 200 1403945 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36 Edg/140.0.0.0" 1925586
123.139.95.170 - - [07/Oct/2025:23:47:21 +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/140.0.0.0 Safari/537.36 Edg/140.0.0.0" 4754
123.139.95.170 - - [07/Oct/2025:23:48:33 +0800] "POST / HTTP/1.1" 200 1408886 "http://101.43.95.130:5002/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36 Edg/140.0.0.0" 28116176
123.139.95.170 - - [07/Oct/2025:23:48:33 +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/140.0.0.0 Safari/537.36 Edg/140.0.0.0" 1178

View File

@@ -5560,3 +5560,262 @@ OSError: [Errno 5] Input/output error
[2025-10-07 23:02:54 +0800] [15497] [INFO] Booting worker with pid: 15497
[2025-10-07 23:02:54 +0800] [15497] [INFO] 工作进程 15497 已启动
[2025-10-07 23:02:54 +0800] [15497] [INFO] 工作进程 15497 初始化完成
[2025-10-07 23:17:42 +0800] [15493] [INFO] Worker exiting (pid: 15493)
[2025-10-07 23:17:42 +0800] [15478] [INFO] Handling signal: term
[2025-10-07 23:17:42 +0800] [15494] [INFO] Worker exiting (pid: 15494)
[2025-10-07 23:17:42 +0800] [15495] [INFO] Worker exiting (pid: 15495)
[2025-10-07 23:17:42 +0800] [15496] [INFO] Worker exiting (pid: 15496)
[2025-10-07 23:17:42 +0800] [15497] [INFO] Worker exiting (pid: 15497)
[2025-10-07 23:17:43 +0800] [15478] [INFO] Shutting down: Master
[2025-10-07 23:18:04 +0800] [29409] [INFO] Starting gunicorn 21.2.0
[2025-10-07 23:18:04 +0800] [29409] [INFO] Gunicorn服务器启动中...
[2025-10-07 23:18:04 +0800] [29409] [INFO] Listening at: http://0.0.0.0:5002 (29409)
[2025-10-07 23:18:04 +0800] [29409] [INFO] Using worker: sync
[2025-10-07 23:18:04 +0800] [29409] [INFO] 工作进程 [booting] 即将启动
[2025-10-07 23:18:04 +0800] [29428] [INFO] Booting worker with pid: 29428
[2025-10-07 23:18:04 +0800] [29428] [INFO] 工作进程 29428 已启动
[2025-10-07 23:18:04 +0800] [29428] [INFO] 工作进程 29428 初始化完成
[2025-10-07 23:18:04 +0800] [29409] [INFO] 工作进程 [booting] 即将启动
[2025-10-07 23:18:04 +0800] [29429] [INFO] Booting worker with pid: 29429
[2025-10-07 23:18:04 +0800] [29429] [INFO] 工作进程 29429 已启动
[2025-10-07 23:18:04 +0800] [29429] [INFO] 工作进程 29429 初始化完成
[2025-10-07 23:18:04 +0800] [29409] [INFO] 工作进程 [booting] 即将启动
[2025-10-07 23:18:04 +0800] [29430] [INFO] Booting worker with pid: 29430
[2025-10-07 23:18:04 +0800] [29430] [INFO] 工作进程 29430 已启动
[2025-10-07 23:18:04 +0800] [29430] [INFO] 工作进程 29430 初始化完成
[2025-10-07 23:18:05 +0800] [29409] [INFO] 工作进程 [booting] 即将启动
[2025-10-07 23:18:05 +0800] [29431] [INFO] Booting worker with pid: 29431
[2025-10-07 23:18:05 +0800] [29431] [INFO] 工作进程 29431 已启动
[2025-10-07 23:18:05 +0800] [29431] [INFO] 工作进程 29431 初始化完成
[2025-10-07 23:18:05 +0800] [29409] [INFO] 工作进程 [booting] 即将启动
[2025-10-07 23:18:05 +0800] [29432] [INFO] Booting worker with pid: 29432
[2025-10-07 23:18:05 +0800] [29432] [INFO] 工作进程 29432 已启动
[2025-10-07 23:18:05 +0800] [29432] [INFO] 工作进程 29432 初始化完成
[2025-10-07 23:18:15,871] ERROR in app: Exception on / [GET]
Traceback (most recent call last):
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 2190, in wsgi_app
response = self.full_dispatch_request()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 1486, in full_dispatch_request
rv = self.handle_user_exception(e)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask_cors/extension.py", line 176, in wrapped_function
return cors_after_request(app.make_response(f(*args, **kwargs)))
^^^^^^^^^^^^^^^^^^
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 1484, in full_dispatch_request
rv = self.dispatch_request()
^^^^^^^^^^^^^^^^^^^^^^^
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 1469, in dispatch_request
return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/renjianbo/aitsc/src/flask_prompt_master/routes/routes.py", line 172, in index
return render_template('generate.html', form=form, prompt=None, templates=templates,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/templating.py", line 151, in render_template
return _render(app, template, context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/templating.py", line 132, in _render
rv = template.render(context)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/jinja2/environment.py", line 1295, in render
self.environment.handle_exception()
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/jinja2/environment.py", line 942, in handle_exception
raise rewrite_traceback_stack(source=source)
File "/home/renjianbo/aitsc/src/flask_prompt_master/templates/generate.html", line 1, in top-level template code
{% extends "base.html" %}
File "/home/renjianbo/aitsc/src/flask_prompt_master/templates/base.html", line 477, in top-level template code
{% block content %}{% endblock %}
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/renjianbo/aitsc/src/flask_prompt_master/templates/generate.html", line 203, in block 'content'
{{ template.content[:200] }}{% if template.content|length > 200 %}...{% endif %}
^^^^^^^^^^^^^^^^^^^^^^^^^
jinja2.exceptions.UndefinedError: 'src.flask_prompt_master.models.models.PromptTemplate object' has no attribute 'content'
[2025-10-07 23:18:24,389] ERROR in app: Exception on / [GET]
Traceback (most recent call last):
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 2190, in wsgi_app
response = self.full_dispatch_request()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 1486, in full_dispatch_request
rv = self.handle_user_exception(e)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask_cors/extension.py", line 176, in wrapped_function
return cors_after_request(app.make_response(f(*args, **kwargs)))
^^^^^^^^^^^^^^^^^^
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 1484, in full_dispatch_request
rv = self.dispatch_request()
^^^^^^^^^^^^^^^^^^^^^^^
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 1469, in dispatch_request
return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/renjianbo/aitsc/src/flask_prompt_master/routes/routes.py", line 172, in index
return render_template('generate.html', form=form, prompt=None, templates=templates,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/templating.py", line 151, in render_template
return _render(app, template, context)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/templating.py", line 132, in _render
rv = template.render(context)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/jinja2/environment.py", line 1295, in render
self.environment.handle_exception()
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/jinja2/environment.py", line 942, in handle_exception
raise rewrite_traceback_stack(source=source)
File "/home/renjianbo/aitsc/src/flask_prompt_master/templates/generate.html", line 1, in top-level template code
{% extends "base.html" %}
File "/home/renjianbo/aitsc/src/flask_prompt_master/templates/base.html", line 477, in top-level template code
{% block content %}{% endblock %}
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/renjianbo/aitsc/src/flask_prompt_master/templates/generate.html", line 203, in block 'content'
{{ template.content[:200] }}{% if template.content|length > 200 %}...{% endif %}
^^^^^^^^^^^^^^^^^^^^^^^^^
jinja2.exceptions.UndefinedError: 'src.flask_prompt_master.models.models.PromptTemplate object' has no attribute 'content'
[2025-10-07 23:19:22 +0800] [29428] [INFO] Worker exiting (pid: 29428)
[2025-10-07 23:19:22 +0800] [29409] [INFO] Handling signal: term
[2025-10-07 23:19:22 +0800] [29429] [INFO] Worker exiting (pid: 29429)
[2025-10-07 23:19:22 +0800] [29431] [INFO] Worker exiting (pid: 29431)
[2025-10-07 23:19:22 +0800] [29430] [INFO] Worker exiting (pid: 29430)
[2025-10-07 23:19:49 +0800] [29432] [INFO] Worker exiting (pid: 29432)
[2025-10-07 23:19:49 +0800] [29409] [INFO] Shutting down: Master
[2025-10-07 23:19:50 +0800] [31143] [INFO] Starting gunicorn 21.2.0
[2025-10-07 23:19:50 +0800] [31143] [INFO] Gunicorn服务器启动中...
[2025-10-07 23:19:50 +0800] [31143] [INFO] Listening at: http://0.0.0.0:5002 (31143)
[2025-10-07 23:19:50 +0800] [31143] [INFO] Using worker: sync
[2025-10-07 23:19:50 +0800] [31143] [INFO] 工作进程 [booting] 即将启动
[2025-10-07 23:19:50 +0800] [31156] [INFO] Booting worker with pid: 31156
[2025-10-07 23:19:50 +0800] [31156] [INFO] 工作进程 31156 已启动
[2025-10-07 23:19:50 +0800] [31156] [INFO] 工作进程 31156 初始化完成
[2025-10-07 23:19:51 +0800] [31143] [INFO] 工作进程 [booting] 即将启动
[2025-10-07 23:19:51 +0800] [31159] [INFO] Booting worker with pid: 31159
[2025-10-07 23:19:51 +0800] [31159] [INFO] 工作进程 31159 已启动
[2025-10-07 23:19:51 +0800] [31159] [INFO] 工作进程 31159 初始化完成
[2025-10-07 23:19:51 +0800] [31143] [INFO] 工作进程 [booting] 即将启动
[2025-10-07 23:19:51 +0800] [31164] [INFO] Booting worker with pid: 31164
[2025-10-07 23:19:51 +0800] [31164] [INFO] 工作进程 31164 已启动
[2025-10-07 23:19:51 +0800] [31164] [INFO] 工作进程 31164 初始化完成
[2025-10-07 23:19:51 +0800] [31143] [INFO] 工作进程 [booting] 即将启动
[2025-10-07 23:19:51 +0800] [31167] [INFO] Booting worker with pid: 31167
[2025-10-07 23:19:51 +0800] [31167] [INFO] 工作进程 31167 已启动
[2025-10-07 23:19:51 +0800] [31167] [INFO] 工作进程 31167 初始化完成
[2025-10-07 23:19:51 +0800] [31143] [INFO] 工作进程 [booting] 即将启动
[2025-10-07 23:19:51 +0800] [31168] [INFO] Booting worker with pid: 31168
[2025-10-07 23:19:51 +0800] [31168] [INFO] 工作进程 31168 已启动
[2025-10-07 23:19:51 +0800] [31168] [INFO] 工作进程 31168 初始化完成
[2025-10-07 23:21:52 +0800] [31143] [CRITICAL] WORKER TIMEOUT (pid:31168)
[2025-10-07 23:21:52 +0800] [31168] [INFO] 工作进程 31168 异常退出
[2025-10-07 23:21:52 +0800] [31168] [INFO] Worker exiting (pid: 31168)
[2025-10-07 23:21:52 +0800] [31143] [ERROR] Worker (pid:31168) exited with code 1
[2025-10-07 23:21:52 +0800] [31143] [ERROR] Worker (pid:31168) exited with code 1.
[2025-10-07 23:21:52 +0800] [31143] [INFO] 工作进程 [booting] 即将启动
[2025-10-07 23:21:52 +0800] [23141] [INFO] Booting worker with pid: 23141
[2025-10-07 23:21:52 +0800] [23141] [INFO] 工作进程 23141 已启动
[2025-10-07 23:21:52 +0800] [23141] [INFO] 工作进程 23141 初始化完成
[2025-10-07 23:25:14 +0800] [31143] [INFO] Handling signal: term
[2025-10-07 23:25:14 +0800] [23141] [INFO] Worker exiting (pid: 23141)
[2025-10-07 23:25:14 +0800] [31159] [INFO] Worker exiting (pid: 31159)
[2025-10-07 23:25:14 +0800] [31156] [INFO] Worker exiting (pid: 31156)
[2025-10-07 23:25:14 +0800] [31167] [INFO] Worker exiting (pid: 31167)
[2025-10-07 23:25:14 +0800] [31164] [INFO] Worker exiting (pid: 31164)
[2025-10-07 23:25:15 +0800] [31143] [INFO] Shutting down: Master
[2025-10-07 23:25:36 +0800] [16866] [INFO] Starting gunicorn 21.2.0
[2025-10-07 23:25:36 +0800] [16866] [INFO] Gunicorn服务器启动中...
[2025-10-07 23:25:36 +0800] [16866] [INFO] Listening at: http://0.0.0.0:5002 (16866)
[2025-10-07 23:25:36 +0800] [16866] [INFO] Using worker: sync
[2025-10-07 23:25:36 +0800] [16866] [INFO] 工作进程 [booting] 即将启动
[2025-10-07 23:25:36 +0800] [16879] [INFO] Booting worker with pid: 16879
[2025-10-07 23:25:36 +0800] [16879] [INFO] 工作进程 16879 已启动
[2025-10-07 23:25:36 +0800] [16879] [INFO] 工作进程 16879 初始化完成
[2025-10-07 23:25:37 +0800] [16866] [INFO] 工作进程 [booting] 即将启动
[2025-10-07 23:25:37 +0800] [16880] [INFO] Booting worker with pid: 16880
[2025-10-07 23:25:37 +0800] [16880] [INFO] 工作进程 16880 已启动
[2025-10-07 23:25:37 +0800] [16880] [INFO] 工作进程 16880 初始化完成
[2025-10-07 23:25:37 +0800] [16866] [INFO] 工作进程 [booting] 即将启动
[2025-10-07 23:25:37 +0800] [16881] [INFO] Booting worker with pid: 16881
[2025-10-07 23:25:37 +0800] [16881] [INFO] 工作进程 16881 已启动
[2025-10-07 23:25:37 +0800] [16881] [INFO] 工作进程 16881 初始化完成
[2025-10-07 23:25:37 +0800] [16866] [INFO] 工作进程 [booting] 即将启动
[2025-10-07 23:25:37 +0800] [16866] [INFO] 工作进程 [booting] 即将启动
[2025-10-07 23:25:37 +0800] [16882] [INFO] Booting worker with pid: 16882
[2025-10-07 23:25:37 +0800] [16882] [INFO] 工作进程 16882 已启动
[2025-10-07 23:25:37 +0800] [16882] [INFO] 工作进程 16882 初始化完成
[2025-10-07 23:25:37 +0800] [16883] [INFO] Booting worker with pid: 16883
[2025-10-07 23:25:37 +0800] [16883] [INFO] 工作进程 16883 已启动
[2025-10-07 23:25:37 +0800] [16883] [INFO] 工作进程 16883 初始化完成
[2025-10-07 23:33:04 +0800] [16866] [CRITICAL] WORKER TIMEOUT (pid:16879)
[2025-10-07 23:33:04 +0800] [16866] [CRITICAL] WORKER TIMEOUT (pid:16883)
[2025-10-07 23:33:04 +0800] [16879] [INFO] 工作进程 16879 异常退出
[2025-10-07 23:33:04 +0800] [16883] [INFO] 工作进程 16883 异常退出
[2025-10-07 23:33:04 +0800] [16879] [INFO] Worker exiting (pid: 16879)
[2025-10-07 23:33:04 +0800] [16883] [INFO] Worker exiting (pid: 16883)
[2025-10-07 23:33:05 +0800] [16866] [ERROR] Worker (pid:16883) exited with code 1
[2025-10-07 23:33:05 +0800] [16866] [ERROR] Worker (pid:16883) exited with code 1.
[2025-10-07 23:33:05 +0800] [16866] [INFO] 工作进程 [booting] 即将启动
[2025-10-07 23:33:05 +0800] [11555] [INFO] Booting worker with pid: 11555
[2025-10-07 23:33:05 +0800] [11555] [INFO] 工作进程 11555 已启动
[2025-10-07 23:33:05 +0800] [11555] [INFO] 工作进程 11555 初始化完成
[2025-10-07 23:33:05 +0800] [16866] [ERROR] Worker (pid:16879) was sent SIGKILL! Perhaps out of memory?
[2025-10-07 23:33:05 +0800] [16866] [INFO] 工作进程 [booting] 即将启动
[2025-10-07 23:33:05 +0800] [11556] [INFO] Booting worker with pid: 11556
[2025-10-07 23:33:05 +0800] [11556] [INFO] 工作进程 11556 已启动
[2025-10-07 23:33:05 +0800] [11556] [INFO] 工作进程 11556 初始化完成
[2025-10-07 23:37:52 +0800] [11555] [INFO] Worker exiting (pid: 11555)
[2025-10-07 23:37:52 +0800] [16866] [INFO] Handling signal: term
[2025-10-07 23:37:52 +0800] [16880] [INFO] Worker exiting (pid: 16880)
[2025-10-07 23:37:52 +0800] [11556] [INFO] Worker exiting (pid: 11556)
[2025-10-07 23:37:52 +0800] [16881] [INFO] Worker exiting (pid: 16881)
[2025-10-07 23:37:52 +0800] [16882] [INFO] Worker exiting (pid: 16882)
[2025-10-07 23:37:54 +0800] [16866] [INFO] Shutting down: Master
[2025-10-07 23:38:15 +0800] [5800] [INFO] Starting gunicorn 21.2.0
[2025-10-07 23:38:15 +0800] [5800] [INFO] Gunicorn服务器启动中...
[2025-10-07 23:38:15 +0800] [5800] [INFO] Listening at: http://0.0.0.0:5002 (5800)
[2025-10-07 23:38:15 +0800] [5800] [INFO] Using worker: sync
[2025-10-07 23:38:15 +0800] [5800] [INFO] 工作进程 [booting] 即将启动
[2025-10-07 23:38:15 +0800] [5817] [INFO] Booting worker with pid: 5817
[2025-10-07 23:38:15 +0800] [5817] [INFO] 工作进程 5817 已启动
[2025-10-07 23:38:15 +0800] [5817] [INFO] 工作进程 5817 初始化完成
[2025-10-07 23:38:15 +0800] [5800] [INFO] 工作进程 [booting] 即将启动
[2025-10-07 23:38:15 +0800] [5818] [INFO] Booting worker with pid: 5818
[2025-10-07 23:38:15 +0800] [5818] [INFO] 工作进程 5818 已启动
[2025-10-07 23:38:15 +0800] [5818] [INFO] 工作进程 5818 初始化完成
[2025-10-07 23:38:15 +0800] [5800] [INFO] 工作进程 [booting] 即将启动
[2025-10-07 23:38:15 +0800] [5819] [INFO] Booting worker with pid: 5819
[2025-10-07 23:38:15 +0800] [5819] [INFO] 工作进程 5819 已启动
[2025-10-07 23:38:15 +0800] [5819] [INFO] 工作进程 5819 初始化完成
[2025-10-07 23:38:15 +0800] [5800] [INFO] 工作进程 [booting] 即将启动
[2025-10-07 23:38:15 +0800] [5820] [INFO] Booting worker with pid: 5820
[2025-10-07 23:38:15 +0800] [5820] [INFO] 工作进程 5820 已启动
[2025-10-07 23:38:15 +0800] [5820] [INFO] 工作进程 5820 初始化完成
[2025-10-07 23:38:15 +0800] [5800] [INFO] 工作进程 [booting] 即将启动
[2025-10-07 23:38:15 +0800] [5821] [INFO] Booting worker with pid: 5821
[2025-10-07 23:38:15 +0800] [5821] [INFO] 工作进程 5821 已启动
[2025-10-07 23:38:15 +0800] [5821] [INFO] 工作进程 5821 初始化完成
[2025-10-07 23:46:57 +0800] [5817] [INFO] Worker exiting (pid: 5817)
[2025-10-07 23:46:57 +0800] [5800] [INFO] Handling signal: term
[2025-10-07 23:46:57 +0800] [5818] [INFO] Worker exiting (pid: 5818)
[2025-10-07 23:46:57 +0800] [5819] [INFO] Worker exiting (pid: 5819)
[2025-10-07 23:46:57 +0800] [5820] [INFO] Worker exiting (pid: 5820)
[2025-10-07 23:46:57 +0800] [5821] [INFO] Worker exiting (pid: 5821)
[2025-10-07 23:46:58 +0800] [5800] [INFO] Shutting down: Master
[2025-10-07 23:47:18 +0800] [25390] [INFO] Starting gunicorn 21.2.0
[2025-10-07 23:47:18 +0800] [25390] [INFO] Gunicorn服务器启动中...
[2025-10-07 23:47:18 +0800] [25390] [INFO] Listening at: http://0.0.0.0:5002 (25390)
[2025-10-07 23:47:18 +0800] [25390] [INFO] Using worker: sync
[2025-10-07 23:47:18 +0800] [25390] [INFO] 工作进程 [booting] 即将启动
[2025-10-07 23:47:18 +0800] [25403] [INFO] Booting worker with pid: 25403
[2025-10-07 23:47:18 +0800] [25403] [INFO] 工作进程 25403 已启动
[2025-10-07 23:47:18 +0800] [25403] [INFO] 工作进程 25403 初始化完成
[2025-10-07 23:47:18 +0800] [25390] [INFO] 工作进程 [booting] 即将启动
[2025-10-07 23:47:18 +0800] [25404] [INFO] Booting worker with pid: 25404
[2025-10-07 23:47:18 +0800] [25404] [INFO] 工作进程 25404 已启动
[2025-10-07 23:47:18 +0800] [25390] [INFO] 工作进程 [booting] 即将启动
[2025-10-07 23:47:18 +0800] [25404] [INFO] 工作进程 25404 初始化完成
[2025-10-07 23:47:18 +0800] [25405] [INFO] Booting worker with pid: 25405
[2025-10-07 23:47:18 +0800] [25405] [INFO] 工作进程 25405 已启动
[2025-10-07 23:47:18 +0800] [25405] [INFO] 工作进程 25405 初始化完成
[2025-10-07 23:47:18 +0800] [25390] [INFO] 工作进程 [booting] 即将启动
[2025-10-07 23:47:18 +0800] [25406] [INFO] Booting worker with pid: 25406
[2025-10-07 23:47:18 +0800] [25406] [INFO] 工作进程 25406 已启动
[2025-10-07 23:47:18 +0800] [25406] [INFO] 工作进程 25406 初始化完成
[2025-10-07 23:47:18 +0800] [25390] [INFO] 工作进程 [booting] 即将启动
[2025-10-07 23:47:18 +0800] [25407] [INFO] Booting worker with pid: 25407
[2025-10-07 23:47:18 +0800] [25407] [INFO] 工作进程 25407 已启动
[2025-10-07 23:47:18 +0800] [25407] [INFO] 工作进程 25407 初始化完成

View File

@@ -4,10 +4,10 @@
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>提示词大师 - {% block title %}{% endblock %}</title>
<!-- 添加 Google Fonts -->
<!-- 添加 Google Fonts - Inter字体 -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap" rel="stylesheet">
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap" rel="stylesheet">
<!-- Font Awesome -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css">
<!-- Bootstrap CSS -->
@@ -17,16 +17,43 @@
<!-- Bootstrap JS -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js"></script>
<style>
/* 全局样式 */
/* 全局样式 - 深蓝色科技感主题 */
:root {
--primary-color: #2196f3;
--primary-dark: #1976d2;
--secondary-color: #6c757d;
--success-color: #28a745;
--background-color: #f8f9fa;
--border-color: #e0e0e0;
--text-color: #2c3e50;
--text-light: #666;
/* 主色调 - 深蓝色系 */
--primary-color: #1E3A8A; /* 深蓝主色 */
--primary-light: #3B82F6; /* 浅蓝 */
--primary-dark: #1E40AF; /* 深蓝 */
--primary-lighter: #60A5FA; /* 更浅蓝 */
/* 辅助色 - 渐变蓝紫 */
--secondary-color: #6366F1; /* 紫蓝 */
--accent-color: #8B5CF6; /* 紫色 */
--gradient-primary: linear-gradient(135deg, #6366F1, #8B5CF6);
--gradient-secondary: linear-gradient(135deg, #1E3A8A, #3B82F6);
/* 功能色 */
--success-color: #10B981; /* 绿色 */
--warning-color: #F59E0B; /* 橙色 */
--error-color: #EF4444; /* 红色 */
--info-color: #06B6D4; /* 青色 */
/* 中性色 */
--background-color: #F8FAFC; /* 中性背景 */
--background-secondary: #F1F5F9; /* 次要背景 */
--border-color: #E2E8F0; /* 边框色 */
--border-light: #F1F5F9; /* 浅边框 */
/* 文字色 */
--text-color: #0F172A; /* 深色文字 */
--text-secondary: #475569; /* 次要文字 */
--text-light: #64748B; /* 浅色文字 */
--text-muted: #94A3B8; /* 静音文字 */
/* 阴影 */
--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1);
--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1);
}
* {
@@ -36,16 +63,38 @@
}
body {
font-family: 'Inter', -apple-system, BlinkMacSystemFont, system-ui, sans-serif;
line-height: 1.5;
font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif;
line-height: 1.6;
color: var(--text-color);
background-color: var(--background-color);
font-weight: 400;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
/* 字体层次系统 */
h1, h2, h3, h4, h5, h6 {
font-family: 'Inter', sans-serif;
font-weight: 600;
line-height: 1.3;
color: var(--text-color);
}
.font-display {
font-family: 'Inter', sans-serif;
font-weight: 700;
}
.font-mono {
font-family: 'SF Mono', 'Monaco', 'Consolas', 'Liberation Mono', 'Courier New', monospace;
}
/* 导航栏样式 */
/* 导航栏样式 - 科技感设计 */
header {
background: white;
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
background: rgba(255, 255, 255, 0.95);
backdrop-filter: blur(10px);
border-bottom: 1px solid var(--border-light);
box-shadow: var(--shadow-sm);
position: sticky;
top: 0;
z-index: 100;
@@ -61,13 +110,21 @@
}
.nav-brand {
font-size: 1.25rem;
font-weight: 600;
color: var(--primary-color);
font-size: 1.5rem;
font-weight: 700;
background: var(--gradient-primary);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
text-decoration: none;
display: flex;
align-items: center;
gap: 0.5rem;
gap: 0.75rem;
transition: all 0.3s ease;
}
.nav-brand:hover {
transform: scale(1.05);
}
.nav-brand i {
@@ -81,21 +138,42 @@
}
.nav-link {
color: var(--text-color);
color: var(--text-secondary);
text-decoration: none;
padding: 0.5rem 1rem;
border-radius: 4px;
padding: 0.75rem 1rem;
border-radius: 8px;
transition: all 0.3s ease;
display: flex;
align-items: center;
gap: 0.5rem;
white-space: nowrap;
min-width: fit-content;
font-weight: 500;
position: relative;
overflow: hidden;
}
.nav-link::before {
content: '';
position: absolute;
top: 0;
left: -100%;
width: 100%;
height: 100%;
background: var(--gradient-primary);
opacity: 0.1;
transition: left 0.3s ease;
z-index: -1;
}
.nav-link:hover {
background: var(--background-color);
color: var(--primary-color);
transform: translateY(-1px);
box-shadow: var(--shadow-md);
}
.nav-link:hover::before {
left: 0;
}
.nav-link i {
@@ -212,22 +290,24 @@
}
.user-menu .dropdown-toggle {
background: none;
background: var(--gradient-primary);
border: none;
color: var(--text-color);
color: white;
text-decoration: none;
padding: 0.5rem 1rem;
border-radius: 6px;
padding: 0.75rem 1.25rem;
border-radius: 12px;
transition: all 0.3s ease;
display: flex;
align-items: center;
gap: 0.5rem;
font-weight: 500;
font-weight: 600;
box-shadow: var(--shadow-md);
}
.user-menu .dropdown-toggle:hover {
background: var(--background-color);
color: var(--primary-color);
transform: translateY(-2px);
box-shadow: var(--shadow-lg);
background: var(--gradient-secondary);
}
.user-menu .dropdown-toggle:focus {

File diff suppressed because it is too large Load Diff