## 后端变更 ### 任务管理核心 - 新增 tasker 服务,支持异步任务队列和工作线程池 - 添加任务执行时间追踪(started_at, completed_at) - 实现任务状态持久化(JSON文件存储) - 支持任务取消和进度更新 ### 知识库导入优化 - 将知识库文档导入改为异步任务处理 - 逐个处理文档并实时更新进度(5% → 95%) - 支持任务取消检测 ### API接口 - 新增任务列表、详情、取消等REST API - 任务API需要管理员权限 ### 测试 - 添加任务路由集成测试 ## 前端变更 ### 任务中心UI - 新增任务中心抽屉组件,采用简洁的卡片式设计 - 支持任务状态筛选(全部/进行中/已完成/失败) - 进行中任务显示实时进度条 - 已完成任务显示执行时长和完成状态徽章 - 支持相对时间显示(如:5分钟前) ### 状态管理 - 新增 tasker store,管理任务列表和轮询 - 支持任务注册、刷新、取消操作 ### 交互优化 - 在状态栏和侧边栏添加任务中心入口 - 显示活跃任务数量徽章 - 知识库导入自动注册到任务中心
36 lines
1.2 KiB
Python
36 lines
1.2 KiB
Python
from fastapi import APIRouter, Depends, HTTPException, Query
|
|
|
|
from src.storage.db.models import User
|
|
from server.services.tasker import tasker
|
|
from server.utils.auth_middleware import get_admin_user
|
|
|
|
tasks = APIRouter(prefix="/tasks", tags=["tasks"])
|
|
|
|
|
|
@tasks.get("")
|
|
async def list_tasks(
|
|
status: str | None = Query(default=None),
|
|
current_user: User = Depends(get_admin_user),
|
|
):
|
|
"""List tasks, optionally filtered by status."""
|
|
task_list = await tasker.list_tasks(status=status)
|
|
return {"tasks": task_list}
|
|
|
|
|
|
@tasks.get("/{task_id}")
|
|
async def get_task(task_id: str, current_user: User = Depends(get_admin_user)):
|
|
"""Retrieve a single task by id."""
|
|
task = await tasker.get_task(task_id)
|
|
if not task:
|
|
raise HTTPException(status_code=404, detail="Task not found")
|
|
return {"task": task}
|
|
|
|
|
|
@tasks.post("/{task_id}/cancel")
|
|
async def cancel_task(task_id: str, current_user: User = Depends(get_admin_user)):
|
|
"""Request cancellation of a task."""
|
|
success = await tasker.cancel_task(task_id)
|
|
if not success:
|
|
raise HTTPException(status_code=400, detail="Task cannot be cancelled")
|
|
return {"task_id": task_id, "status": "cancelled"}
|