# flask_app.py — 入口:app 创建 + 蓝图注册 + 迁移 + 启动 # 拆分后仅 ~35 行,所有路由在 routes.py,业务辅助在 helpers.py,基础设施在 db.py import os import sys # 确保 backend 目录在 sys.path 中(兼容 gunicorn --preload 模式) _backend_dir = os.path.dirname(os.path.abspath(__file__)) if _backend_dir not in sys.path: sys.path.insert(0, _backend_dir) from flask import Flask from db import ROOT # 触发 load_dotenv + 建目录 from routes import bp from migrations import run_migrations app = Flask( __name__, template_folder=str(ROOT / "templates"), static_folder=str(ROOT / "static"), ) app.secret_key = os.environ.get("SECRET_KEY", "opc-dev-secret-2026") app.register_blueprint(bp) # 模块级执行迁移(保留 gunicorn --preload 行为:导入即触发) run_migrations() if __name__ == "__main__": app.run( host="127.0.0.1", port=5177, debug=os.environ.get("FLASK_DEBUG", "false").lower() in ("true", "1", "yes"), )