/** * 외부호출 설정 API 클라이언트 */ import { apiClient } from "./client"; // 외부호출 설정 관련 상수들 export const CALL_TYPE_OPTIONS = [ { value: "rest-api", label: "REST API" }, { value: "webhook", label: "Webhook" }, { value: "email", label: "이메일" }, ] as const; export const API_TYPE_OPTIONS = [ { value: "generic", label: "일반 API" }, { value: "slack", label: "Slack" }, { value: "discord", label: "Discord" }, { value: "teams", label: "Microsoft Teams" }, ] as const; export const ACTIVE_STATUS_OPTIONS = [ { value: "Y", label: "활성" }, { value: "N", label: "비활성" }, ] as const; export interface ExternalCallConfig { id?: number; config_name: string; call_type: string; api_type?: string; config_data: any; description?: string; company_code?: string; is_active?: string; created_by?: string; updated_by?: string; } export interface ExternalCallConfigFilter { company_code?: string; is_active?: string; call_type?: string; api_type?: string; } /** * 외부호출 설정 API 클래스 */ export class ExternalCallConfigAPI { /** * 외부호출 설정 목록 조회 */ static async getConfigs(filter: ExternalCallConfigFilter = {}): Promise<{ success: boolean; data?: ExternalCallConfig[]; error?: string; }> { try { const params = new URLSearchParams(); Object.entries(filter).forEach(([key, value]) => { if (value) params.append(key, value); }); const response = await apiClient.get(`/external-call-configs?${params.toString()}`); return response.data; } catch (error) { console.error("외부호출 설정 목록 조회 실패:", error); return { success: false, error: error instanceof Error ? error.message : "알 수 없는 오류가 발생했습니다.", }; } } /** * 외부호출 설정 상세 조회 */ static async getConfigById(id: number): Promise<{ success: boolean; data?: ExternalCallConfig; error?: string; }> { try { const response = await apiClient.get(`/external-call-configs/${id}`); return response.data; } catch (error) { console.error("외부호출 설정 상세 조회 실패:", error); return { success: false, error: error instanceof Error ? error.message : "알 수 없는 오류가 발생했습니다.", }; } } /** * 외부호출 설정 생성 */ static async createConfig(data: Omit): Promise<{ success: boolean; data?: ExternalCallConfig; error?: string; }> { try { const response = await apiClient.post("/external-call-configs", data); return response.data; } catch (error) { console.error("외부호출 설정 생성 실패:", error); return { success: false, error: error instanceof Error ? error.message : "알 수 없는 오류가 발생했습니다.", }; } } /** * 외부호출 설정 수정 */ static async updateConfig( id: number, data: Partial, ): Promise<{ success: boolean; data?: ExternalCallConfig; error?: string; }> { try { const response = await apiClient.put(`/external-call-configs/${id}`, data); return response.data; } catch (error) { console.error("외부호출 설정 수정 실패:", error); return { success: false, error: error instanceof Error ? error.message : "알 수 없는 오류가 발생했습니다.", }; } } /** * 외부호출 설정 삭제 */ static async deleteConfig(id: number): Promise<{ success: boolean; error?: string; }> { try { const response = await apiClient.delete(`/external-call-configs/${id}`); return response.data; } catch (error) { console.error("외부호출 설정 삭제 실패:", error); return { success: false, error: error instanceof Error ? error.message : "알 수 없는 오류가 발생했습니다.", }; } } /** * 외부호출 설정 테스트 */ static async testConfig(id: number): Promise<{ success: boolean; message?: string; error?: string; }> { try { const response = await apiClient.post(`/external-call-configs/${id}/test`); return response.data; } catch (error) { console.error("외부호출 설정 테스트 실패:", error); return { success: false, error: error instanceof Error ? error.message : "알 수 없는 오류가 발생했습니다.", }; } } }