重构为 HTTP SSO 扫码方案并引入 Vue3 前端

移除 Playwright 浏览器自动化,改用 passport/SSO HTTP 接口获取二维码与轮询登录;后端模块化拆分,前端替换为 Vue3 SPA。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
travel
2026-06-25 10:47:55 +08:00
parent 853dacf528
commit 9e0644095f
33 changed files with 4792 additions and 1640 deletions
+44
View File
@@ -0,0 +1,44 @@
import logging
import os
from logging.handlers import RotatingFileHandler
from flask import Flask
from backend.config import FRONTEND_DIST, LOG_DIR, PORT, SECRET_KEY_PATH, STATIC_DIR
from backend.routes.api import api_bp
from backend.routes.spa import spa_bp
os.makedirs(LOG_DIR, exist_ok=True)
os.makedirs(STATIC_DIR, exist_ok=True)
def _load_secret_key():
secret = os.environ.get("SECRET_KEY")
if not secret and os.path.exists(SECRET_KEY_PATH):
with open(SECRET_KEY_PATH, "rb") as f:
secret = f.read()
if not secret:
secret = os.urandom(24)
with open(SECRET_KEY_PATH, "wb") as f:
f.write(secret)
return secret
def create_app():
app = Flask(__name__)
app.secret_key = _load_secret_key()
handler = RotatingFileHandler(
os.path.join(LOG_DIR, "app.log"),
maxBytes=1024 * 1024 * 10,
backupCount=5,
encoding="utf-8",
)
handler.setLevel(logging.INFO)
handler.setFormatter(logging.Formatter("%(asctime)s - %(levelname)s - %(message)s"))
app.logger.addHandler(handler)
app.logger.setLevel(logging.INFO)
app.register_blueprint(api_bp)
app.register_blueprint(spa_bp)
return app