feat(routes): 迁移管理后台全部 /admin/site/* 端点(28 个)

- web/routers/admin_site.py:用户管理(users/delete/duration/create/
  reset_password/toggle/ban/cookie)、SMTP(get/save/test)、日志(logs/clear)、
  卡密(generate/list/disable/delete)、公告(get/save)、播放密钥(get/rotate)、
  数据库备份(create/list/download/upload/restore/delete/auto)
- 全量经 asyncio.to_thread 调用 auth_system 同步函数(SQLite/SMTP/文件),不阻塞事件循环
- 操作者名取当前管理员用户名;管理员闸 403 带 error_code='forbidden'(与 admin_required 同)

验证:11 项代表性端点与 Flask 逐字段一致(含参数校验与错误文案);
非管理员 403 一致;pytest 62/62;ruff All checks passed;pyright 0 errors。
This commit is contained in:
snowy-yang committed 2026-09-26 10:02:24 +08:00
1 parent 915358405c
commit fb40b2132c
2 files changed
+549

No files matched your search

+2
View File
@@ -25,6 +25,7 @@ from web.errors import install_error_handlers
from web.middleware import ResponseHygieneMiddleware
from web.routers import account as account_router
from web.routers import admin as admin_router
from web.routers import admin_site as admin_site_router
from web.routers import auth as auth_router
from web.routers import auth_status as auth_status_router
from web.routers import delivery as delivery_router
@@ -97,6 +98,7 @@ def create_app(serve_flask_fallback: bool = False) -> FastAPI:
app.include_router(user_router.router, prefix='/api/v1', tags=['user'])
app.include_router(admin_router.router, prefix='/api/v1', tags=['admin'])
app.include_router(register_router.router, prefix='/api/v1', tags=['auth'])
app.include_router(admin_site_router.router, prefix='/api/v1', tags=['admin'])
# 首页与静态资源(迁移完成形态;fallback 模式下同路径也能由 Flask 提供)
app.include_router(index_router.router, tags=['index'])