baoxiang/backend/app/main.py
2025-12-16 18:06:50 +08:00

72 lines
1.9 KiB
Python

"""
主应用入口
"""
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
)