Files
012-kaopeilian/frontend/src/api/task.ts
yuliang_guo 2f47193059
All checks were successful
continuous-integration/drone/push Build is passing
feat: 集成MinIO对象存储服务
- 新增storage_service.py封装MinIO操作
- 修改upload.py使用storage_service上传文件
- 修改course_service.py使用storage_service删除文件
- 适配preview.py支持从MinIO获取文件
- 适配knowledge_analysis_v2.py支持MinIO存储
- 在config.py添加MinIO配置项
- 添加minio依赖到requirements.txt

支持特性:
- 自动降级到本地存储(MinIO不可用时)
- 保持URL格式兼容(/static/uploads/)
- 文件自动缓存到本地(用于预览和分析)

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-03 14:06:22 +08:00

114 lines
2.2 KiB
TypeScript

/**
* 任务管理API
*/
import { http } from '@/utils/http'
import type { ResponseModel } from '@/types/practice'
/**
* 任务接口
*/
export interface Task {
id: number
title: string
description?: string
priority: string
status: string
creator_id: number
deadline?: string
requirements?: any
progress: number
created_at: string
updated_at: string
courses: string[]
assigned_count: number
completed_count: number
}
/**
* 任务创建请求
*/
export interface TaskCreate {
title: string
description?: string
priority: string
deadline?: string
course_ids: number[]
user_ids: number[]
requirements?: any
}
/**
* 任务更新请求
*/
export interface TaskUpdate {
title?: string
description?: string
priority?: string
status?: string
deadline?: string
progress?: number
}
/**
* 任务统计响应
*/
export interface TaskStats {
total: number
ongoing: number
completed: number
expired: number
avg_completion_rate: number
}
/**
* 获取任务列表
*/
export function getTasks(params?: {
status?: string
page?: number
page_size?: number
}): Promise<ResponseModel<{ items: Task[]; total: number; page: number; page_size: number; total_pages: number }>> {
return http.get('/api/v1/manager/tasks', { params })
}
/**
* 获取任务统计
*/
export function getTaskStats(): Promise<ResponseModel<TaskStats>> {
return http.get('/api/v1/manager/tasks/stats')
}
/**
* 获取任务详情
*/
export function getTaskDetail(id: number): Promise<ResponseModel<Task>> {
return http.get(`/api/v1/manager/tasks/${id}`)
}
/**
* 创建任务
*/
export function createTask(data: TaskCreate): Promise<ResponseModel<Task>> {
return http.post('/api/v1/manager/tasks', data)
}
/**
* 更新任务
*/
export function updateTask(id: number, data: TaskUpdate): Promise<ResponseModel<Task>> {
return http.put(`/api/v1/manager/tasks/${id}`, data)
}
/**
* 删除任务
*/
export function deleteTask(id: number): Promise<ResponseModel<void>> {
return http.delete(`/api/v1/manager/tasks/${id}`)
}
/**
* 发送任务提醒
*/
export function sendTaskReminder(id: number): Promise<ResponseModel<void>> {
return http.post(`/api/v1/manager/tasks/${id}/remind`)
}