From 340f47166485267e28ea47be10096e83c83c6de5 Mon Sep 17 00:00:00 2001 From: dujinkim Date: Thu, 20 Nov 2025 03:09:53 +0000 Subject: (임수민) TBE 평가결과 컬럼 수정 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/tbe-last/service.ts | 2 ++ lib/tbe-last/table/evaluation-dialog.tsx | 50 ++++++++++++++++---------------- lib/tbe-last/table/tbe-last-table.tsx | 5 ++-- 3 files changed, 30 insertions(+), 27 deletions(-) diff --git a/lib/tbe-last/service.ts b/lib/tbe-last/service.ts index 3b70ef52..5871a20e 100644 --- a/lib/tbe-last/service.ts +++ b/lib/tbe-last/service.ts @@ -351,6 +351,8 @@ export async function updateTbeEvaluation( // 캐시 초기화 revalidateTag(`tbe-session-${tbeSessionId}`) revalidateTag(`tbe-sessions`) + revalidateTag("tbe-last-sessions") + revalidatePath("/evcp/tbe-last") // RFQ 관련 캐시도 초기화 if (currentTbeSession.rfqsLastId) { diff --git a/lib/tbe-last/table/evaluation-dialog.tsx b/lib/tbe-last/table/evaluation-dialog.tsx index ac1d923b..7843a92e 100644 --- a/lib/tbe-last/table/evaluation-dialog.tsx +++ b/lib/tbe-last/table/evaluation-dialog.tsx @@ -90,6 +90,28 @@ export function EvaluationDialog({ const watchEvaluationResult = form.watch("evaluationResult") const isFormValid = form.formState.isValid + const fetchVendorDocuments = React.useCallback(async () => { + if (!selectedSession?.tbeSessionId) return + + setIsLoadingDocs(true) + try { + // 서버 액션 호출 + const result = await getTbeVendorDocuments(selectedSession.tbeSessionId) + + if (result.success) { + setVendorDocuments(result.documents || []) + } else { + console.error("Failed to fetch vendor documents:", result.error) + toast.error(result.error || "벤더 문서 정보를 불러오는데 실패했습니다") + } + } catch (error) { + console.error("Failed to fetch vendor documents:", error) + toast.error("벤더 문서 정보를 불러오는데 실패했습니다") + } finally { + setIsLoadingDocs(false) + } + }, [selectedSession?.tbeSessionId]) + // 벤더 문서 리뷰 상태 가져오기 React.useEffect(() => { if (open && selectedSession?.tbeSessionId) { @@ -101,7 +123,7 @@ export function EvaluationDialog({ evaluationResult: selectedSession.evaluationResult as any, conditionalRequirements: selectedSession.conditionalRequirements || "", conditionsFulfilled: selectedSession.conditionsFulfilled || false, - overallRemarks: selectedSession.overallRemarks || "", + overallRemarks: (selectedSession as any).overallRemarks || "", }) } else { // 기존 평가 데이터가 없으면 초기화 @@ -122,29 +144,7 @@ export function EvaluationDialog({ }) setVendorDocuments([]) } - }, [open, selectedSession]) - - const fetchVendorDocuments = async () => { - if (!selectedSession?.tbeSessionId) return - - setIsLoadingDocs(true) - try { - // 서버 액션 호출 - const result = await getTbeVendorDocuments(selectedSession.tbeSessionId) - - if (result.success) { - setVendorDocuments(result.documents || []) - } else { - console.error("Failed to fetch vendor documents:", result.error) - toast.error(result.error || "벤더 문서 정보를 불러오는데 실패했습니다") - } - } catch (error) { - console.error("Failed to fetch vendor documents:", error) - toast.error("벤더 문서 정보를 불러오는데 실패했습니다") - } finally { - setIsLoadingDocs(false) - } - } + }, [open, selectedSession?.tbeSessionId, selectedSession?.evaluationResult, selectedSession?.conditionalRequirements, selectedSession?.conditionsFulfilled, fetchVendorDocuments, form]) const getReviewStatusIcon = (status: string) => { switch (status) { @@ -316,7 +316,7 @@ export function EvaluationDialog({ 평가 결과 * - diff --git a/lib/tbe-last/table/tbe-last-table.tsx b/lib/tbe-last/table/tbe-last-table.tsx index fbb334d0..49e00cf4 100644 --- a/lib/tbe-last/table/tbe-last-table.tsx +++ b/lib/tbe-last/table/tbe-last-table.tsx @@ -343,8 +343,9 @@ export function TbeLastTable({ promises }: TbeLastTableProps) { open={evaluationOpen} onOpenChange={setEvaluationOpen} selectedSession={selectedSession} - sessionDetail={sessionDetail} - + onSuccess={() => { + router.refresh() + }} /> ) -- cgit v1.2.3