""" 主应用入口 """ from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from .core.database import create_tables from .core.config import settings from .routers import auth, user, game, websocket, system, streamer, admin, announcement from .services.scheduler_service import SchedulerService # 创建应用 app = FastAPI( title="互动竞猜开宝箱系统", description="基于奖池制的直播互动竞猜系统", version="2.0.0", redirect_slashes=False ) # 添加CORS中间件 - 从配置读取 app.add_middleware( CORSMiddleware, allow_origins=settings.cors.get_allow_origins(), allow_credentials=settings.cors.ALLOW_CREDENTIALS, allow_methods=settings.cors.get_allow_methods(), allow_headers=settings.cors.get_allow_headers(), ) # 注册路由 app.include_router(auth.router) app.include_router(user.router) app.include_router(game.router) app.include_router(websocket.router) app.include_router(system.router) app.include_router(streamer.router) app.include_router(admin.router) # 管理员后台路由 app.include_router(announcement.router) # 公告路由 @app.on_event("startup") async def startup_event(): """ 应用启动时创建数据库表 """ create_tables() print("Database tables created successfully") # 启动定时任务调度器 import asyncio asyncio.create_task(SchedulerService.start_scheduler()) print("Scheduler service started successfully") @app.get("/") async def root(): """ 根路径 """ return { "message": "互动竞猜开宝箱系统 API", "version": "1.0.0", "docs": "/docs" } if __name__ == "__main__": import uvicorn uvicorn.run( "backend.app.main:app", host=settings.server.HOST, port=settings.server.PORT, reload=True, log_level=settings.server.LOG_LEVEL )