feat: Web管理系统 + Docker支持

- 多账号管理(异步登录、状态轮询)
- 购物车预售商品同步(倒计时/定时开售)
- 定时抢购(自动刷新、SKU选择、重试机制)
- 账号隔离调度(同账号顺序、跨账号并行)
- Web面板(任务分组、实时倒计时、批量操作)
- Dockerfile + docker-compose
This commit is contained in:
2026-03-18 13:38:17 +08:00
parent 7aea2ca2a8
commit 822a4636c0
28 changed files with 1966 additions and 66 deletions

35
server/app.py Normal file
View File

@@ -0,0 +1,35 @@
import os
import sys
# 确保项目根目录在 sys.path 中
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..'))
from flask import Flask, redirect, url_for
from server.database import init_db
from server.routers import accounts, tasks, orders
def create_app():
app = Flask(
__name__,
template_folder=os.path.join(os.path.dirname(__file__), '..', 'templates'),
static_folder=os.path.join(os.path.dirname(__file__), '..', 'static'),
)
app.secret_key = 'snatcher-secret-key-change-me'
init_db()
app.register_blueprint(accounts.bp)
app.register_blueprint(tasks.bp)
app.register_blueprint(orders.bp)
@app.route('/')
def index():
return redirect(url_for('tasks.list_tasks'))
return app
if __name__ == '__main__':
app = create_app()
app.run(host='0.0.0.0', port=9000, debug=True)