refactor(api): TOML 配置 SSOT、统一错误契约、Auth/事务加固与可观测性 (#33)

配置 SSOT(TOML + .env)
统一错误契约
Auth 与事务边界
Redis / Celery 可靠性:业务 Redis(DB/0)与 Celery broker/backend(DB/1)显式拆分;连接池、sync client
可观测性(OpenTelemetry + LGTM)
This commit is contained in:
Sully
2026-05-22 13:44:50 +08:00
committed by GitHub
parent f09ae248f9
commit 53e0065e3e
298 changed files with 15247 additions and 4344 deletions

View File

@@ -2,36 +2,29 @@
订阅计划路由。
"""
from typing import List
from fastapi import APIRouter
from fastapi import APIRouter, Depends
from app.core.dependencies import get_current_user
from app.features.plan.deps import get_plan_service
from app.core.openapi import error_responses
from app.features.plan.deps import CurrentUserDep, PlanServiceDep
from app.features.plan.schemas import CurrentPlanResponse, PlanResponse
from app.features.plan.service import PlanService, get_plans_for_api
from app.features.user.models import User
router = APIRouter(
prefix="/api/plans",
tags=["plans"],
responses={
401: {"description": "认证失败"},
404: {"description": "资源不存在"},
},
responses=error_responses(401, 404),
)
@router.get("", response_model=List[PlanResponse])
async def get_plans():
@router.get("", response_model=list[PlanResponse])
def get_plans(service: PlanServiceDep) -> list[PlanResponse]:
"""获取所有可用的订阅计划(开发环境 ENABLE_TEST_PLAN=1 时包含「一分钱测试版」)。"""
return get_plans_for_api()
return service.get_plans_for_api()
@router.get("/current", response_model=CurrentPlanResponse)
async def get_current_plan(
current_user: User = Depends(get_current_user),
service: PlanService = Depends(get_plan_service),
):
current_user: CurrentUserDep,
service: PlanServiceDep,
) -> CurrentPlanResponse:
"""获取当前用户的订阅计划信息"""
return await service.get_current_plan_response(current_user)