# -*- coding: utf-8 -*- """ 小程序助教路由 —— 助教详情(COACH-1)。 端点清单: - GET /api/xcx/coaches/{coach_id} — 助教详情(COACH-1) 所有端点均需 JWT(approved 状态)。 """ from __future__ import annotations from fastapi import APIRouter, Depends from app.auth.dependencies import CurrentUser from app.middleware.permission import require_permission from app.schemas.xcx_coaches import CoachBannerResponse, CoachDetailResponse from app.services import coach_service from app.trace.decorators import trace_service router = APIRouter(prefix="/api/xcx/coaches", tags=["小程序助教"]) @router.get("/{coach_id}/banner", response_model=CoachBannerResponse) @trace_service("获取助教 banner", "Get coach banner") async def get_coach_banner( coach_id: int, user: CurrentUser = Depends(require_permission("view_board_coach")), ): """ 助教 banner 轻量信息(仅 name / level / store_name)。 比 /{coach_id} 快一个数量级,供 PERF-2 等只需 banner 的页面调用。 """ return await coach_service.get_coach_banner(coach_id, user.site_id) @router.get("/{coach_id}", response_model=CoachDetailResponse) @trace_service("获取助教详情", "Get coach detail") async def get_coach_detail( coach_id: int, # CHANGE 2026-03-27 | 权限改造 W4:助教详情跟助教看板走 user: CurrentUser = Depends(require_permission("view_board_coach")), ): """助教详情(COACH-1)。""" return await coach_service.get_coach_detail( coach_id, user.site_id )