feat: 初始化项目,并且接近完成 ozon 部分

This commit is contained in:
Joey
2026-08-15 22:19:27 +08:00
commit 1591d5e35a
46 changed files with 9827 additions and 0 deletions
+59
View File
@@ -0,0 +1,59 @@
"""电商套图工作台 - FastAPI 入口。"""
from __future__ import annotations
import logging
from contextlib import asynccontextmanager
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from fastapi.staticfiles import StaticFiles
from api import collection, generate, products, proxy, suites
from config import get_settings
from db import init_db
from services.storage import media_root
logging.basicConfig(level=logging.INFO, format="%(asctime)s %(levelname)s %(name)s: %(message)s")
@asynccontextmanager
async def lifespan(app: FastAPI):
await init_db()
yield
app = FastAPI(title="电商套图工作台", version="0.1.0", lifespan=lifespan)
app.add_middleware(
CORSMiddleware,
allow_origins=["*"], # 插件 background 无 CORS 限制,这里兜底
allow_methods=["*"],
allow_headers=["*"],
)
app.include_router(collection.router)
app.include_router(products.router)
app.include_router(suites.router)
app.include_router(generate.router)
app.include_router(proxy.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),
}
if __name__ == "__main__":
import uvicorn
settings = get_settings()
uvicorn.run("main:app", host=settings.host, port=settings.port, reload=False)