perf(startup): reduce readiness work (#6341)

This commit is contained in:
InfinityPacer
2026-08-17 11:32:04 +08:00
committed by GitHub
parent 23ca70fa37
commit 3ebbec3317
4 changed files with 251 additions and 39 deletions
+7 -36
View File
@@ -1,40 +1,11 @@
from fastapi import APIRouter
from app.api.endpoints import anilist, auth, login, user, webhook, message, agent, site, subscribe, music, \
media, douban, search, plugin, tmdb, history, system, download, dashboard, \
transfer, mediaserver, bangumi, storage, discover, recommend, workflow, torrent, mcp, mfa, openai, anthropic, llm, notification
from app.api.router_specs import API_V1_ROUTER_SPECS
api_router = APIRouter()
api_router.include_router(auth.router, prefix="/auth", tags=["auth"])
api_router.include_router(login.router, prefix="/login", tags=["login"])
api_router.include_router(user.router, prefix="/user", tags=["user"])
api_router.include_router(mfa.router, prefix="/mfa", tags=["mfa"])
api_router.include_router(site.router, prefix="/site", tags=["site"])
api_router.include_router(message.router, prefix="/message", tags=["message"])
api_router.include_router(agent.router, prefix="/message/agent", tags=["agent"])
api_router.include_router(webhook.router, prefix="/webhook", tags=["webhook"])
api_router.include_router(subscribe.router, prefix="/subscribe", tags=["subscribe"])
api_router.include_router(music.router, prefix="/music", tags=["music"])
api_router.include_router(media.router, prefix="/media", tags=["media"])
api_router.include_router(search.router, prefix="/search", tags=["search"])
api_router.include_router(douban.router, prefix="/douban", tags=["douban"])
api_router.include_router(tmdb.router, prefix="/tmdb", tags=["tmdb"])
api_router.include_router(history.router, prefix="/history", tags=["history"])
api_router.include_router(system.router, prefix="/system", tags=["system"])
api_router.include_router(notification.router, prefix="/notification", tags=["notification"])
api_router.include_router(llm.router, prefix="/llm", tags=["llm"])
api_router.include_router(plugin.router, prefix="/plugin", tags=["plugin"])
api_router.include_router(download.router, prefix="/download", tags=["download"])
api_router.include_router(dashboard.router, prefix="/dashboard", tags=["dashboard"])
api_router.include_router(storage.router, prefix="/storage", tags=["storage"])
api_router.include_router(transfer.router, prefix="/transfer", tags=["transfer"])
api_router.include_router(mediaserver.router, prefix="/mediaserver", tags=["mediaserver"])
api_router.include_router(bangumi.router, prefix="/bangumi", tags=["bangumi"])
api_router.include_router(anilist.router, prefix="/anilist", tags=["anilist"])
api_router.include_router(discover.router, prefix="/discover", tags=["discover"])
api_router.include_router(recommend.router, prefix="/recommend", tags=["recommend"])
api_router.include_router(workflow.router, prefix="/workflow", tags=["workflow"])
api_router.include_router(torrent.router, prefix="/torrent", tags=["torrent"])
api_router.include_router(mcp.router, prefix="/mcp", tags=["mcp"])
api_router.include_router(openai.router, prefix="/openai/v1", tags=["openai"])
api_router.include_router(anthropic.router, prefix="/anthropic/v1", tags=["anthropic"])
for spec in API_V1_ROUTER_SPECS:
api_router.include_router(
spec.router,
prefix=spec.prefix,
tags=list(spec.tags),
)
+84
View File
@@ -0,0 +1,84 @@
from typing import NamedTuple
from fastapi import APIRouter
from app.api.endpoints import (
agent,
anilist,
anthropic,
auth,
bangumi,
dashboard,
discover,
douban,
download,
history,
llm,
login,
mcp,
media,
mediaserver,
message,
mfa,
music,
notification,
openai,
plugin,
recommend,
search,
site,
storage,
subscribe,
system,
tmdb,
torrent,
transfer,
user,
webhook,
workflow,
)
class RouterSpec(NamedTuple):
"""声明一个 v1 端点路由器及其公开路径元数据。"""
router: APIRouter # 原始端点路由器
prefix: str # 相对 v1 根路径的前缀
tags: tuple[str, ...] # 追加到端点 OpenAPI 操作的标签
API_V1_ROUTER_SPECS: tuple[RouterSpec, ...] = (
RouterSpec(auth.router, "/auth", ("auth",)),
RouterSpec(login.router, "/login", ("login",)),
RouterSpec(user.router, "/user", ("user",)),
RouterSpec(mfa.router, "/mfa", ("mfa",)),
RouterSpec(site.router, "/site", ("site",)),
RouterSpec(message.router, "/message", ("message",)),
RouterSpec(agent.router, "/message/agent", ("agent",)),
RouterSpec(webhook.router, "/webhook", ("webhook",)),
RouterSpec(subscribe.router, "/subscribe", ("subscribe",)),
RouterSpec(music.router, "/music", ("music",)),
RouterSpec(media.router, "/media", ("media",)),
RouterSpec(search.router, "/search", ("search",)),
RouterSpec(douban.router, "/douban", ("douban",)),
RouterSpec(tmdb.router, "/tmdb", ("tmdb",)),
RouterSpec(history.router, "/history", ("history",)),
RouterSpec(system.router, "/system", ("system",)),
RouterSpec(notification.router, "/notification", ("notification",)),
RouterSpec(llm.router, "/llm", ("llm",)),
RouterSpec(plugin.router, "/plugin", ("plugin",)),
RouterSpec(download.router, "/download", ("download",)),
RouterSpec(dashboard.router, "/dashboard", ("dashboard",)),
RouterSpec(storage.router, "/storage", ("storage",)),
RouterSpec(transfer.router, "/transfer", ("transfer",)),
RouterSpec(mediaserver.router, "/mediaserver", ("mediaserver",)),
RouterSpec(bangumi.router, "/bangumi", ("bangumi",)),
RouterSpec(anilist.router, "/anilist", ("anilist",)),
RouterSpec(discover.router, "/discover", ("discover",)),
RouterSpec(recommend.router, "/recommend", ("recommend",)),
RouterSpec(workflow.router, "/workflow", ("workflow",)),
RouterSpec(torrent.router, "/torrent", ("torrent",)),
RouterSpec(mcp.router, "/mcp", ("mcp",)),
RouterSpec(openai.router, "/openai/v1", ("openai",)),
RouterSpec(anthropic.router, "/anthropic/v1", ("anthropic",)),
)