/** * πŸ“„ API Helpers * 곡톡 μ½”λ“œ cs-service API 호좜 μœ ν‹Έλ¦¬ν‹° * * - 검색 데이터 쑰회 및 νŒŒλΌλ―Έν„° 처리 * - μƒμœ„ μ½”λ“œλ‘œ ν•˜μœ„ μ½”λ“œ 쑰회 κΈ°λŠ₯ * - URL νŒŒλΌλ―Έν„° 생성 및 필터링 * - 데이터 νŽ˜μ΄μ§• 및 총 개수 λ°˜ν™˜ * - Axios 기반 HTTP μš”μ²­ 처리 * - νƒ€μž… μ•ˆμ „μ„± 보μž₯을 μœ„ν•œ μ œλ„€λ¦­ ν™œμš© * * πŸ”— μ‚¬μš© API * - ν•˜μœ„μ½”λ“œνŽ˜μ΄μ§€ μΊμ‹œ λͺ©λ‘ 쑰회: GET /api/v1/code/cache/{upCd} (cms-service) */ import { getCmsData, getData } from "../api"; /** CMS κ³΅ν†΅μ½”λ“œ μΊμ‹œ APIκ°€ λ°˜ν™˜ν•˜λŠ” ν•˜μœ„μ½”λ“œμ˜ 곡톡 계약이닀. */ export type CommonCodeItem = { lwpoCd: string; upCd: string; lwpoCdNm: string; unit: string; prntLwpoCd: string | null; }; /** * κΈ°μ‘΄ CMS μΊμ‹œ 쑰회 URL을 μœ μ§€ν•˜λ©΄μ„œ μƒμœ„μ½”λ“œμ— μ†ν•œ ν•˜μœ„μ½”λ“œλ₯Ό μ‘°νšŒν•œλ‹€. * 화면이 잘λͺ»λœ 응닡을 정상 μ½”λ“œ λͺ©λ‘μœΌλ‘œ μ‚¬μš©ν•˜μ§€ μ•Šλ„λ‘ λ°°μ—΄ 계약을 ν™•μΈν•œλ‹€. */ export const getCommonCodes = async ( upCd: string, ): Promise => { const normalizedUpCd = upCd.trim(); if (!normalizedUpCd) return []; const data = await getCmsData( `/api/v1/code/cache/${encodeURIComponent(normalizedUpCd)}`, ); if (!Array.isArray(data)) { throw new Error(`κ³΅ν†΅μ½”λ“œ 응닡 ν˜•μ‹μ΄ μ˜¬λ°”λ₯΄μ§€ μ•ŠμŠ΅λ‹ˆλ‹€: ${normalizedUpCd}`); } return data .map((item: any) => ({ lwpoCd: String(item?.lwpoCd ?? "").trim(), upCd: String(item?.upCd ?? normalizedUpCd).trim(), lwpoCdNm: String(item?.lwpoCdNm ?? "").trim(), unit: String(item?.unit ?? "").trim(), prntLwpoCd: item?.prntLwpoCd === null || item?.prntLwpoCd === undefined ? null : String(item.prntLwpoCd).trim(), })) .filter((item) => item.lwpoCd.length > 0); }; export const searchData = async>(url: string, paramObj: T) => { const params = new URLSearchParams( Object.entries(paramObj) .filter(([_, value]) => value !== undefined && value !== '') // 값이 μžˆλŠ” ν•­λͺ©λ§Œ 포함 .reduce((acc, [key, value]) => { acc[key] = String(value); return acc; }, {} as Record) ); const data = await getData(`${url}?${params.toString()}`); return data && { data: data.content, total: data.totalElements } } // μƒμœ„μ½”λ“œλ‘œ ν•˜μœ„μ½”λ“œ 쑰회 export const searchCmmnCd = async (upCd: string) => { const data = await getCommonCodes(upCd); const filteredData = data.map((item: any) => ({ lwpoCd: item.lwpoCd, lwpoCdNm: item.lwpoCdNm, })); return filteredData; };