import { ERROR_MESSAGES, queryStringFormatter } from '@/utils/common-utils' import axios from 'axios' import { NextResponse } from 'next/server' import { loggerWrapper } from '@/libs/api-wrapper' import { HttpStatusCode } from 'axios' /** * @api {GET} /api/qna/detail 문의 상세 조회 API * @apiName GET /api/qna/detail * @apiGroup Qna * @apiDescription 문의 상세 조회 API * * @apiParam {String} compCd 회사 코드 * @apiParam {String} qnaNo 문의 번호 * @apiParam {String} langCd 언어 코드 * @apiParam {String} loginId 로그인 ID * * @apiExample {curl} Example usage: * curl -X GET http://localhost:3000/api/qna/detail * * @apiSuccessExample {json} Success-Response: * { * "data": { "compCd": "5200", "qnaNo": 51, "qstTitle": "Q.CAST TEST", "qstContents": "Q.CAST TEST CONTENTS", "regDt": "2025.04.29 16:16:51", "regId": "X112", "regNm": "株式会社アイ工務店", "regEmail": "x112@interplug.co.kr", "answerYn": "N", "ansContents": null, "ansRegDt": null, "ansRegNm": null, "ansListFile": null, "storeId": "X112", "storeNm": "株式会社アイ工務店", "regUserNm": "TEST", "regUserTelNo": "010-1111-1111", "qnaClsLrgCd": "A01", "qnaClsMidCd": "B02", "qnaClsSmlCd": "C05", "listFile": [ { "fileNo": 853 "encodeFileNo": 853, "srcFileNm": "Quotation_4500380_20240808145129.pdf", "fileCours": "/temp/20250428/" "fileSize":160982, "regDt":"2024.08.13" } ... ], ... }, * @apiError {Number} 401 세션 정보 없음 (로그인 필요) * @apiError {Number} 500 서버 오류 */ async function getQnaDetail(request: Request): Promise { const { searchParams } = new URL(request.url) const params = { compCd: searchParams.get('compCd'), qnaNo: searchParams.get('qnoNo'), langCd: searchParams.get('langCd'), loginId: searchParams.get('loginId'), } try { const response = await axios.get(`${process.env.NEXT_PUBLIC_INQUIRY_API_URL}/api/qna/detail?${queryStringFormatter(params)}`) if (response.status === 200) { return NextResponse.json(response.data) } return NextResponse.json({ error: response.data.result }, { status: response.status }) } catch (error: any) { return NextResponse.json({ error: error.response.data.result ?? ERROR_MESSAGES.FETCH_ERROR }, { status: HttpStatusCode.InternalServerError }) } } export const GET = loggerWrapper(getQnaDetail)