from contextlib import asynccontextmanager from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from app.core.database import SessionLocal from app.services.seed import seed_initial_data from app.services.scheduler.watchdog import start_watchdog, stop_watchdog from app.api.v1.router import api_router @asynccontextmanager async def lifespan(app: FastAPI): # Startup db = SessionLocal() try: seed_initial_data(db) finally: db.close() start_watchdog() yield # Shutdown stop_watchdog() app = FastAPI( title="Virtual MIS API", version="2.0.0", description="SaaS 虛擬 MIS 平台管理後端", lifespan=lifespan, ) app.add_middleware( CORSMiddleware, allow_origins=["http://localhost:10280", "http://localhost:10290"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) app.include_router(api_router, prefix="/api/v1") @app.get("/health") def health(): return {"status": "ok", "service": "vmis-backend"}