import { getSettings, getConfig } from './configService'; import { RunTaskRequest, RunTaskApiResponse, Task } from '../types/task'; // 获取通用请求头 const getHeaders = async () => { const config = await getConfig(); return { 'Content-Type': 'application/json', ...config?.headers, }; }; // 获取任务列表 export const getTasks = async (params: { pageNum: number; pageSize: number; }): Promise => { try { const config = await getConfig(); const endpoint = config?.apiEndpoints?.getTasks; if (!endpoint) { throw new Error('获取任务列表的API端点未配置'); } const settings = await getSettings(); const serverUrl = settings.serverUrl || config?.serverUrl; if (!serverUrl) { throw new Error('服务器地址未配置'); } const urlObj = new URL(`${serverUrl.replace(/\/$/, '')}${endpoint}`); urlObj.searchParams.append('pageNum', String(params.pageNum)); urlObj.searchParams.append('pageSize', String(params.pageSize)); const url = urlObj.toString(); console.log('获取任务列表:', url); const headers = await getHeaders(); const response = await fetch(url, { headers }); if (!response.ok) { throw new Error(`HTTP ${response.status}: ${response.statusText}`); } const result = await response.json(); if (result.code !== 200) { throw new Error(`API 错误: ${result.message}`); } // 兼容两种可能的数据结构: result.data.list or result.data if (result.data && Array.isArray(result.data.list)) { return result.data.list; } if (Array.isArray(result.data)) { return result.data; } console.warn('任务列表数据格式不正确', result.data); return []; } catch (error) { console.error('获取任务列表失败:', error); throw error; } }; // 获取任务详情 export const getTaskDetail = async (taskId: string): Promise => { try { const config = await getConfig(); let endpoint = config?.apiEndpoints?.getTaskDetail; if (!endpoint) { throw new Error('获取任务详情的API端点未配置'); } endpoint = endpoint.replace('{taskId}', taskId); const settings = await getSettings(); const serverUrl = settings.serverUrl || config?.serverUrl; if (!serverUrl) { throw new Error('服务器地址未配置'); } const url = `${serverUrl.replace(/\/$/, '')}${endpoint}`; console.log('获取任务详情:', url); const headers = await getHeaders(); const response = await fetch(url, { headers }); if (!response.ok) { throw new Error(`HTTP ${response.status}: ${response.statusText}`); } const result = await response.json(); if (result.code !== 200) { throw new Error(`API 错误: ${result.message}`); } return result.data; } catch (error) { console.error(`获取任务详情失败 (ID: ${taskId}):`, error); throw error; } }; // 运行任务 export const runTask = async ( taskData: RunTaskRequest, ): Promise => { try { const config = await getConfig(); const endpoint = config?.apiEndpoints?.runTask; if (!endpoint) { throw new Error('运行任务的API端点未配置'); } const settings = await getSettings(); const serverUrl = settings.serverUrl || config?.serverUrl; if (!serverUrl) { throw new Error('服务器地址未配置'); } const url = `${serverUrl.replace(/\/$/, '')}${endpoint}`; console.log('运行任务请求:', url, JSON.stringify(taskData, null, 2)); const headers = await getHeaders(); const response = await fetch(url, { method: 'POST', headers: headers, body: JSON.stringify(taskData), }); if (!response.ok) { const errorText = await response.text(); throw new Error(`HTTP ${response.status}: ${errorText}`); } const result: RunTaskApiResponse = await response.json(); console.log('运行任务响应:', result); if (result.code !== 200) { throw new Error(`API 错误: ${result.message}`); } return result; } catch (error) { console.error('运行任务失败:', error); throw error; } };