9e0644095f
移除 Playwright 浏览器自动化,改用 passport/SSO HTTP 接口获取二维码与轮询登录;后端模块化拆分,前端替换为 Vue3 SPA。 Co-authored-by: Cursor <cursoragent@cursor.com>
45 lines
1.2 KiB
Python
45 lines
1.2 KiB
Python
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
|