# -*- 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
    )
