import { ApiResponse, CompleteTaskRequest, GetTasksQuery, PaginatedResponse, SkipTaskRequest, Task, TaskListItem, TaskStats, } from '@/types/goals'; import { api } from './api'; // 任务管理API服务 /** * 获取任务列表 */ export const getTasks = async (query: GetTasksQuery = {}): Promise> => { const searchParams = new URLSearchParams(); Object.entries(query).forEach(([key, value]) => { if (value !== undefined && value !== null) { searchParams.append(key, String(value)); } }); const queryString = searchParams.toString(); const path = queryString ? `/goals/tasks?${queryString}` : '/goals/tasks'; return api.get>(path); }; /** * 获取特定目标的任务列表 */ export const getTasksByGoalId = async (goalId: string, query: GetTasksQuery = {}): Promise> => { const searchParams = new URLSearchParams(); Object.entries(query).forEach(([key, value]) => { if (value !== undefined && value !== null) { searchParams.append(key, String(value)); } }); const queryString = searchParams.toString(); const path = queryString ? `/goals/${goalId}/tasks?${queryString}` : `/goals/${goalId}/tasks`; return api.get>(path); }; /** * 完成任务 */ export const completeTask = async (taskId: string, completionData: CompleteTaskRequest = {}): Promise => { return api.post(`/goals/tasks/${taskId}/complete`, completionData); }; /** * 跳过任务 */ export const skipTask = async (taskId: string, skipData: SkipTaskRequest = {}): Promise => { return api.post(`/goals/tasks/${taskId}/skip`, skipData); }; /** * 获取任务统计 */ export const getTaskStats = async (goalId?: string): Promise => { const path = goalId ? `/goals/tasks/stats/overview?goalId=${goalId}` : '/goals/tasks/stats/overview'; const response = await api.get>(path); return response.data; }; // 导出所有API方法 export const tasksApi = { getTasks, getTasksByGoalId, completeTask, skipTask, getTaskStats, }; export default tasksApi;