Files
Neo-ZQYY/apps/backend/app/routers/xcx_tasks.py

72 lines
2.1 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# -*- coding: utf-8 -*-
"""
小程序任务路由 —— 任务列表、置顶、放弃、取消放弃。
端点清单:
- GET /api/xcx/tasks — 获取活跃任务列表
- POST /api/xcx/tasks/{id}/pin — 置顶任务
- POST /api/xcx/tasks/{id}/unpin — 取消置顶
- POST /api/xcx/tasks/{id}/abandon — 放弃任务
- POST /api/xcx/tasks/{id}/cancel-abandon — 取消放弃
所有端点均需 JWTapproved 状态)。
"""
from __future__ import annotations
from fastapi import APIRouter, Depends
from app.auth.dependencies import CurrentUser
from app.middleware.permission import require_approved
from app.schemas.xcx_tasks import AbandonRequest, TaskListItem
from app.services import task_manager
router = APIRouter(prefix="/api/xcx/tasks", tags=["小程序任务"])
@router.get("", response_model=list[TaskListItem])
async def get_tasks(
user: CurrentUser = Depends(require_approved()),
):
"""获取当前助教的活跃任务列表。"""
return await task_manager.get_task_list(user.user_id, user.site_id)
@router.post("/{task_id}/pin")
async def pin_task(
task_id: int,
user: CurrentUser = Depends(require_approved()),
):
"""置顶任务。"""
return await task_manager.pin_task(task_id, user.user_id, user.site_id)
@router.post("/{task_id}/unpin")
async def unpin_task(
task_id: int,
user: CurrentUser = Depends(require_approved()),
):
"""取消置顶。"""
return await task_manager.unpin_task(task_id, user.user_id, user.site_id)
@router.post("/{task_id}/abandon")
async def abandon_task(
task_id: int,
body: AbandonRequest,
user: CurrentUser = Depends(require_approved()),
):
"""放弃任务(需填写原因)。"""
return await task_manager.abandon_task(
task_id, user.user_id, user.site_id, body.reason
)
@router.post("/{task_id}/cancel-abandon")
async def cancel_abandon(
task_id: int,
user: CurrentUser = Depends(require_approved()),
):
"""取消放弃,恢复为活跃状态。"""
return await task_manager.cancel_abandon(task_id, user.user_id, user.site_id)