""" NeoZQYY 后端 API 入口 基于 FastAPI 构建,为管理后台和微信小程序提供 RESTful API。 OpenAPI 文档自动生成于 /docs(Swagger UI)和 /redoc(ReDoc)。 """ from contextlib import asynccontextmanager from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from app import config # CHANGE 2026-02-19 | 新增 xcx_test 路由(MVP 验证)+ wx_callback 路由(微信消息推送) from app.routers import auth, execution, schedules, tasks, env_config, db_viewer, etl_status, xcx_test, wx_callback from app.services.scheduler import scheduler from app.services.task_queue import task_queue from app.ws.logs import ws_router @asynccontextmanager async def lifespan(app: FastAPI): """应用生命周期:启动时拉起后台服务,关闭时优雅停止。""" # 启动 task_queue.start() scheduler.start() yield # 关闭 await scheduler.stop() await task_queue.stop() app = FastAPI( title="NeoZQYY API", description="台球门店运营助手 — 后端 API(管理后台 + 微信小程序)", version="0.1.0", docs_url="/docs", redoc_url="/redoc", lifespan=lifespan, ) # ---- CORS 中间件 ---- # 允许来源从环境变量 CORS_ORIGINS 读取,缺省允许 Vite 开发服务器 (localhost:5173) app.add_middleware( CORSMiddleware, allow_origins=config.CORS_ORIGINS, allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) # ---- 路由注册 ---- app.include_router(auth.router) app.include_router(tasks.router) app.include_router(execution.router) app.include_router(schedules.router) app.include_router(env_config.router) app.include_router(db_viewer.router) app.include_router(etl_status.router) app.include_router(ws_router) app.include_router(xcx_test.router) app.include_router(wx_callback.router) @app.get("/health", tags=["系统"]) async def health_check(): """健康检查端点,用于探活和监控。""" return {"status": "ok"}