登录注册收藏功能上线云服务器
This commit is contained in:
BIN
__pycache__/gunicorn.conf.cpython-312.pyc
Normal file
BIN
__pycache__/gunicorn.conf.cpython-312.pyc
Normal file
Binary file not shown.
BIN
__pycache__/run_dev.cpython-312.pyc
Normal file
BIN
__pycache__/run_dev.cpython-312.pyc
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -127,3 +127,15 @@ python run_dev.py
|
||||
- 已安装包: Flask, SQLAlchemy, PyMySQL等
|
||||
|
||||
这样您就可以充分利用Python 3.12.7环境进行开发了!
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
225
logs/app.log
Normal file
225
logs/app.log
Normal file
@@ -0,0 +1,225 @@
|
||||
2025-08-24 17:18:37,910 INFO: 应用启动 [in /home/renjianbo/aitsc/config/base.py:82]
|
||||
2025-08-24 17:32:22,073 INFO: 应用启动 [in /home/renjianbo/aitsc/config/base.py:82]
|
||||
2025-08-24 17:33:47,090 INFO: 应用启动 [in /home/renjianbo/aitsc/config/base.py:82]
|
||||
2025-08-24 17:40:48,391 INFO: 应用启动 [in /home/renjianbo/aitsc/config/base.py:82]
|
||||
2025-08-24 21:49:33,296 INFO: 应用启动 [in /home/renjianbo/aitsc/config/base.py:82]
|
||||
2025-08-24 22:02:34,974 INFO: 应用启动 [in /home/renjianbo/aitsc/config/base.py:82]
|
||||
2025-08-24 22:03:41,060 INFO: 应用启动 [in /home/renjianbo/aitsc/config/base.py:82]
|
||||
2025-08-24 22:05:02,904 INFO: 应用启动 [in /home/renjianbo/aitsc/config/base.py:82]
|
||||
2025-08-24 23:28:27,649 INFO: 应用启动 [in /home/renjianbo/aitsc/config/base.py:82]
|
||||
2025-08-24 23:31:11,387 INFO: 应用启动 [in /home/renjianbo/aitsc/config/base.py:82]
|
||||
2025-08-24 23:38:39,083 INFO: 应用启动 [in /home/renjianbo/aitsc/config/base.py:82]
|
||||
2025-08-28 12:41:02,160 ERROR: LLM API调用失败: [Errno 5] Input/output error [in /home/renjianbo/aitsc/src/flask_prompt_master/routes/routes.py:76]
|
||||
2025-08-28 12:41:02,167 ERROR: Exception on / [POST] [in /home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py:875]
|
||||
Traceback (most recent call last):
|
||||
File "/home/renjianbo/aitsc/src/flask_prompt_master/routes/routes.py", line 112, in index
|
||||
conn = pymysql.connect(
|
||||
^^^^^^^^^^^^^^^^
|
||||
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/pymysql/connections.py", line 361, in __init__
|
||||
self.connect()
|
||||
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/pymysql/connections.py", line 669, in connect
|
||||
self._request_authentication()
|
||||
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/pymysql/connections.py", line 957, in _request_authentication
|
||||
auth_packet = self._read_packet()
|
||||
^^^^^^^^^^^^^^^^^^^
|
||||
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/pymysql/connections.py", line 775, in _read_packet
|
||||
packet.raise_for_error()
|
||||
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/pymysql/protocol.py", line 219, in raise_for_error
|
||||
err.raise_mysql_exception(self._data)
|
||||
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/pymysql/err.py", line 150, in raise_mysql_exception
|
||||
raise errorclass(errno, errval)
|
||||
pymysql.err.OperationalError: (1045, "Access denied for user 'root'@'localhost' (using password: YES)")
|
||||
|
||||
During handling of the above exception, another exception occurred:
|
||||
|
||||
Traceback (most recent call last):
|
||||
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 1511, in wsgi_app
|
||||
response = self.full_dispatch_request()
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 919, 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 917, in full_dispatch_request
|
||||
rv = self.dispatch_request()
|
||||
^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 902, in dispatch_request
|
||||
return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) # type: ignore[no-any-return]
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "/home/renjianbo/aitsc/src/flask_prompt_master/routes/routes.py", line 129, in index
|
||||
print(f"获取用户ID失败: {str(e)}")
|
||||
OSError: [Errno 5] Input/output error
|
||||
2025-08-28 12:41:43,169 ERROR: LLM API调用失败: [Errno 5] Input/output error [in /home/renjianbo/aitsc/src/flask_prompt_master/routes/routes.py:76]
|
||||
2025-08-28 12:41:43,173 ERROR: Exception on / [POST] [in /home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py:875]
|
||||
Traceback (most recent call last):
|
||||
File "/home/renjianbo/aitsc/src/flask_prompt_master/routes/routes.py", line 112, in index
|
||||
conn = pymysql.connect(
|
||||
^^^^^^^^^^^^^^^^
|
||||
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/pymysql/connections.py", line 361, in __init__
|
||||
self.connect()
|
||||
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/pymysql/connections.py", line 669, in connect
|
||||
self._request_authentication()
|
||||
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/pymysql/connections.py", line 957, in _request_authentication
|
||||
auth_packet = self._read_packet()
|
||||
^^^^^^^^^^^^^^^^^^^
|
||||
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/pymysql/connections.py", line 775, in _read_packet
|
||||
packet.raise_for_error()
|
||||
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/pymysql/protocol.py", line 219, in raise_for_error
|
||||
err.raise_mysql_exception(self._data)
|
||||
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/pymysql/err.py", line 150, in raise_mysql_exception
|
||||
raise errorclass(errno, errval)
|
||||
pymysql.err.OperationalError: (1045, "Access denied for user 'root'@'localhost' (using password: YES)")
|
||||
|
||||
During handling of the above exception, another exception occurred:
|
||||
|
||||
Traceback (most recent call last):
|
||||
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 1511, in wsgi_app
|
||||
response = self.full_dispatch_request()
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 919, 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 917, in full_dispatch_request
|
||||
rv = self.dispatch_request()
|
||||
^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 902, in dispatch_request
|
||||
return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) # type: ignore[no-any-return]
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "/home/renjianbo/aitsc/src/flask_prompt_master/routes/routes.py", line 129, in index
|
||||
print(f"获取用户ID失败: {str(e)}")
|
||||
OSError: [Errno 5] Input/output error
|
||||
2025-08-28 12:42:44,303 ERROR: LLM API调用失败: [Errno 5] Input/output error [in /home/renjianbo/aitsc/src/flask_prompt_master/routes/routes.py:76]
|
||||
2025-08-28 12:42:44,306 ERROR: Exception on / [POST] [in /home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py:875]
|
||||
Traceback (most recent call last):
|
||||
File "/home/renjianbo/aitsc/src/flask_prompt_master/routes/routes.py", line 112, in index
|
||||
conn = pymysql.connect(
|
||||
^^^^^^^^^^^^^^^^
|
||||
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/pymysql/connections.py", line 361, in __init__
|
||||
self.connect()
|
||||
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/pymysql/connections.py", line 669, in connect
|
||||
self._request_authentication()
|
||||
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/pymysql/connections.py", line 957, in _request_authentication
|
||||
auth_packet = self._read_packet()
|
||||
^^^^^^^^^^^^^^^^^^^
|
||||
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/pymysql/connections.py", line 775, in _read_packet
|
||||
packet.raise_for_error()
|
||||
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/pymysql/protocol.py", line 219, in raise_for_error
|
||||
err.raise_mysql_exception(self._data)
|
||||
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/pymysql/err.py", line 150, in raise_mysql_exception
|
||||
raise errorclass(errno, errval)
|
||||
pymysql.err.OperationalError: (1045, "Access denied for user 'root'@'localhost' (using password: YES)")
|
||||
|
||||
During handling of the above exception, another exception occurred:
|
||||
|
||||
Traceback (most recent call last):
|
||||
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 1511, in wsgi_app
|
||||
response = self.full_dispatch_request()
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 919, 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 917, in full_dispatch_request
|
||||
rv = self.dispatch_request()
|
||||
^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 902, in dispatch_request
|
||||
return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) # type: ignore[no-any-return]
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "/home/renjianbo/aitsc/src/flask_prompt_master/routes/routes.py", line 129, in index
|
||||
print(f"获取用户ID失败: {str(e)}")
|
||||
OSError: [Errno 5] Input/output error
|
||||
2025-08-29 00:42:49,859 ERROR: Exception on / [GET] [in /home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py:875]
|
||||
Traceback (most recent call last):
|
||||
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 1511, in wsgi_app
|
||||
response = self.full_dispatch_request()
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 919, 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 917, in full_dispatch_request
|
||||
rv = self.dispatch_request()
|
||||
^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 902, in dispatch_request
|
||||
return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) # type: ignore[no-any-return]
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "/home/renjianbo/aitsc/src/flask_prompt_master/routes/routes.py", line 143, 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 150, in render_template
|
||||
return _render(app, template, context)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/templating.py", line 131, 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 257, in top-level template code
|
||||
<a href="{{ url_for('favorites.favorites_page') }}" class="nav-link">
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 1121, in url_for
|
||||
return self.handle_url_build_error(error, endpoint, values)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 1110, in url_for
|
||||
rv = url_adapter.build( # type: ignore[union-attr]
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/werkzeug/routing/map.py", line 924, in build
|
||||
raise BuildError(endpoint, values, method, self)
|
||||
werkzeug.routing.exceptions.BuildError: Could not build url for endpoint 'favorites.favorites_page'. Did you mean 'main.delete_template' instead?
|
||||
2025-08-29 00:55:57,872 ERROR: Exception on / [GET] [in /home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py:875]
|
||||
Traceback (most recent call last):
|
||||
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 1511, in wsgi_app
|
||||
response = self.full_dispatch_request()
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 919, 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 917, in full_dispatch_request
|
||||
rv = self.dispatch_request()
|
||||
^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 902, in dispatch_request
|
||||
return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) # type: ignore[no-any-return]
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "/home/renjianbo/aitsc/src/flask_prompt_master/routes/routes.py", line 143, 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 150, in render_template
|
||||
return _render(app, template, context)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/templating.py", line 131, 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 257, in top-level template code
|
||||
<a href="{{ url_for('favorites.favorites_page') }}" class="nav-link">
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 1121, in url_for
|
||||
return self.handle_url_build_error(error, endpoint, values)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/flask/app.py", line 1110, in url_for
|
||||
rv = url_adapter.build( # type: ignore[union-attr]
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
File "/home/renjianbo/miniconda3/envs/myenv/lib/python3.12/site-packages/werkzeug/routing/map.py", line 924, in build
|
||||
raise BuildError(endpoint, values, method, self)
|
||||
werkzeug.routing.exceptions.BuildError: Could not build url for endpoint 'favorites.favorites_page'. Did you mean 'main.delete_template' instead?
|
||||
96
logs/gunicorn_access.log
Normal file
96
logs/gunicorn_access.log
Normal file
@@ -0,0 +1,96 @@
|
||||
127.0.0.1 - - [24/Aug/2025:22:05:14 +0800] "GET / HTTP/1.1" 200 818384 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0" 614912
|
||||
127.0.0.1 - - [24/Aug/2025:22:05:16 +0800] "GET /favicon.ico HTTP/1.1" 404 207 "http://localhost:5002/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0" 5794
|
||||
127.0.0.1 - - [24/Aug/2025:22:05:37 +0800] "GET / HTTP/1.1" 200 818384 "-" "curl/7.29.0" 549536
|
||||
123.139.44.98 - - [24/Aug/2025:22:17:06 +0800] "GET / HTTP/1.1" 200 818384 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0" 669092
|
||||
123.139.44.98 - - [24/Aug/2025:22:17:08 +0800] "GET /favicon.ico 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/139.0.0.0 Safari/537.36 Edg/139.0.0.0" 1481
|
||||
123.139.44.98 - - [24/Aug/2025:22:17:27 +0800] "GET /expert_generate HTTP/1.1" 200 12946 "http://101.43.95.130:5002/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0" 13677
|
||||
123.139.44.98 - - [24/Aug/2025:22:22:42 +0800] "GET / HTTP/1.1" 200 818384 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0" 522042
|
||||
127.0.0.1 - - [24/Aug/2025:23:31:26 +0800] "GET / HTTP/1.1" 200 818384 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0" 556566
|
||||
123.139.44.98 - - [24/Aug/2025:23:31:34 +0800] "GET / HTTP/1.1" 200 818384 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0" 721878
|
||||
127.0.0.1 - - [24/Aug/2025:23:32:01 +0800] "GET / HTTP/1.1" 200 818384 "-" "curl/7.29.0" 685206
|
||||
123.139.44.98 - - [24/Aug/2025:23:37:46 +0800] "GET / HTTP/1.1" 200 818384 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0" 751417
|
||||
123.139.44.98 - - [24/Aug/2025:23:37:51 +0800] "GET / HTTP/1.1" 200 818384 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0" 477027
|
||||
123.139.44.98 - - [24/Aug/2025:23:38:10 +0800] "GET / HTTP/1.1" 200 818384 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0" 341944
|
||||
123.139.44.98 - - [24/Aug/2025:23:38:40 +0800] "GET / HTTP/1.1" 200 818384 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0" 761614
|
||||
123.139.44.98 - - [24/Aug/2025:23:59:09 +0800] "GET / HTTP/1.1" 200 818384 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0" 495913
|
||||
123.139.44.98 - - [25/Aug/2025:07:14:18 +0800] "GET / HTTP/1.1" 200 818384 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0" 664405
|
||||
3.132.23.201 - - [25/Aug/2025:11:56:59 +0800] "GET / HTTP/1.1" 200 818384 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) Chrome/126.0.0.0 Safari/537.36" 1181018
|
||||
3.132.23.201 - - [25/Aug/2025:11:59:29 +0800] "GET / HTTP/1.1" 200 818384 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) Chrome/126.0.0.0 Safari/537.36" 1223938
|
||||
36.40.130.48 - - [25/Aug/2025:16:55:17 +0800] "GET / HTTP/1.1" 200 818384 "-" "Mozilla/5.0 (Linux; Android 15; BVL-AN16 Build/HONORBVL-AN16;) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/97.0.4692.98 Mobile Safari/537.36 T7/13.38 SP-engine/2.76.0 languageType/0 bdh_dvt/0 bdh_de/0 bdh_ds/0 bdapp/1.0 (bdhonorbrowser; bdhonorbrowser) bdhonorbrowser/9.3.0.3 (P1 15) NABar/1.0" 589710
|
||||
36.40.130.48 - - [25/Aug/2025:16:55:21 +0800] "GET /favicon.ico HTTP/1.1" 404 207 "http://101.43.95.130:5002/" "Mozilla/5.0 (Linux; Android 15; BVL-AN16 Build/HONORBVL-AN16;) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/97.0.4692.98 Mobile Safari/537.36 T7/13.38 SP-engine/2.76.0 languageType/0 bdh_dvt/0 bdh_de/0 bdh_ds/0 bdapp/1.0 (bdhonorbrowser; bdhonorbrowser) bdhonorbrowser/9.3.0.3 (P1 15) NABar/1.0" 1232
|
||||
119.28.64.175 - - [25/Aug/2025:16:55:27 +0800] "GET / HTTP/1.1" 200 818384 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36" 461761
|
||||
119.28.64.175 - - [25/Aug/2025:17:59:10 +0800] "GET / HTTP/1.1" 200 818384 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36" 685095
|
||||
119.28.64.175 - - [25/Aug/2025:17:59:13 +0800] "GET / HTTP/1.1" 200 818384 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36" 348816
|
||||
67.205.162.22 - - [25/Aug/2025:19:11:09 +0800] "GET / HTTP/1.0" 200 818384 "-" "-" 555565
|
||||
206.168.34.124 - - [25/Aug/2025:20:07:11 +0800] "GET / HTTP/1.1" 200 818384 "-" "-" 689759
|
||||
206.168.34.124 - - [25/Aug/2025:20:07:20 +0800] "GET / HTTP/1.1" 200 818384 "-" "Mozilla/5.0 (compatible; CensysInspect/1.1; +https://about.censys.io/)" 2791994
|
||||
206.168.34.124 - - [25/Aug/2025:20:07:27 +0800] "GET /favicon.ico HTTP/1.1" 404 207 "-" "Mozilla/5.0 (compatible; CensysInspect/1.1; +https://about.censys.io/)" 1166
|
||||
206.168.34.124 - - [25/Aug/2025:20:07:38 +0800] "GET /favicon.ico HTTP/1.1" 404 207 "-" "Mozilla/5.0 (compatible; CensysInspect/1.1; +https://about.censys.io/)" 756
|
||||
206.168.34.124 - - [25/Aug/2025:20:08:04 +0800] "GET /login HTTP/1.1" 404 207 "-" "Mozilla/5.0 (compatible; CensysInspect/1.1; +https://about.censys.io/)" 702
|
||||
123.139.44.98 - - [25/Aug/2025:22:22:45 +0800] "GET / HTTP/1.1" 200 818384 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0" 736080
|
||||
36.43.205.80 - - [26/Aug/2025:08:16:13 +0800] "GET / HTTP/1.1" 200 818384 "-" "Mozilla/5.0 (Linux; Android 15; BVL-AN16 Build/HONORBVL-AN16;) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/97.0.4692.98 Mobile Safari/537.36 T7/13.38 SP-engine/2.76.0 languageType/0 bdh_dvt/0 bdh_de/0 bdh_ds/0 bdapp/1.0 (bdhonorbrowser; bdhonorbrowser) bdhonorbrowser/9.3.0.3 (P1 15) NABar/1.0" 1457591
|
||||
36.43.205.80 - - [26/Aug/2025:08:16:15 +0800] "GET /favicon.ico HTTP/1.1" 404 207 "http://101.43.95.130:5002/" "Mozilla/5.0 (Linux; Android 15; BVL-AN16 Build/HONORBVL-AN16;) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/97.0.4692.98 Mobile Safari/537.36 T7/13.38 SP-engine/2.76.0 languageType/0 bdh_dvt/0 bdh_de/0 bdh_ds/0 bdapp/1.0 (bdhonorbrowser; bdhonorbrowser) bdhonorbrowser/9.3.0.3 (P1 15) NABar/1.0" 1212
|
||||
185.224.128.17 - - [26/Aug/2025:08:27:03 +0800] "CONNECT example.com:80 HTTP/1.1" 404 207 "-" "-" 1131
|
||||
36.43.204.203 - - [26/Aug/2025:09:24:50 +0800] "GET / HTTP/1.1" 200 818384 "-" "Mozilla/5.0 (Linux; Android 15; BVL-AN16 Build/HONORBVL-AN16;) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/97.0.4692.98 Mobile Safari/537.36 T7/13.38 SP-engine/2.76.0 languageType/0 bdh_dvt/0 bdh_de/0 bdh_ds/0 bdapp/1.0 (bdhonorbrowser; bdhonorbrowser) bdhonorbrowser/9.3.0.3 (P1 15) NABar/1.0" 1529481
|
||||
36.43.204.203 - - [26/Aug/2025:09:25:37 +0800] "POST / HTTP/1.1" 500 0 "-" "-" 40870
|
||||
36.43.204.203 - - [26/Aug/2025:09:26:05 +0800] "POST / HTTP/1.1" 500 0 "-" "-" 8263
|
||||
36.43.204.203 - - [26/Aug/2025:09:26:43 +0800] "POST / HTTP/1.1" 500 0 "-" "-" 8042
|
||||
36.43.204.203 - - [26/Aug/2025:09:27:50 +0800] "POST / HTTP/1.1" 500 0 "-" "-" 8161
|
||||
36.43.204.203 - - [26/Aug/2025:09:28:13 +0800] "GET / HTTP/1.1" 200 818384 "-" "Mozilla/5.0 (Linux; Android 15; BVL-AN16 Build/HONORBVL-AN16;) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/97.0.4692.98 Mobile Safari/537.36 T7/13.38 SP-engine/2.76.0 languageType/0 bdh_dvt/0 bdh_de/0 bdh_ds/0 bdapp/1.0 (bdhonorbrowser; bdhonorbrowser) bdhonorbrowser/9.3.0.3 (P1 15) NABar/1.0" 456544
|
||||
36.43.204.203 - - [26/Aug/2025:09:28:17 +0800] "GET /favicon.ico HTTP/1.1" 404 207 "http://101.43.95.130:5002/" "Mozilla/5.0 (Linux; Android 15; BVL-AN16 Build/HONORBVL-AN16;) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/97.0.4692.98 Mobile Safari/537.36 T7/13.38 SP-engine/2.76.0 languageType/0 bdh_dvt/0 bdh_de/0 bdh_ds/0 bdapp/1.0 (bdhonorbrowser; bdhonorbrowser) bdhonorbrowser/9.3.0.3 (P1 15) NABar/1.0" 5100
|
||||
36.43.204.203 - - [26/Aug/2025:09:28:53 +0800] "POST / HTTP/1.1" 200 821717 "http://101.43.95.130:5002/" "Mozilla/5.0 (Linux; Android 15; BVL-AN16 Build/HONORBVL-AN16;) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/97.0.4692.98 Mobile Safari/537.36 T7/13.38 SP-engine/2.76.0 languageType/0 bdh_dvt/0 bdh_de/0 bdh_ds/0 bdapp/1.0 (bdhonorbrowser; bdhonorbrowser) bdhonorbrowser/9.3.0.3 (P1 15) NABar/1.0" 26695637
|
||||
3.134.148.59 - - [26/Aug/2025:11:44:26 +0800] "GET / HTTP/1.1" 200 818384 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) Chrome/126.0.0.0 Safari/537.36" 1109637
|
||||
3.134.148.59 - - [26/Aug/2025:11:46:27 +0800] "GET / HTTP/1.1" 200 818384 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) Chrome/126.0.0.0 Safari/537.36" 1108320
|
||||
199.45.154.121 - - [26/Aug/2025:16:03:27 +0800] "GET / HTTP/1.1" 200 818384 "-" "-" 1327629
|
||||
199.45.154.121 - - [26/Aug/2025:16:03:34 +0800] "GET / HTTP/1.1" 200 818384 "-" "Mozilla/5.0 (compatible; CensysInspect/1.1; +https://about.censys.io/)" 1947369
|
||||
199.45.154.121 - - [26/Aug/2025:16:03:36 +0800] "GET /favicon.ico HTTP/1.1" 404 207 "-" "Mozilla/5.0 (compatible; CensysInspect/1.1; +https://about.censys.io/)" 909
|
||||
199.45.154.121 - - [26/Aug/2025:16:03:42 +0800] "GET /favicon.ico HTTP/1.1" 404 207 "-" "Mozilla/5.0 (compatible; CensysInspect/1.1; +https://about.censys.io/)" 722
|
||||
199.45.154.121 - - [26/Aug/2025:16:04:04 +0800] "GET /login HTTP/1.1" 404 207 "-" "Mozilla/5.0 (compatible; CensysInspect/1.1; +https://about.censys.io/)" 743
|
||||
119.28.54.131 - - [26/Aug/2025:19:29:13 +0800] "GET / HTTP/1.1" 200 818384 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36" 1269276
|
||||
119.28.54.131 - - [26/Aug/2025:20:40:08 +0800] "GET / HTTP/1.1" 200 818384 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36" 484106
|
||||
91.196.152.108 - - [26/Aug/2025:21:19:46 +0800] "GET / HTTP/1.1" 200 818384 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0" 1273310
|
||||
91.196.152.36 - - [26/Aug/2025:21:29:17 +0800] "GET /favicon.ico HTTP/1.1" 404 207 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0" 967
|
||||
185.224.128.17 - - [27/Aug/2025:07:12:44 +0800] "CONNECT example.com:80 HTTP/1.1" 404 207 "-" "-" 4622
|
||||
91.196.152.120 - - [27/Aug/2025:13:22:18 +0800] "GET / HTTP/1.1" 200 818384 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0" 6953488
|
||||
91.196.152.100 - - [27/Aug/2025:13:32:59 +0800] "GET /favicon.ico HTTP/1.1" 404 207 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:134.0) Gecko/20100101 Firefox/134.0" 4618
|
||||
167.94.138.191 - - [27/Aug/2025:15:58:02 +0800] "GET / HTTP/1.1" 200 818384 "-" "-" 970318
|
||||
167.94.138.191 - - [27/Aug/2025:15:58:08 +0800] "GET / HTTP/1.1" 200 818384 "-" "Mozilla/5.0 (compatible; CensysInspect/1.1; +https://about.censys.io/)" 1638509
|
||||
167.94.138.191 - - [27/Aug/2025:15:58:09 +0800] "GET /favicon.ico HTTP/1.1" 404 207 "-" "Mozilla/5.0 (compatible; CensysInspect/1.1; +https://about.censys.io/)" 4830
|
||||
167.94.138.191 - - [27/Aug/2025:15:58:16 +0800] "GET /favicon.ico HTTP/1.1" 404 207 "-" "Mozilla/5.0 (compatible; CensysInspect/1.1; +https://about.censys.io/)" 763
|
||||
167.94.138.191 - - [27/Aug/2025:15:58:36 +0800] "GET /.well-known/security.txt HTTP/1.1" 404 207 "-" "Mozilla/5.0 (compatible; CensysInspect/1.1; +https://about.censys.io/)" 680
|
||||
104.234.115.211 - - [27/Aug/2025:16:02:44 +0800] "GET / HTTP/1.1" 200 818384 "-" "'Mozilla/5.0 (compatible; GenomeCrawlerd/1.0; +https://www.nokia.com/genomecrawler)'" 2573375
|
||||
172.234.217.192 - - [27/Aug/2025:18:26:18 +0800] "GET / HTTP/1.1" 200 818384 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 13_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36" 1500178
|
||||
185.224.128.17 - - [28/Aug/2025:06:22:40 +0800] "CONNECT example.com:80 HTTP/1.1" 404 207 "-" "-" 4581
|
||||
47.99.100.132 - - [28/Aug/2025:07:39:41 +0800] "GET / HTTP/1.0" 200 51246 "-" "-" 272052
|
||||
47.99.100.132 - - [28/Aug/2025:07:39:45 +0800] "POST /sdk HTTP/1.1" 404 207 "-" "Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)" 906
|
||||
47.99.100.132 - - [28/Aug/2025:07:39:45 +0800] "GET /nmaplowercheck1756337985 HTTP/1.1" 404 207 "-" "Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)" 921
|
||||
47.99.100.132 - - [28/Aug/2025:07:39:45 +0800] "GET /evox/about HTTP/1.1" 404 207 "-" "Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)" 708
|
||||
47.99.100.132 - - [28/Aug/2025:07:39:45 +0800] "GET /HNAP1 HTTP/1.1" 404 207 "-" "Mozilla/5.0 (compatible; Nmap Scripting Engine; https://nmap.org/book/nse.html)" 645
|
||||
47.99.100.132 - - [28/Aug/2025:07:39:45 +0800] "GET / HTTP/1.0" 200 51246 "-" "-" 456303
|
||||
47.99.100.132 - - [28/Aug/2025:07:40:00 +0800] "GET / HTTP/1.0" 200 51246 "-" "-" 119474
|
||||
47.99.100.132 - - [28/Aug/2025:07:40:00 +0800] "GET / HTTP/1.1" 200 51246 "-" "-" 119487
|
||||
117.33.113.14 - - [28/Aug/2025:12:39:53 +0800] "GET / HTTP/1.1" 200 51246 "-" "Mozilla/5.0 (Linux; Android 15; BVL-AN16 Build/HONORBVL-AN16;) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/97.0.4692.98 Mobile Safari/537.36 T7/13.38 SP-engine/2.76.0 languageType/0 bdh_dvt/0 bdh_de/0 bdh_ds/0 bdapp/1.0 (bdhonorbrowser; bdhonorbrowser) bdhonorbrowser/9.3.0.3 (P1 15) NABar/1.0" 1931760
|
||||
117.33.113.14 - - [28/Aug/2025:12:39:54 +0800] "GET /favicon.ico HTTP/1.1" 404 207 "http://101.43.95.130:5002/" "Mozilla/5.0 (Linux; Android 15; BVL-AN16 Build/HONORBVL-AN16;) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/97.0.4692.98 Mobile Safari/537.36 T7/13.38 SP-engine/2.76.0 languageType/0 bdh_dvt/0 bdh_de/0 bdh_ds/0 bdapp/1.0 (bdhonorbrowser; bdhonorbrowser) bdhonorbrowser/9.3.0.3 (P1 15) NABar/1.0" 897
|
||||
117.33.113.14 - - [28/Aug/2025:12:41:02 +0800] "POST / HTTP/1.1" 500 265 "http://101.43.95.130:5002/" "Mozilla/5.0 (Linux; Android 15; BVL-AN16 Build/HONORBVL-AN16;) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/97.0.4692.98 Mobile Safari/537.36 T7/13.38 SP-engine/2.76.0 languageType/0 bdh_dvt/0 bdh_de/0 bdh_ds/0 bdapp/1.0 (bdhonorbrowser; bdhonorbrowser) bdhonorbrowser/9.3.0.3 (P1 15) NABar/1.0" 332050
|
||||
117.33.113.14 - - [28/Aug/2025:12:41:12 +0800] "GET / HTTP/1.1" 200 51246 "-" "Mozilla/5.0 (Linux; Android 15; BVL-AN16 Build/HONORBVL-AN16;) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/97.0.4692.98 Mobile Safari/537.36 T7/13.38 SP-engine/2.76.0 languageType/0 bdh_dvt/0 bdh_de/0 bdh_ds/0 bdapp/1.0 (bdhonorbrowser; bdhonorbrowser) bdhonorbrowser/9.3.0.3 (P1 15) NABar/1.0" 375597
|
||||
117.33.113.14 - - [28/Aug/2025:12:41:32 +0800] "GET / HTTP/1.1" 200 51246 "-" "Mozilla/5.0 (Linux; Android 15; BVL-AN16 Build/HONORBVL-AN16;) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/97.0.4692.98 Mobile Safari/537.36 T7/13.38 SP-engine/2.76.0 languageType/0 bdh_dvt/0 bdh_de/0 bdh_ds/0 bdapp/1.0 (bdhonorbrowser; bdhonorbrowser) bdhonorbrowser/9.3.0.3 (P1 15) NABar/1.0" 203506
|
||||
117.33.113.14 - - [28/Aug/2025:12:41:32 +0800] "GET /favicon.ico HTTP/1.1" 404 207 "http://101.43.95.130:5002/" "Mozilla/5.0 (Linux; Android 15; BVL-AN16 Build/HONORBVL-AN16;) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/97.0.4692.98 Mobile Safari/537.36 T7/13.38 SP-engine/2.76.0 languageType/0 bdh_dvt/0 bdh_de/0 bdh_ds/0 bdapp/1.0 (bdhonorbrowser; bdhonorbrowser) bdhonorbrowser/9.3.0.3 (P1 15) NABar/1.0" 777
|
||||
117.33.113.14 - - [28/Aug/2025:12:41:43 +0800] "POST / HTTP/1.1" 500 265 "http://101.43.95.130:5002/" "Mozilla/5.0 (Linux; Android 15; BVL-AN16 Build/HONORBVL-AN16;) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/97.0.4692.98 Mobile Safari/537.36 T7/13.38 SP-engine/2.76.0 languageType/0 bdh_dvt/0 bdh_de/0 bdh_ds/0 bdapp/1.0 (bdhonorbrowser; bdhonorbrowser) bdhonorbrowser/9.3.0.3 (P1 15) NABar/1.0" 287447
|
||||
117.33.113.14 - - [28/Aug/2025:12:42:23 +0800] "GET / HTTP/1.1" 200 51246 "-" "Mozilla/5.0 (Linux; Android 15; BVL-AN16 Build/HONORBVL-AN16;) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/97.0.4692.98 Mobile Safari/537.36 T7/13.38 SP-engine/2.76.0 languageType/0 bdh_dvt/0 bdh_de/0 bdh_ds/0 bdapp/1.0 (bdhonorbrowser; bdhonorbrowser) bdhonorbrowser/9.3.0.3 (P1 15) NABar/1.0" 475153
|
||||
117.33.113.14 - - [28/Aug/2025:12:42:24 +0800] "GET /favicon.ico HTTP/1.1" 404 207 "http://101.43.95.130:5002/" "Mozilla/5.0 (Linux; Android 15; BVL-AN16 Build/HONORBVL-AN16;) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/97.0.4692.98 Mobile Safari/537.36 T7/13.38 SP-engine/2.76.0 languageType/0 bdh_dvt/0 bdh_de/0 bdh_ds/0 bdapp/1.0 (bdhonorbrowser; bdhonorbrowser) bdhonorbrowser/9.3.0.3 (P1 15) NABar/1.0" 840
|
||||
117.33.113.14 - - [28/Aug/2025:12:42:44 +0800] "POST / HTTP/1.1" 500 265 "http://101.43.95.130:5002/" "Mozilla/5.0 (Linux; Android 15; BVL-AN16 Build/HONORBVL-AN16;) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/97.0.4692.98 Mobile Safari/537.36 T7/13.38 SP-engine/2.76.0 languageType/0 bdh_dvt/0 bdh_de/0 bdh_ds/0 bdapp/1.0 (bdhonorbrowser; bdhonorbrowser) bdhonorbrowser/9.3.0.3 (P1 15) NABar/1.0" 144505
|
||||
3.134.148.59 - - [28/Aug/2025:13:29:56 +0800] "GET / HTTP/1.1" 200 51246 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) Chrome/126.0.0.0 Safari/537.36" 418920
|
||||
3.134.148.59 - - [28/Aug/2025:13:32:27 +0800] "GET / HTTP/1.1" 200 51246 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) Chrome/126.0.0.0 Safari/537.36" 475636
|
||||
162.142.125.197 - - [28/Aug/2025:16:58:38 +0800] "GET / HTTP/1.1" 200 51246 "-" "Mozilla/5.0 (compatible; CensysInspect/1.1; +https://about.censys.io/)" 435845
|
||||
162.142.125.197 - - [28/Aug/2025:16:58:43 +0800] "GET /favicon.ico HTTP/1.1" 404 207 "-" "Mozilla/5.0 (compatible; CensysInspect/1.1; +https://about.censys.io/)" 698
|
||||
162.142.125.197 - - [28/Aug/2025:16:58:54 +0800] "GET /favicon.ico HTTP/1.1" 404 207 "-" "Mozilla/5.0 (compatible; CensysInspect/1.1; +https://about.censys.io/)" 706
|
||||
162.142.125.197 - - [28/Aug/2025:16:59:00 +0800] "GET / HTTP/1.1" 200 51246 "-" "Mozilla/5.0 (compatible; CensysInspect/1.1; +https://about.censys.io/)" 427379
|
||||
121.40.47.206 - - [28/Aug/2025:18:10:22 +0800] "GET / HTTP/1.1" 200 51246 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36" 262173
|
||||
47.122.84.251 - - [28/Aug/2025:18:45:19 +0800] "GET / HTTP/1.0" 200 51246 "-" "-" 241684
|
||||
47.122.84.251 - - [28/Aug/2025:18:45:19 +0800] "OPTIONS / HTTP/1.0" 200 0 "-" "-" 645
|
||||
47.122.84.251 - - [28/Aug/2025:18:46:00 +0800] "GET /devicedesc.xml HTTP/1.1" 404 207 "-" "-" 682
|
||||
123.139.40.144 - - [29/Aug/2025:00:39:08 +0800] "GET / HTTP/1.1" 200 51246 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0" 295881
|
||||
123.139.40.144 - - [29/Aug/2025:00:39:21 +0800] "GET / HTTP/1.1" 200 51246 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0" 441695
|
||||
123.139.40.144 - - [29/Aug/2025:00:42:49 +0800] "GET / HTTP/1.1" 500 265 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0" 508571
|
||||
123.139.40.144 - - [29/Aug/2025:00:44:27 +0800] "GET / HTTP/1.1" 200 51246 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0" 279239
|
||||
123.139.40.144 - - [29/Aug/2025:00:55:57 +0800] "GET / HTTP/1.1" 500 265 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0" 458593
|
||||
1468
logs/gunicorn_error.log
Normal file
1468
logs/gunicorn_error.log
Normal file
File diff suppressed because it is too large
Load Diff
1
migrations/README
Normal file
1
migrations/README
Normal file
@@ -0,0 +1 @@
|
||||
Single-database configuration for Flask.
|
||||
BIN
migrations/__pycache__/env.cpython-312.pyc
Normal file
BIN
migrations/__pycache__/env.cpython-312.pyc
Normal file
Binary file not shown.
50
migrations/alembic.ini
Normal file
50
migrations/alembic.ini
Normal file
@@ -0,0 +1,50 @@
|
||||
# A generic, single database configuration.
|
||||
|
||||
[alembic]
|
||||
# template used to generate migration files
|
||||
# file_template = %%(rev)s_%%(slug)s
|
||||
|
||||
# set to 'true' to run the environment during
|
||||
# the 'revision' command, regardless of autogenerate
|
||||
# revision_environment = false
|
||||
|
||||
|
||||
# Logging configuration
|
||||
[loggers]
|
||||
keys = root,sqlalchemy,alembic,flask_migrate
|
||||
|
||||
[handlers]
|
||||
keys = console
|
||||
|
||||
[formatters]
|
||||
keys = generic
|
||||
|
||||
[logger_root]
|
||||
level = WARN
|
||||
handlers = console
|
||||
qualname =
|
||||
|
||||
[logger_sqlalchemy]
|
||||
level = WARN
|
||||
handlers =
|
||||
qualname = sqlalchemy.engine
|
||||
|
||||
[logger_alembic]
|
||||
level = INFO
|
||||
handlers =
|
||||
qualname = alembic
|
||||
|
||||
[logger_flask_migrate]
|
||||
level = INFO
|
||||
handlers =
|
||||
qualname = flask_migrate
|
||||
|
||||
[handler_console]
|
||||
class = StreamHandler
|
||||
args = (sys.stderr,)
|
||||
level = NOTSET
|
||||
formatter = generic
|
||||
|
||||
[formatter_generic]
|
||||
format = %(levelname)-5.5s [%(name)s] %(message)s
|
||||
datefmt = %H:%M:%S
|
||||
113
migrations/env.py
Normal file
113
migrations/env.py
Normal file
@@ -0,0 +1,113 @@
|
||||
import logging
|
||||
from logging.config import fileConfig
|
||||
|
||||
from flask import current_app
|
||||
|
||||
from alembic import context
|
||||
|
||||
# this is the Alembic Config object, which provides
|
||||
# access to the values within the .ini file in use.
|
||||
config = context.config
|
||||
|
||||
# Interpret the config file for Python logging.
|
||||
# This line sets up loggers basically.
|
||||
fileConfig(config.config_file_name)
|
||||
logger = logging.getLogger('alembic.env')
|
||||
|
||||
|
||||
def get_engine():
|
||||
try:
|
||||
# this works with Flask-SQLAlchemy<3 and Alchemical
|
||||
return current_app.extensions['migrate'].db.get_engine()
|
||||
except (TypeError, AttributeError):
|
||||
# this works with Flask-SQLAlchemy>=3
|
||||
return current_app.extensions['migrate'].db.engine
|
||||
|
||||
|
||||
def get_engine_url():
|
||||
try:
|
||||
return get_engine().url.render_as_string(hide_password=False).replace(
|
||||
'%', '%%')
|
||||
except AttributeError:
|
||||
return str(get_engine().url).replace('%', '%%')
|
||||
|
||||
|
||||
# add your model's MetaData object here
|
||||
# for 'autogenerate' support
|
||||
# from myapp import mymodel
|
||||
# target_metadata = mymodel.Base.metadata
|
||||
config.set_main_option('sqlalchemy.url', get_engine_url())
|
||||
target_db = current_app.extensions['migrate'].db
|
||||
|
||||
# other values from the config, defined by the needs of env.py,
|
||||
# can be acquired:
|
||||
# my_important_option = config.get_main_option("my_important_option")
|
||||
# ... etc.
|
||||
|
||||
|
||||
def get_metadata():
|
||||
if hasattr(target_db, 'metadatas'):
|
||||
return target_db.metadatas[None]
|
||||
return target_db.metadata
|
||||
|
||||
|
||||
def run_migrations_offline():
|
||||
"""Run migrations in 'offline' mode.
|
||||
|
||||
This configures the context with just a URL
|
||||
and not an Engine, though an Engine is acceptable
|
||||
here as well. By skipping the Engine creation
|
||||
we don't even need a DBAPI to be available.
|
||||
|
||||
Calls to context.execute() here emit the given string to the
|
||||
script output.
|
||||
|
||||
"""
|
||||
url = config.get_main_option("sqlalchemy.url")
|
||||
context.configure(
|
||||
url=url, target_metadata=get_metadata(), literal_binds=True
|
||||
)
|
||||
|
||||
with context.begin_transaction():
|
||||
context.run_migrations()
|
||||
|
||||
|
||||
def run_migrations_online():
|
||||
"""Run migrations in 'online' mode.
|
||||
|
||||
In this scenario we need to create an Engine
|
||||
and associate a connection with the context.
|
||||
|
||||
"""
|
||||
|
||||
# this callback is used to prevent an auto-migration from being generated
|
||||
# when there are no changes to the schema
|
||||
# reference: http://alembic.zzzcomputing.com/en/latest/cookbook.html
|
||||
def process_revision_directives(context, revision, directives):
|
||||
if getattr(config.cmd_opts, 'autogenerate', False):
|
||||
script = directives[0]
|
||||
if script.upgrade_ops.is_empty():
|
||||
directives[:] = []
|
||||
logger.info('No changes in schema detected.')
|
||||
|
||||
conf_args = current_app.extensions['migrate'].configure_args
|
||||
if conf_args.get("process_revision_directives") is None:
|
||||
conf_args["process_revision_directives"] = process_revision_directives
|
||||
|
||||
connectable = get_engine()
|
||||
|
||||
with connectable.connect() as connection:
|
||||
context.configure(
|
||||
connection=connection,
|
||||
target_metadata=get_metadata(),
|
||||
**conf_args
|
||||
)
|
||||
|
||||
with context.begin_transaction():
|
||||
context.run_migrations()
|
||||
|
||||
|
||||
if context.is_offline_mode():
|
||||
run_migrations_offline()
|
||||
else:
|
||||
run_migrations_online()
|
||||
24
migrations/script.py.mako
Normal file
24
migrations/script.py.mako
Normal file
@@ -0,0 +1,24 @@
|
||||
"""${message}
|
||||
|
||||
Revision ID: ${up_revision}
|
||||
Revises: ${down_revision | comma,n}
|
||||
Create Date: ${create_date}
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
${imports if imports else ""}
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = ${repr(up_revision)}
|
||||
down_revision = ${repr(down_revision)}
|
||||
branch_labels = ${repr(branch_labels)}
|
||||
depends_on = ${repr(depends_on)}
|
||||
|
||||
|
||||
def upgrade():
|
||||
${upgrades if upgrades else "pass"}
|
||||
|
||||
|
||||
def downgrade():
|
||||
${downgrades if downgrades else "pass"}
|
||||
Binary file not shown.
568
migrations/versions/e1ec7bb6c8ec_add_favorites_table.py
Normal file
568
migrations/versions/e1ec7bb6c8ec_add_favorites_table.py
Normal file
@@ -0,0 +1,568 @@
|
||||
"""Add favorites table
|
||||
|
||||
Revision ID: e1ec7bb6c8ec
|
||||
Revises:
|
||||
Create Date: 2025-08-29 01:01:11.427346
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
from sqlalchemy.dialects import mysql
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = 'e1ec7bb6c8ec'
|
||||
down_revision = None
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
op.drop_table('deviceinfo')
|
||||
with op.batch_alter_table('oauth_member_bind', schema=None) as batch_op:
|
||||
batch_op.drop_index(batch_op.f('idx_type_openid'))
|
||||
|
||||
op.drop_table('oauth_member_bind')
|
||||
with op.batch_alter_table('food_stock_change_log', schema=None) as batch_op:
|
||||
batch_op.drop_index(batch_op.f('idx_food_id'))
|
||||
|
||||
op.drop_table('food_stock_change_log')
|
||||
with op.batch_alter_table('oauth_access_token', schema=None) as batch_op:
|
||||
batch_op.drop_index(batch_op.f('idx_expired_time'))
|
||||
|
||||
op.drop_table('oauth_access_token')
|
||||
with op.batch_alter_table('pay_order', schema=None) as batch_op:
|
||||
batch_op.drop_index(batch_op.f('idx_member_id_status'))
|
||||
batch_op.drop_index(batch_op.f('idx_order_sn'))
|
||||
|
||||
op.drop_table('pay_order')
|
||||
op.drop_table('mendianusertwo')
|
||||
with op.batch_alter_table('member_comments', schema=None) as batch_op:
|
||||
batch_op.drop_index(batch_op.f('idx_member_id'))
|
||||
|
||||
op.drop_table('member_comments')
|
||||
op.drop_table('food')
|
||||
with op.batch_alter_table('food_cat', schema=None) as batch_op:
|
||||
batch_op.drop_index(batch_op.f('idx_name'))
|
||||
|
||||
op.drop_table('food_cat')
|
||||
with op.batch_alter_table('member', schema=None) as batch_op:
|
||||
batch_op.drop_index(batch_op.f('idx_openid'))
|
||||
|
||||
op.drop_table('member')
|
||||
with op.batch_alter_table('app_access_log', schema=None) as batch_op:
|
||||
batch_op.drop_index(batch_op.f('idx_uid'))
|
||||
|
||||
op.drop_table('app_access_log')
|
||||
with op.batch_alter_table('member_address', schema=None) as batch_op:
|
||||
batch_op.drop_index(batch_op.f('idx_member_id_status'))
|
||||
|
||||
op.drop_table('member_address')
|
||||
with op.batch_alter_table('stat_daily_site', schema=None) as batch_op:
|
||||
batch_op.drop_index(batch_op.f('idx_date'))
|
||||
|
||||
op.drop_table('stat_daily_site')
|
||||
with op.batch_alter_table('pay_order_callback_data', schema=None) as batch_op:
|
||||
batch_op.drop_index(batch_op.f('pay_order_id'))
|
||||
|
||||
op.drop_table('pay_order_callback_data')
|
||||
op.drop_table('images')
|
||||
with op.batch_alter_table('stat_daily_member', schema=None) as batch_op:
|
||||
batch_op.drop_index(batch_op.f('idx_date_member_id'))
|
||||
|
||||
op.drop_table('stat_daily_member')
|
||||
op.drop_table('runoob_tbl')
|
||||
with op.batch_alter_table('food_sale_change_log', schema=None) as batch_op:
|
||||
batch_op.drop_index(batch_op.f('idx_food_id_id'))
|
||||
|
||||
op.drop_table('food_sale_change_log')
|
||||
op.drop_table('dongtai_list')
|
||||
with op.batch_alter_table('stat_daily_food', schema=None) as batch_op:
|
||||
batch_op.drop_index(batch_op.f('date_food_id'))
|
||||
|
||||
op.drop_table('stat_daily_food')
|
||||
op.drop_table('app_error_log')
|
||||
op.drop_table('mendianuserinfo')
|
||||
op.drop_table('queue_list')
|
||||
op.drop_table('wx_share_history')
|
||||
with op.batch_alter_table('container_orchestration_assistant', schema=None) as batch_op:
|
||||
batch_op.drop_index(batch_op.f('idx_category'))
|
||||
batch_op.drop_index(batch_op.f('idx_industry'))
|
||||
batch_op.drop_index(batch_op.f('idx_profession'))
|
||||
|
||||
op.drop_table('container_orchestration_assistant')
|
||||
with op.batch_alter_table('member_cart', schema=None) as batch_op:
|
||||
batch_op.drop_index(batch_op.f('idx_member_id'))
|
||||
|
||||
op.drop_table('member_cart')
|
||||
with op.batch_alter_table('pay_order_item', schema=None) as batch_op:
|
||||
batch_op.drop_index(batch_op.f('id_order_id'))
|
||||
batch_op.drop_index(batch_op.f('idx_food_id'))
|
||||
|
||||
op.drop_table('pay_order_item')
|
||||
with op.batch_alter_table('user', schema=None) as batch_op:
|
||||
batch_op.drop_index(batch_op.f('login_name'))
|
||||
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade():
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
with op.batch_alter_table('user', schema=None) as batch_op:
|
||||
batch_op.create_index(batch_op.f('login_name'), ['login_name'], unique=True)
|
||||
|
||||
op.create_table('pay_order_item',
|
||||
sa.Column('id', mysql.INTEGER(display_width=11, unsigned=True), autoincrement=True, nullable=False),
|
||||
sa.Column('pay_order_id', mysql.INTEGER(display_width=11), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='订单id'),
|
||||
sa.Column('member_id', mysql.BIGINT(display_width=11), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='会员id'),
|
||||
sa.Column('quantity', mysql.INTEGER(display_width=11), server_default=sa.text("'1'"), autoincrement=False, nullable=False, comment='购买数量 默认1份'),
|
||||
sa.Column('price', mysql.DECIMAL(precision=10, scale=2), server_default=sa.text("'0.00'"), nullable=False, comment='商品总价格,售价 * 数量'),
|
||||
sa.Column('food_id', mysql.INTEGER(display_width=11), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='美食表id'),
|
||||
sa.Column('note', mysql.TEXT(), nullable=False, comment='备注信息'),
|
||||
sa.Column('status', mysql.TINYINT(display_width=1), server_default=sa.text("'1'"), autoincrement=False, nullable=False, comment='状态:1:成功 0 失败'),
|
||||
sa.Column('updated_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='最近一次更新时间'),
|
||||
sa.Column('created_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='插入时间'),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
comment='订单详情表',
|
||||
mysql_comment='订单详情表',
|
||||
mysql_default_charset='utf8mb4',
|
||||
mysql_engine='InnoDB'
|
||||
)
|
||||
with op.batch_alter_table('pay_order_item', schema=None) as batch_op:
|
||||
batch_op.create_index(batch_op.f('idx_food_id'), ['food_id'], unique=False)
|
||||
batch_op.create_index(batch_op.f('id_order_id'), ['pay_order_id'], unique=False)
|
||||
|
||||
op.create_table('member_cart',
|
||||
sa.Column('id', mysql.INTEGER(display_width=11, unsigned=True), autoincrement=True, nullable=False),
|
||||
sa.Column('member_id', mysql.BIGINT(display_width=20), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='会员id'),
|
||||
sa.Column('food_id', mysql.INTEGER(display_width=11), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='商品id'),
|
||||
sa.Column('quantity', mysql.INTEGER(display_width=11), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='数量'),
|
||||
sa.Column('updated_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='最后一次更新时间'),
|
||||
sa.Column('created_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='插入时间'),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
comment='购物车',
|
||||
mysql_comment='购物车',
|
||||
mysql_default_charset='utf8mb4',
|
||||
mysql_engine='InnoDB'
|
||||
)
|
||||
with op.batch_alter_table('member_cart', schema=None) as batch_op:
|
||||
batch_op.create_index(batch_op.f('idx_member_id'), ['member_id'], unique=False)
|
||||
|
||||
op.create_table('container_orchestration_assistant',
|
||||
sa.Column('id', mysql.BIGINT(display_width=20), autoincrement=True, nullable=False, comment='助手ID'),
|
||||
sa.Column('name', mysql.VARCHAR(length=100), server_default=sa.text("''"), nullable=False, comment='助手名称'),
|
||||
sa.Column('description', mysql.VARCHAR(length=255), server_default=sa.text("''"), nullable=False, comment='助手描述'),
|
||||
sa.Column('category', mysql.VARCHAR(length=50), server_default=sa.text("''"), nullable=False, comment='分类(架构设计)'),
|
||||
sa.Column('industry', mysql.VARCHAR(length=50), server_default=sa.text("''"), nullable=False, comment='行业(技术研发)'),
|
||||
sa.Column('profession', mysql.VARCHAR(length=50), server_default=sa.text("''"), nullable=False, comment='职业(高级工程师)'),
|
||||
sa.Column('sub_category', mysql.VARCHAR(length=50), server_default=sa.text("''"), nullable=False, comment='子分类(容器编排)'),
|
||||
sa.Column('system_prompt', mysql.TEXT(), nullable=False, comment='系统提示词(容器化需求转换规则)'),
|
||||
sa.Column('status', mysql.TINYINT(display_width=1), server_default=sa.text("'1'"), autoincrement=False, nullable=False, comment='状态:1-有效,0-无效'),
|
||||
sa.Column('updated_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'), nullable=False, comment='最后一次更新时间'),
|
||||
sa.Column('created_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='创建时间'),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
comment='Python容器编排助手表',
|
||||
mysql_comment='Python容器编排助手表',
|
||||
mysql_default_charset='utf8mb4',
|
||||
mysql_engine='InnoDB'
|
||||
)
|
||||
with op.batch_alter_table('container_orchestration_assistant', schema=None) as batch_op:
|
||||
batch_op.create_index(batch_op.f('idx_profession'), ['profession'], unique=False)
|
||||
batch_op.create_index(batch_op.f('idx_industry'), ['industry'], unique=False)
|
||||
batch_op.create_index(batch_op.f('idx_category'), ['category'], unique=False)
|
||||
|
||||
op.create_table('wx_share_history',
|
||||
sa.Column('id', mysql.INTEGER(display_width=11, unsigned=True), autoincrement=True, nullable=False),
|
||||
sa.Column('member_id', mysql.INTEGER(display_width=11), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='会员id'),
|
||||
sa.Column('share_url', mysql.VARCHAR(length=200), server_default=sa.text("''"), nullable=False, comment='分享的页面url'),
|
||||
sa.Column('created_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='创建时间'),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
comment='微信分享记录',
|
||||
mysql_comment='微信分享记录',
|
||||
mysql_default_charset='utf8mb4',
|
||||
mysql_engine='InnoDB'
|
||||
)
|
||||
op.create_table('queue_list',
|
||||
sa.Column('id', mysql.INTEGER(display_width=11, unsigned=True), autoincrement=True, nullable=False),
|
||||
sa.Column('queue_name', mysql.VARCHAR(length=30), server_default=sa.text("''"), nullable=False, comment='队列名字'),
|
||||
sa.Column('data', mysql.VARCHAR(length=500), server_default=sa.text("''"), nullable=False, comment='队列数据'),
|
||||
sa.Column('status', mysql.TINYINT(display_width=1), server_default=sa.text("'-1'"), autoincrement=False, nullable=False, comment='状态 -1 待处理 1 已处理'),
|
||||
sa.Column('updated_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='最后一次更新时间'),
|
||||
sa.Column('created_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='插入时间'),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
comment='事件队列表',
|
||||
mysql_comment='事件队列表',
|
||||
mysql_default_charset='utf8mb4',
|
||||
mysql_engine='InnoDB'
|
||||
)
|
||||
op.create_table('mendianuserinfo',
|
||||
sa.Column('id', mysql.INTEGER(display_width=11, unsigned=True), autoincrement=True, nullable=False),
|
||||
sa.Column('nickname', mysql.VARCHAR(length=20), server_default=sa.text("''"), nullable=False, comment='会员名'),
|
||||
sa.Column('mobile', mysql.VARCHAR(length=20), server_default=sa.text("''"), nullable=False, comment='会员手机号码'),
|
||||
sa.Column('storename', mysql.VARCHAR(length=20), server_default=sa.text("'0'"), nullable=False, comment='店铺名称'),
|
||||
sa.Column('updated_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='最后一次更新时间'),
|
||||
sa.Column('created_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='插入时间'),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
comment='会员表',
|
||||
mysql_comment='会员表',
|
||||
mysql_default_charset='utf8mb4',
|
||||
mysql_engine='InnoDB'
|
||||
)
|
||||
op.create_table('app_error_log',
|
||||
sa.Column('id', mysql.INTEGER(display_width=11, unsigned=True), autoincrement=True, nullable=False),
|
||||
sa.Column('referer_url', mysql.VARCHAR(length=255), server_default=sa.text("''"), nullable=False, comment='当前访问的refer'),
|
||||
sa.Column('target_url', mysql.VARCHAR(length=255), server_default=sa.text("''"), nullable=False, comment='访问的url'),
|
||||
sa.Column('query_params', mysql.TEXT(), nullable=False, comment='get和post参数'),
|
||||
sa.Column('content', mysql.LONGTEXT(), nullable=False, comment='日志内容'),
|
||||
sa.Column('created_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='插入时间'),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
comment='app错误日表',
|
||||
mysql_comment='app错误日表',
|
||||
mysql_default_charset='utf8mb4',
|
||||
mysql_engine='InnoDB'
|
||||
)
|
||||
op.create_table('stat_daily_food',
|
||||
sa.Column('id', mysql.INTEGER(display_width=11, unsigned=True), autoincrement=True, nullable=False),
|
||||
sa.Column('date', sa.DATE(), nullable=False),
|
||||
sa.Column('food_id', mysql.INTEGER(display_width=11), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='菜品id'),
|
||||
sa.Column('total_count', mysql.INTEGER(display_width=11), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='售卖总数量'),
|
||||
sa.Column('total_pay_money', mysql.DECIMAL(precision=10, scale=2), server_default=sa.text("'0.00'"), nullable=False, comment='总售卖金额'),
|
||||
sa.Column('updated_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='最后一次更新时间'),
|
||||
sa.Column('created_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='插入时间'),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
comment='书籍售卖日统计',
|
||||
mysql_comment='书籍售卖日统计',
|
||||
mysql_default_charset='utf8mb4',
|
||||
mysql_engine='InnoDB'
|
||||
)
|
||||
with op.batch_alter_table('stat_daily_food', schema=None) as batch_op:
|
||||
batch_op.create_index(batch_op.f('date_food_id'), ['date', 'food_id'], unique=False)
|
||||
|
||||
op.create_table('dongtai_list',
|
||||
sa.Column('listid', mysql.INTEGER(display_width=10, unsigned=True), autoincrement=True, nullable=False),
|
||||
sa.Column('date', mysql.VARCHAR(length=100), server_default=sa.text("''"), nullable=False),
|
||||
sa.Column('title', mysql.VARCHAR(length=40), server_default=sa.text("''"), nullable=False),
|
||||
sa.Column('imgSrc', mysql.VARCHAR(length=100), server_default=sa.text("''"), nullable=False),
|
||||
sa.Column('avatar', mysql.VARCHAR(length=100), server_default=sa.text("''"), nullable=False),
|
||||
sa.Column('content', mysql.VARCHAR(length=128), server_default=sa.text("''"), nullable=False),
|
||||
sa.Column('reading', mysql.VARCHAR(length=128), server_default=sa.text("''"), nullable=False),
|
||||
sa.Column('collection', mysql.VARCHAR(length=128), server_default=sa.text("''"), nullable=False),
|
||||
sa.Column('headImgSrc', mysql.VARCHAR(length=100), nullable=False),
|
||||
sa.Column('author', mysql.VARCHAR(length=100), server_default=sa.text("''"), nullable=False),
|
||||
sa.Column('dateTime', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False),
|
||||
sa.Column('postId', mysql.INTEGER(display_width=10), autoincrement=False, nullable=False),
|
||||
sa.PrimaryKeyConstraint('listid'),
|
||||
mysql_default_charset='utf8',
|
||||
mysql_engine='InnoDB'
|
||||
)
|
||||
op.create_table('food_sale_change_log',
|
||||
sa.Column('id', mysql.INTEGER(display_width=11, unsigned=True), autoincrement=True, nullable=False),
|
||||
sa.Column('food_id', mysql.INTEGER(display_width=11), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='商品id'),
|
||||
sa.Column('quantity', mysql.INTEGER(display_width=11), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='售卖数量'),
|
||||
sa.Column('price', mysql.DECIMAL(precision=10, scale=2), server_default=sa.text("'0.00'"), nullable=False, comment='售卖金额'),
|
||||
sa.Column('member_id', mysql.INTEGER(display_width=11), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='会员id'),
|
||||
sa.Column('created_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='售卖时间'),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
comment='商品销售情况',
|
||||
mysql_comment='商品销售情况',
|
||||
mysql_default_charset='utf8mb4',
|
||||
mysql_engine='InnoDB'
|
||||
)
|
||||
with op.batch_alter_table('food_sale_change_log', schema=None) as batch_op:
|
||||
batch_op.create_index(batch_op.f('idx_food_id_id'), ['food_id'], unique=False)
|
||||
|
||||
op.create_table('runoob_tbl',
|
||||
sa.Column('runoob_id', mysql.INTEGER(display_width=10, unsigned=True), autoincrement=True, nullable=False),
|
||||
sa.Column('runoob_title', mysql.VARCHAR(length=100), nullable=False),
|
||||
sa.Column('runoob_author', mysql.VARCHAR(length=40), nullable=False),
|
||||
sa.Column('submission_date', sa.DATE(), nullable=True),
|
||||
sa.PrimaryKeyConstraint('runoob_id'),
|
||||
mysql_default_charset='utf8',
|
||||
mysql_engine='InnoDB'
|
||||
)
|
||||
op.create_table('stat_daily_member',
|
||||
sa.Column('id', mysql.INTEGER(display_width=11, unsigned=True), autoincrement=True, nullable=False),
|
||||
sa.Column('date', sa.DATE(), nullable=False, comment='日期'),
|
||||
sa.Column('member_id', mysql.INTEGER(display_width=11), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='会员id'),
|
||||
sa.Column('total_shared_count', mysql.INTEGER(display_width=11), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='当日分享总次数'),
|
||||
sa.Column('total_pay_money', mysql.DECIMAL(precision=10, scale=2), server_default=sa.text("'0.00'"), nullable=False, comment='当日付款总金额'),
|
||||
sa.Column('updated_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='最后一次更新时间'),
|
||||
sa.Column('created_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='插入时间'),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
comment='会员日统计',
|
||||
mysql_comment='会员日统计',
|
||||
mysql_default_charset='utf8mb4',
|
||||
mysql_engine='InnoDB'
|
||||
)
|
||||
with op.batch_alter_table('stat_daily_member', schema=None) as batch_op:
|
||||
batch_op.create_index(batch_op.f('idx_date_member_id'), ['date', 'member_id'], unique=False)
|
||||
|
||||
op.create_table('images',
|
||||
sa.Column('id', mysql.INTEGER(display_width=11, unsigned=True), autoincrement=True, nullable=False),
|
||||
sa.Column('file_key', mysql.VARCHAR(length=60), server_default=sa.text("''"), nullable=False, comment='文件名'),
|
||||
sa.Column('created_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='插入时间'),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
mysql_default_charset='utf8mb4',
|
||||
mysql_engine='InnoDB'
|
||||
)
|
||||
op.create_table('pay_order_callback_data',
|
||||
sa.Column('id', mysql.INTEGER(display_width=11), autoincrement=True, nullable=False),
|
||||
sa.Column('pay_order_id', mysql.INTEGER(display_width=11), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='支付订单id'),
|
||||
sa.Column('pay_data', mysql.TEXT(), nullable=False, comment='支付回调信息'),
|
||||
sa.Column('refund_data', mysql.TEXT(), nullable=False, comment='退款回调信息'),
|
||||
sa.Column('updated_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='最后一次更新时间'),
|
||||
sa.Column('created_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='创建时间'),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
mysql_default_charset='utf8mb4',
|
||||
mysql_engine='InnoDB'
|
||||
)
|
||||
with op.batch_alter_table('pay_order_callback_data', schema=None) as batch_op:
|
||||
batch_op.create_index(batch_op.f('pay_order_id'), ['pay_order_id'], unique=True)
|
||||
|
||||
op.create_table('stat_daily_site',
|
||||
sa.Column('id', mysql.INTEGER(display_width=11, unsigned=True), autoincrement=True, nullable=False),
|
||||
sa.Column('date', sa.DATE(), nullable=False, comment='日期'),
|
||||
sa.Column('total_pay_money', mysql.DECIMAL(precision=10, scale=2), server_default=sa.text("'0.00'"), nullable=False, comment='当日应收总金额'),
|
||||
sa.Column('total_member_count', mysql.INTEGER(display_width=11), autoincrement=False, nullable=False, comment='会员总数'),
|
||||
sa.Column('total_new_member_count', mysql.INTEGER(display_width=11), autoincrement=False, nullable=False, comment='当日新增会员数'),
|
||||
sa.Column('total_order_count', mysql.INTEGER(display_width=11), autoincrement=False, nullable=False, comment='当日订单数'),
|
||||
sa.Column('total_shared_count', mysql.INTEGER(display_width=11), autoincrement=False, nullable=False),
|
||||
sa.Column('updated_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='最后一次更新时间'),
|
||||
sa.Column('created_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='插入时间'),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
comment='全站日统计',
|
||||
mysql_comment='全站日统计',
|
||||
mysql_default_charset='utf8mb4',
|
||||
mysql_engine='InnoDB'
|
||||
)
|
||||
with op.batch_alter_table('stat_daily_site', schema=None) as batch_op:
|
||||
batch_op.create_index(batch_op.f('idx_date'), ['date'], unique=False)
|
||||
|
||||
op.create_table('member_address',
|
||||
sa.Column('id', mysql.INTEGER(display_width=11, unsigned=True), autoincrement=True, nullable=False),
|
||||
sa.Column('member_id', mysql.INTEGER(display_width=11), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='会员id'),
|
||||
sa.Column('nickname', mysql.VARCHAR(length=20), server_default=sa.text("''"), nullable=False, comment='收货人姓名'),
|
||||
sa.Column('mobile', mysql.VARCHAR(length=11), server_default=sa.text("''"), nullable=False, comment='收货人手机号码'),
|
||||
sa.Column('province_id', mysql.INTEGER(display_width=11), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='省id'),
|
||||
sa.Column('province_str', mysql.VARCHAR(length=50), server_default=sa.text("''"), nullable=False, comment='省名称'),
|
||||
sa.Column('city_id', mysql.INTEGER(display_width=11), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='城市id'),
|
||||
sa.Column('city_str', mysql.VARCHAR(length=50), server_default=sa.text("''"), nullable=False, comment='市名称'),
|
||||
sa.Column('area_id', mysql.INTEGER(display_width=11), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='区域id'),
|
||||
sa.Column('area_str', mysql.VARCHAR(length=50), server_default=sa.text("''"), nullable=False, comment='区域名称'),
|
||||
sa.Column('address', mysql.VARCHAR(length=100), server_default=sa.text("''"), nullable=False, comment='详细地址'),
|
||||
sa.Column('status', mysql.TINYINT(display_width=1), server_default=sa.text("'1'"), autoincrement=False, nullable=False, comment='是否有效 1:有效 0:无效'),
|
||||
sa.Column('is_default', mysql.TINYINT(display_width=1), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='默认地址'),
|
||||
sa.Column('updated_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='最后一次更新时间'),
|
||||
sa.Column('created_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='插入时间'),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
comment='会员收货地址',
|
||||
mysql_comment='会员收货地址',
|
||||
mysql_default_charset='utf8mb4',
|
||||
mysql_engine='InnoDB'
|
||||
)
|
||||
with op.batch_alter_table('member_address', schema=None) as batch_op:
|
||||
batch_op.create_index(batch_op.f('idx_member_id_status'), ['member_id', 'status'], unique=False)
|
||||
|
||||
op.create_table('app_access_log',
|
||||
sa.Column('id', mysql.INTEGER(display_width=11), autoincrement=True, nullable=False),
|
||||
sa.Column('uid', mysql.BIGINT(display_width=20), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='uid'),
|
||||
sa.Column('referer_url', mysql.VARCHAR(length=255), server_default=sa.text("''"), nullable=False, comment='当前访问的refer'),
|
||||
sa.Column('target_url', mysql.VARCHAR(length=255), server_default=sa.text("''"), nullable=False, comment='访问的url'),
|
||||
sa.Column('query_params', mysql.TEXT(), nullable=False, comment='get和post参数'),
|
||||
sa.Column('ua', mysql.VARCHAR(length=255), server_default=sa.text("''"), nullable=False, comment='访问ua'),
|
||||
sa.Column('ip', mysql.VARCHAR(length=32), server_default=sa.text("''"), nullable=False, comment='访问ip'),
|
||||
sa.Column('note', mysql.VARCHAR(length=1000), server_default=sa.text("''"), nullable=False, comment='json格式备注字段'),
|
||||
sa.Column('created_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
comment='用户访问记录表',
|
||||
mysql_comment='用户访问记录表',
|
||||
mysql_default_charset='utf8mb4',
|
||||
mysql_engine='InnoDB'
|
||||
)
|
||||
with op.batch_alter_table('app_access_log', schema=None) as batch_op:
|
||||
batch_op.create_index(batch_op.f('idx_uid'), ['uid'], unique=False)
|
||||
|
||||
op.create_table('member',
|
||||
sa.Column('id', mysql.INTEGER(display_width=11), autoincrement=True, nullable=False),
|
||||
sa.Column('openid', mysql.VARCHAR(length=80), nullable=False, comment='微信openid'),
|
||||
sa.Column('nickname', mysql.VARCHAR(length=100), nullable=True, comment='用户昵称'),
|
||||
sa.Column('mobile', mysql.VARCHAR(length=11), nullable=True, comment='手机号码'),
|
||||
sa.Column('sex', mysql.INTEGER(display_width=11), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='性别 1:男 2:女'),
|
||||
sa.Column('avatar', mysql.VARCHAR(length=200), server_default=sa.text("''"), nullable=False, comment='头像'),
|
||||
sa.Column('salt', mysql.VARCHAR(length=32), nullable=False, comment='随机加密串'),
|
||||
sa.Column('reg_ip', mysql.VARCHAR(length=100), server_default=sa.text("''"), nullable=False, comment='注册IP'),
|
||||
sa.Column('status', mysql.INTEGER(display_width=11), server_default=sa.text("'1'"), autoincrement=False, nullable=False, comment='状态 1:有效 0:无效'),
|
||||
sa.Column('updated_time', mysql.DATETIME(), server_default=sa.text('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'), nullable=False, comment='最后一次更新时间'),
|
||||
sa.Column('created_time', mysql.DATETIME(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='创建时间'),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
comment='会员表',
|
||||
mysql_comment='会员表',
|
||||
mysql_default_charset='utf8mb4',
|
||||
mysql_engine='InnoDB'
|
||||
)
|
||||
with op.batch_alter_table('member', schema=None) as batch_op:
|
||||
batch_op.create_index(batch_op.f('idx_openid'), ['openid'], unique=False)
|
||||
|
||||
op.create_table('food_cat',
|
||||
sa.Column('id', mysql.INTEGER(display_width=11, unsigned=True), autoincrement=True, nullable=False),
|
||||
sa.Column('name', mysql.VARCHAR(length=50), server_default=sa.text("''"), nullable=False, comment='类别名称'),
|
||||
sa.Column('weight', mysql.TINYINT(display_width=4), server_default=sa.text("'1'"), autoincrement=False, nullable=False, comment='权重'),
|
||||
sa.Column('status', mysql.TINYINT(display_width=1), server_default=sa.text("'1'"), autoincrement=False, nullable=False, comment='状态 1:有效 0:无效'),
|
||||
sa.Column('updated_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='最后一次更新时间'),
|
||||
sa.Column('created_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='插入时间'),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
comment='食品分类',
|
||||
mysql_comment='食品分类',
|
||||
mysql_default_charset='utf8mb4',
|
||||
mysql_engine='InnoDB'
|
||||
)
|
||||
with op.batch_alter_table('food_cat', schema=None) as batch_op:
|
||||
batch_op.create_index(batch_op.f('idx_name'), ['id'], unique=True)
|
||||
|
||||
op.create_table('food',
|
||||
sa.Column('id', mysql.INTEGER(display_width=11, unsigned=True), autoincrement=True, nullable=False),
|
||||
sa.Column('cat_id', mysql.INTEGER(display_width=11), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='分类id'),
|
||||
sa.Column('name', mysql.VARCHAR(length=100), server_default=sa.text("''"), nullable=False, comment='书籍名称'),
|
||||
sa.Column('price', mysql.DECIMAL(precision=10, scale=2), server_default=sa.text("'0.00'"), nullable=False, comment='售卖金额'),
|
||||
sa.Column('main_image', mysql.VARCHAR(length=100), server_default=sa.text("''"), nullable=False, comment='主图'),
|
||||
sa.Column('summary', mysql.VARCHAR(length=10000), server_default=sa.text("''"), nullable=False, comment='描述'),
|
||||
sa.Column('stock', mysql.INTEGER(display_width=11), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='库存量'),
|
||||
sa.Column('tags', mysql.VARCHAR(length=200), server_default=sa.text("''"), nullable=False, comment='tag关键字,以","连接'),
|
||||
sa.Column('status', mysql.TINYINT(display_width=1), server_default=sa.text("'1'"), autoincrement=False, nullable=False, comment='状态 1:有效 0:无效'),
|
||||
sa.Column('month_count', mysql.INTEGER(display_width=11), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='月销售数量'),
|
||||
sa.Column('total_count', mysql.INTEGER(display_width=11), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='总销售量'),
|
||||
sa.Column('view_count', mysql.INTEGER(display_width=11), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='总浏览次数'),
|
||||
sa.Column('comment_count', mysql.INTEGER(display_width=11), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='总评论量'),
|
||||
sa.Column('updated_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='最后更新时间'),
|
||||
sa.Column('created_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='最后插入时间'),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
comment='食品表',
|
||||
mysql_comment='食品表',
|
||||
mysql_default_charset='utf8mb4',
|
||||
mysql_engine='InnoDB'
|
||||
)
|
||||
op.create_table('member_comments',
|
||||
sa.Column('id', mysql.INTEGER(display_width=11, unsigned=True), autoincrement=True, nullable=False),
|
||||
sa.Column('member_id', mysql.INTEGER(display_width=11), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='会员id'),
|
||||
sa.Column('food_ids', mysql.VARCHAR(length=200), server_default=sa.text("''"), nullable=False, comment='商品ids'),
|
||||
sa.Column('pay_order_id', mysql.INTEGER(display_width=11), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='订单id'),
|
||||
sa.Column('score', mysql.TINYINT(display_width=4), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='评分'),
|
||||
sa.Column('content', mysql.VARCHAR(length=200), server_default=sa.text("''"), nullable=False, comment='评论内容'),
|
||||
sa.Column('created_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'), nullable=False, comment='插入时间'),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
comment='会员评论表',
|
||||
mysql_comment='会员评论表',
|
||||
mysql_default_charset='utf8mb4',
|
||||
mysql_engine='InnoDB'
|
||||
)
|
||||
with op.batch_alter_table('member_comments', schema=None) as batch_op:
|
||||
batch_op.create_index(batch_op.f('idx_member_id'), ['member_id'], unique=False)
|
||||
|
||||
op.create_table('mendianusertwo',
|
||||
sa.Column('id', mysql.INTEGER(display_width=100), server_default=sa.text("'0'"), autoincrement=False, nullable=False),
|
||||
sa.Column('name', mysql.VARCHAR(length=100), nullable=False),
|
||||
sa.Column('phone', mysql.VARCHAR(length=100), nullable=False),
|
||||
sa.Column('storename', mysql.VARCHAR(length=100), nullable=False),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
mysql_default_charset='utf8mb4',
|
||||
mysql_engine='InnoDB'
|
||||
)
|
||||
op.create_table('pay_order',
|
||||
sa.Column('id', mysql.INTEGER(display_width=11, unsigned=True), autoincrement=True, nullable=False),
|
||||
sa.Column('order_sn', mysql.VARCHAR(length=40), server_default=sa.text("''"), nullable=False, comment='随机订单号'),
|
||||
sa.Column('member_id', mysql.BIGINT(display_width=11), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='会员id'),
|
||||
sa.Column('total_price', mysql.DECIMAL(precision=10, scale=2), server_default=sa.text("'0.00'"), nullable=False, comment='订单应付金额'),
|
||||
sa.Column('yun_price', mysql.DECIMAL(precision=10, scale=2), server_default=sa.text("'0.00'"), nullable=False, comment='运费金额'),
|
||||
sa.Column('pay_price', mysql.DECIMAL(precision=10, scale=2), server_default=sa.text("'0.00'"), nullable=False, comment='订单实付金额'),
|
||||
sa.Column('pay_sn', mysql.VARCHAR(length=128), server_default=sa.text("''"), nullable=False, comment='第三方流水号'),
|
||||
sa.Column('prepay_id', mysql.VARCHAR(length=128), server_default=sa.text("''"), nullable=False, comment='第三方预付id'),
|
||||
sa.Column('note', mysql.TEXT(), nullable=False, comment='备注信息'),
|
||||
sa.Column('status', mysql.TINYINT(display_width=4), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='1:支付完成 0 无效 -1 申请退款 -2 退款中 -9 退款成功 -8 待支付 -7 完成支付待确认'),
|
||||
sa.Column('express_status', mysql.TINYINT(display_width=4), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='快递状态,-8 待支付 -7 已付款待发货 1:确认收货 0:失败'),
|
||||
sa.Column('express_address_id', mysql.INTEGER(display_width=11), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='快递地址id'),
|
||||
sa.Column('express_info', mysql.VARCHAR(length=1000), server_default=sa.text("''"), nullable=False, comment='快递信息'),
|
||||
sa.Column('comment_status', mysql.TINYINT(display_width=1), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='评论状态'),
|
||||
sa.Column('pay_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='付款到账时间'),
|
||||
sa.Column('updated_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='最近一次更新时间'),
|
||||
sa.Column('created_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='插入时间'),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
comment='在线购买订单表',
|
||||
mysql_comment='在线购买订单表',
|
||||
mysql_default_charset='utf8mb4',
|
||||
mysql_engine='InnoDB'
|
||||
)
|
||||
with op.batch_alter_table('pay_order', schema=None) as batch_op:
|
||||
batch_op.create_index(batch_op.f('idx_order_sn'), ['order_sn'], unique=True)
|
||||
batch_op.create_index(batch_op.f('idx_member_id_status'), ['member_id', 'status'], unique=False)
|
||||
|
||||
op.create_table('oauth_access_token',
|
||||
sa.Column('id', mysql.INTEGER(display_width=11, unsigned=True), autoincrement=True, nullable=False),
|
||||
sa.Column('access_token', mysql.VARCHAR(length=600), server_default=sa.text("''"), nullable=False),
|
||||
sa.Column('expired_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='过期时间'),
|
||||
sa.Column('created_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='插入时间'),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
comment='微信的access_token 用户调用其他接口的',
|
||||
mysql_comment='微信的access_token 用户调用其他接口的',
|
||||
mysql_default_charset='utf8mb4',
|
||||
mysql_engine='InnoDB'
|
||||
)
|
||||
with op.batch_alter_table('oauth_access_token', schema=None) as batch_op:
|
||||
batch_op.create_index(batch_op.f('idx_expired_time'), ['expired_time'], unique=False)
|
||||
|
||||
op.create_table('food_stock_change_log',
|
||||
sa.Column('id', mysql.INTEGER(display_width=11, unsigned=True), autoincrement=True, nullable=False),
|
||||
sa.Column('food_id', mysql.INTEGER(display_width=11), autoincrement=False, nullable=False, comment='商品id'),
|
||||
sa.Column('unit', mysql.INTEGER(display_width=11), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='变更多少'),
|
||||
sa.Column('total_stock', mysql.INTEGER(display_width=11), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='变更之后总量'),
|
||||
sa.Column('note', mysql.VARCHAR(length=100), server_default=sa.text("''"), nullable=False, comment='备注字段'),
|
||||
sa.Column('created_time', mysql.DATETIME(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='插入时间'),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
comment='数据库存变更表',
|
||||
mysql_comment='数据库存变更表',
|
||||
mysql_default_charset='utf8mb4',
|
||||
mysql_engine='InnoDB'
|
||||
)
|
||||
with op.batch_alter_table('food_stock_change_log', schema=None) as batch_op:
|
||||
batch_op.create_index(batch_op.f('idx_food_id'), ['food_id'], unique=False)
|
||||
|
||||
op.create_table('oauth_member_bind',
|
||||
sa.Column('id', mysql.INTEGER(display_width=11, unsigned=True), autoincrement=True, nullable=False),
|
||||
sa.Column('member_id', mysql.INTEGER(display_width=11), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='会员id'),
|
||||
sa.Column('client_type', mysql.VARCHAR(length=20), server_default=sa.text("''"), nullable=False, comment='客户端来源类型。qq,weibo,weixin'),
|
||||
sa.Column('type', mysql.TINYINT(display_width=3), server_default=sa.text("'0'"), autoincrement=False, nullable=False, comment='类型 type 1:wechat '),
|
||||
sa.Column('openid', mysql.VARCHAR(length=80), server_default=sa.text("''"), nullable=False, comment='第三方id'),
|
||||
sa.Column('unionid', mysql.VARCHAR(length=100), server_default=sa.text("''"), nullable=False),
|
||||
sa.Column('extra', mysql.TEXT(), nullable=False, comment='额外字段'),
|
||||
sa.Column('updated_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='最后更新时间'),
|
||||
sa.Column('created_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='插入时间'),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
comment='第三方登录绑定关系',
|
||||
mysql_comment='第三方登录绑定关系',
|
||||
mysql_default_charset='utf8mb4',
|
||||
mysql_engine='InnoDB'
|
||||
)
|
||||
with op.batch_alter_table('oauth_member_bind', schema=None) as batch_op:
|
||||
batch_op.create_index(batch_op.f('idx_type_openid'), ['type', 'openid'], unique=False)
|
||||
|
||||
op.create_table('deviceinfo',
|
||||
sa.Column('id', mysql.INTEGER(display_width=11, unsigned=True), autoincrement=True, nullable=False),
|
||||
sa.Column('nickname', mysql.VARCHAR(length=100), server_default=sa.text("''"), nullable=False, comment='会员名'),
|
||||
sa.Column('jiguang', mysql.VARCHAR(length=100), server_default=sa.text("''"), nullable=False, comment='极光id'),
|
||||
sa.Column('version', mysql.VARCHAR(length=100), server_default=sa.text("''"), nullable=False, comment='版本号'),
|
||||
sa.Column('xiaoqu', mysql.VARCHAR(length=100), server_default=sa.text("''"), nullable=False, comment='小区'),
|
||||
sa.Column('louhao', mysql.VARCHAR(length=100), server_default=sa.text("''"), nullable=False, comment='楼号'),
|
||||
sa.Column('danyuan', mysql.VARCHAR(length=100), server_default=sa.text("''"), nullable=False, comment='单元号'),
|
||||
sa.Column('jingdu', mysql.VARCHAR(length=100), server_default=sa.text("''"), nullable=False, comment='经度'),
|
||||
sa.Column('weidu', mysql.VARCHAR(length=100), server_default=sa.text("''"), nullable=False, comment='纬度'),
|
||||
sa.Column('snnum', mysql.VARCHAR(length=100), server_default=sa.text("''"), nullable=False, comment='sn号'),
|
||||
sa.Column('mobile', mysql.VARCHAR(length=11), server_default=sa.text("''"), nullable=False, comment='会员手机号码'),
|
||||
sa.Column('reg_ip', mysql.VARCHAR(length=100), server_default=sa.text("''"), nullable=False, comment='注册ip'),
|
||||
sa.Column('updated_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='最后一次更新时间'),
|
||||
sa.Column('created_time', mysql.TIMESTAMP(), server_default=sa.text('CURRENT_TIMESTAMP'), nullable=False, comment='插入时间'),
|
||||
sa.PrimaryKeyConstraint('id'),
|
||||
comment='设备注册表',
|
||||
mysql_comment='设备注册表',
|
||||
mysql_default_charset='utf8mb4',
|
||||
mysql_engine='InnoDB'
|
||||
)
|
||||
# ### end Alembic commands ###
|
||||
@@ -3,4 +3,4 @@ from src.flask_prompt_master import create_app
|
||||
app = create_app()
|
||||
|
||||
if __name__ == '__main__':
|
||||
app.run(host='0.0.0.0', port=5000, debug=True)
|
||||
app.run(host='0.0.0.0', port=5002, debug=True)
|
||||
@@ -8,7 +8,7 @@ if __name__ == '__main__':
|
||||
app = create_app()
|
||||
app.run(
|
||||
host='0.0.0.0', # 绑定到所有地址
|
||||
port=5000,
|
||||
port=5002,
|
||||
debug=True,
|
||||
use_reloader=False # 禁用自动重载,避免连接问题
|
||||
)
|
||||
|
||||
@@ -17,15 +17,15 @@ def main():
|
||||
app = create_app()
|
||||
|
||||
# 获取端口号(支持环境变量配置)
|
||||
port = int(os.environ.get('PORT', 5001))
|
||||
port = int(os.environ.get('PORT', 5002))
|
||||
|
||||
print("=" * 60)
|
||||
print("🚀 Flask 提示词大师 - 生产环境启动(外网访问)")
|
||||
print("=" * 60)
|
||||
print(f"📊 环境: {os.environ.get('FLASK_ENV', 'unknown')}")
|
||||
print(f"🌐 服务器: Flask 内置服务器")
|
||||
print(f"🔗 内网地址: http://10.0.4.13:{port}")
|
||||
print(f"🌍 外网地址: http://101.43.95.130:{port}")
|
||||
print(f"🔗 内网地址: http://10.0.4.13:5002")
|
||||
print(f"🌍 外网地址: http://101.43.95.130:5002")
|
||||
print(f"📝 日志: 控制台输出")
|
||||
print("=" * 60)
|
||||
print("✅ 服务器启动中...")
|
||||
|
||||
@@ -33,7 +33,7 @@ def main():
|
||||
# 启动 Flask 内置服务器(生产模式配置)
|
||||
app.run(
|
||||
host='0.0.0.0',
|
||||
port=5001, # 修改端口为5001
|
||||
port=5002, # 修改端口为5002
|
||||
debug=False, # 生产环境关闭调试
|
||||
threaded=True, # 启用多线程
|
||||
use_reloader=False # 关闭自动重载
|
||||
|
||||
Binary file not shown.
BIN
src/flask_prompt_master/__pycache__/__init__.cpython-36.pyc
Normal file
BIN
src/flask_prompt_master/__pycache__/__init__.cpython-36.pyc
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user