"""电商套图工作台 - FastAPI 入口。""" from __future__ import annotations import logging from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from fastapi.staticfiles import StaticFiles from api import generate, proxy, suites, upload from config import get_settings from services.storage import media_root logging.basicConfig(level=logging.INFO, format="%(asctime)s %(levelname)s %(name)s: %(message)s") app = FastAPI(title="电商套图工作台", version="0.1.0") app.add_middleware( CORSMiddleware, allow_origins=["*"], # 插件 background 无 CORS 限制,这里兜底 allow_methods=["*"], allow_headers=["*"], ) app.include_router(generate.router) app.include_router(suites.router) app.include_router(proxy.router) app.include_router(upload.router) # 静态托管生成的图片 app.mount("/media", StaticFiles(directory=str(media_root())), name="media") @app.get("/api/health") async def health(): settings = get_settings() return { "ok": True, "provider": settings.image_provider, "ark_configured": bool(settings.ark_api_key), "dashscope_configured": bool(settings.dashscope_api_key), "rightapi_configured": bool(settings.rightapi_api_key), } if __name__ == "__main__": import uvicorn settings = get_settings() uvicorn.run("main:app", host=settings.host, port=settings.port, reload=False)