import { queryStringFormatter } from '@/utils/common-utils' import axios from 'axios' import { NextResponse } from 'next/server' import { loggerWrapper } from '@/libs/api-wrapper' import { QnaService } from '../service' import { ApiError } from 'next/dist/server/api-utils' import { getIronSession } from 'iron-session' import { SessionData } from '@/types/Auth' import { sessionOptions } from '@/libs/session' import { cookies } from 'next/headers' /** * @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, * ... * "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 cookieStore = await cookies() const session = await getIronSession(cookieStore, sessionOptions) const service = new QnaService(session) const { searchParams } = new URL(request.url) const params = { compCd: searchParams.get('compCd'), qnaNo: searchParams.get('qnaNo'), langCd: searchParams.get('langCd'), siteTpCd: searchParams.get('siteTpCd'), } const result = await service.tryFunction(() => axios.get(`${process.env.NEXT_PUBLIC_INQUIRY_API_URL}/api/qna/detail?loginId=${session.userId}&${queryStringFormatter(params)}`), ) if (result instanceof ApiError) { return NextResponse.json({ error: result.message }, { status: result.statusCode }) } return NextResponse.json(result.data) } export const GET = loggerWrapper(getQnaDetail)