From 690724bc74aadc81e6a64aa78dbdd9c7c10fa444 Mon Sep 17 00:00:00 2001 From: jangwoong Date: Tue, 20 Oct 2026 16:44:50 +0900 Subject: [PATCH] =?UTF-8?q?[as=20fr]=20=EB=B9=8C=EB=93=9C=20=EC=97=90?= =?UTF-8?q?=EB=9F=AC=20=EC=88=98=EC=A0=95=20=ED=8F=89=EA=B0=80=20=EB=8B=A4?= =?UTF-8?q?=EC=9D=B4=EC=96=BC=20=EB=A1=9C=EA=B7=B8=20=EC=AA=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../as/docs/pm2/02.build-error-troubleshooting.md | 15 +++++++++++++++ .../ui/components/pwrk-cnsltn-doc-evl-dialog.tsx | 8 ++++---- .../ui/components/pwrk-cnsltn-doc-mng-dialog.tsx | 1 + 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/apps/as/docs/pm2/02.build-error-troubleshooting.md b/apps/as/docs/pm2/02.build-error-troubleshooting.md index 03e156ef5..fda203941 100644 --- a/apps/as/docs/pm2/02.build-error-troubleshooting.md +++ b/apps/as/docs/pm2/02.build-error-troubleshooting.md @@ -61,6 +61,18 @@ Type error: Property 'atrzSeq' does not exist on type 'ElaprDocPrgrsClientRespon - `ElaprDocPrgrsClientResponseDto` 인터페이스(`src/shared/model/pbadms-sprt.ts`)에 선언된 정식 결재 순번 필드명은 `atrzSeqNo?: number`입니다. - 기존 코드가 `atrzSeq`로 접근하여 TypeScript 컴파일 에러가 발생했습니다. +### 2.4 `PwrkCnsltnDocEvlDialog`의 필수 prop `onSaved` 누락 +- **원인 코드**: + ```tsx + setIsEvlDialogOpen(false)} + /> + ``` +- **문제점**: + - `PwrkCnsltnDocEvlDialogProps`에 `onSaved: () => void;`가 필수로 선언되어 있었으나, 호출부에서 `onSaved` 콜백을 넘기지 않아 `Property 'onSaved' is missing` 컴파일 에러가 발생했습니다. + --- ## 3. 조치 내역 @@ -72,6 +84,9 @@ Type error: Property 'atrzSeq' does not exist on type 'ElaprDocPrgrsClientRespon - `{ enabled: open && Boolean(isForkJoin) }` 형태로 수정. 3. **결재 순번 속성 방어적 매핑**: - `atrzSeqNo`를 우선 참조하고 레거시/모의 데이터의 `atrzSeq`도 호환되도록 fallback 처리. +4. **`PwrkCnsltnDocEvlDialog`의 `onSaved` prop 연결 및 선택적(Optional) 처리**: + - `pwrk-cnsltn-doc-evl-dialog.tsx`: `onSaved?: () => void;`로 변경하고 `onSaved?.()` 호출로 방어. + - `pwrk-cnsltn-doc-mng-dialog.tsx`: ` setIsEvlDialogOpen(false)} />` 콜백 전달. #### 핵심 변경 사항 (Diff) ```diff diff --git a/apps/as/src/pages/fnrs-cnsltn/ui/components/pwrk-cnsltn-doc-evl-dialog.tsx b/apps/as/src/pages/fnrs-cnsltn/ui/components/pwrk-cnsltn-doc-evl-dialog.tsx index 1a82159dd..eae284654 100644 --- a/apps/as/src/pages/fnrs-cnsltn/ui/components/pwrk-cnsltn-doc-evl-dialog.tsx +++ b/apps/as/src/pages/fnrs-cnsltn/ui/components/pwrk-cnsltn-doc-evl-dialog.tsx @@ -33,9 +33,9 @@ import { interface PwrkCnsltnDocEvlDialogProps { open: boolean; pwrkCnsltnDocNo: string; - /** 평가 저장 성공 시 호출 (이후 웹기안기 문서 저장이 진행된다) */ - onSaved: () => void; - /** 평가 없이 닫을 때 호출 (웹기안기 문서는 저장되지 않는다) */ + /** 평가 저장 성공 시 호출 */ + onSaved?: () => void; + /** 평가 없이 닫을 때 호출 */ onClose: () => void; } @@ -73,7 +73,7 @@ function PwrkCnsltnDocEvlDialog({ try { const payload = buildPwrkCnsltnDocEvlSavePayload(pwrkCnsltnDocNo, values); await saveEvl(payload); - onSaved(); + onSaved?.(); } catch (error) { console.error("AI 초안 만족도 평가 등록 실패:", error); alert("AI 초안 만족도 평가 등록에 실패했습니다."); diff --git a/apps/as/src/pages/fnrs-cnsltn/ui/components/pwrk-cnsltn-doc-mng-dialog.tsx b/apps/as/src/pages/fnrs-cnsltn/ui/components/pwrk-cnsltn-doc-mng-dialog.tsx index b2d5bad8f..c4b3096db 100644 --- a/apps/as/src/pages/fnrs-cnsltn/ui/components/pwrk-cnsltn-doc-mng-dialog.tsx +++ b/apps/as/src/pages/fnrs-cnsltn/ui/components/pwrk-cnsltn-doc-mng-dialog.tsx @@ -793,6 +793,7 @@ function PwrkCnsltnDocMngDialog({ setIsEvlDialogOpen(false)} onClose={() => setIsEvlDialogOpen(false)} /> ) : null}