import apiClient from './api-client'; import type { CreateWorkflowDefinitionData, UpdateWorkflowDefinitionData, WorkflowDefinitionsResponse, WorkflowDefinitionResponse, WorkflowInstanceResponse, WorkflowDeleteResponse } from '@/types/workflow'; class WorkflowService { private readonly baseUrl = '/workflows'; async listDefinitions(params?: { tenantId?: string; entity_type?: string; status?: string; source_module?: string; source_module_id?: string; limit?: number; offset?: number; search?: string; }): Promise { const queryParams: any = { ...params }; // if (params?.tenantId) { // queryParams.tenant_id = params.tenantId; // } const response = await apiClient.get(`${this.baseUrl}/definitions`, { params: queryParams }); return response.data; } async getDefinition(id: string, tenantId?: string): Promise { const params = tenantId ? { tenantId: tenantId } : {}; const response = await apiClient.get(`${this.baseUrl}/definitions/${id}`, { params }); return response.data; } async getInstance(id: string, tenantId?: string): Promise { const params = tenantId ? { tenantId: tenantId } : {}; const response = await apiClient.get(`${this.baseUrl}/instances/${id}`, { params }); return response.data; } async listInstances(params: { entity_type?: string; entity_id?: string; status?: string; source_module?: string; source_module_id?: string; limit?: number; offset?: number; }): Promise<{ success: boolean; data: any[]; pagination: { total: number; limit: number; offset: number } }> { const response = await apiClient.get(`${this.baseUrl}/instances`, { params }); return response.data; } async createDefinition(data: CreateWorkflowDefinitionData, tenantId?: string): Promise { const params = tenantId ? { tenantId: tenantId } : {}; const response = await apiClient.post(`${this.baseUrl}/definitions`, data, { params }); return response.data; } async updateDefinition(id: string, data: UpdateWorkflowDefinitionData, tenantId?: string): Promise { const params = tenantId ? { tenantId: tenantId } : {}; const response = await apiClient.put(`${this.baseUrl}/definitions/${id}`, data, { params }); return response.data; } async deleteDefinition(id: string, tenantId?: string): Promise { const params = tenantId ? { tenantId: tenantId } : {}; const response = await apiClient.delete(`${this.baseUrl}/definitions/${id}`, { params }); return response.data; } async cloneDefinition(id: string, name: string, tenantId?: string): Promise { const params = tenantId ? { tenantId: tenantId } : {}; const response = await apiClient.post(`${this.baseUrl}/definitions/${id}/clone`, { name }, { params }); return response.data; } async activateDefinition(id: string, tenantId?: string): Promise { const params = tenantId ? { tenantId: tenantId } : {}; const response = await apiClient.post(`${this.baseUrl}/definitions/${id}/activate`, {}, { params }); return response.data; } async deprecateDefinition(id: string, tenantId?: string): Promise { const params = tenantId ? { tenantId: tenantId } : {}; const response = await apiClient.post(`${this.baseUrl}/definitions/${id}/deprecate`, {}, { params }); return response.data; } } export const workflowService = new WorkflowService();