# 文件路径: inventory-backend/app/__init__.py from flask import Flask from config import Config from app.extensions import db, migrate, cors def create_app(): app = Flask(__name__) app.config.from_object(Config) # 1. 初始化插件 db.init_app(app) migrate.init_app(app, db) # 确保跨域配置 cors.init_app(app, resources={r"/api/*": {"origins": "*"}}) # ========================================================= # 2. 注册蓝图 (Blueprints) # ========================================================= # 注册入库聚合模块 (Inbound) try: # 指向聚合文件: app/api/v1/inbound/__init__.py from app.api.v1.inbound import inbound_bp # 注册父蓝图,路由前缀为 /api/v1/inbound # 最终路由效果: # /api/v1/inbound + /buy/list -> /api/v1/inbound/buy/list # /api/v1/inbound + /semi/list -> /api/v1/inbound/semi/list app.register_blueprint(inbound_bp, url_prefix='/api/v1/inbound') print("✅ Inbound (Buy & Semi) 模块注册成功") except ImportError as e: print(f"❌ 错误: Inbound 模块导入失败: {e}") # ========================================================= # 3. 预加载数据模型 (解决 relationship 找不到模型的问题) # ========================================================= with app.app_context(): try: # ✅ 修正点:引用新路径 (不再引用 app.models.stock) from app.models.inbound.buy import StockBuy from app.models.inbound.semi import StockSemi from app.models.material import MaterialBase # 如果是开发环境且没有迁移文件,可以取消注释下面这行来创建表 # db.create_all() except ImportError as e: print(f"⚠️ 模型预加载失败: {e}") return app