52 lines
1.4 KiB
Python
52 lines
1.4 KiB
Python
"""电商套图工作台 - 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 export, 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.include_router(export.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)
|