# -*- coding: utf-8 -*- """ 小程序绩效路由 —— 绩效概览、绩效明细。 端点清单: - GET /api/xcx/performance — 绩效概览(PERF-1) - GET /api/xcx/performance/records — 绩效明细(PERF-2) 所有端点均需 JWT(approved 状态)。 """ from __future__ import annotations from fastapi import APIRouter, Depends, Query from app.auth.dependencies import CurrentUser from app.middleware.permission import require_approved, require_permission from app.schemas.xcx_performance import ( PerformanceOverviewResponse, PerformanceRecordsResponse, ) from app.services import performance_service from app.trace.decorators import trace_service router = APIRouter(prefix="/api/xcx/performance", tags=["小程序绩效"]) @router.get("", response_model=PerformanceOverviewResponse) @trace_service("获取绩效概览", "Get performance overview") async def get_performance_overview( year: int = Query(...), month: int = Query(..., ge=1, le=12), # CHANGE 2026-03-27 | 权限改造 W4:绩效跟任务走 user: CurrentUser = Depends(require_permission("view_tasks")), ): """绩效概览(PERF-1)。""" return await performance_service.get_overview( user.user_id, user.site_id, year, month ) @router.get("/records", response_model=PerformanceRecordsResponse) @trace_service("获取绩效明细", "Get performance records") async def get_performance_records( year: int = Query(...), month: int = Query(..., ge=1, le=12), page: int = Query(1, ge=1), page_size: int = Query(20, ge=1, le=100), user: CurrentUser = Depends(require_permission("view_tasks")), ): """绩效明细(PERF-2)。""" return await performance_service.get_records( user.user_id, user.site_id, year, month, page, page_size )