From a2b701a4bfa95aca1aa3f57f705c6abbee4e5790 Mon Sep 17 00:00:00 2001 From: SeongHyun Kim Date: Tue, 6 Jan 2026 17:29:41 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EC=A1=B0=EA=B1=B4=EB=B6=80=20=EC=BB=A8?= =?UTF-8?q?=ED=85=8C=EC=9D=B4=EB=84=88=20initialData=20=EC=A0=84=EB=8B=AC?= =?UTF-8?q?=20=EC=B2=B4=EA=B3=84=20=EA=B5=AC=ED=98=84=20InteractiveScreenV?= =?UTF-8?q?iewerDynamic:=20originalData=EB=A5=BC=20initialData=EB=A1=9C=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=20=EC=A0=84=EB=8B=AC=20DynamicComponentRende?= =?UTF-8?q?rer:=20initialData=20=EC=9A=B0=EC=84=A0=EC=88=9C=EC=9C=84=20?= =?UTF-8?q?=EB=A1=9C=EC=A7=81=20=EC=B6=94=EA=B0=80=20ConditionalContainerC?= =?UTF-8?q?omponent:=20initialData=20props=20=EC=B6=94=EA=B0=80=20?= =?UTF-8?q?=EB=B0=8F=20=ED=95=98=EC=9C=84=20=EC=A0=84=EB=8B=AC=20Condition?= =?UTF-8?q?alSectionViewer:=20initialData=20props=20=EC=B6=94=EA=B0=80=20?= =?UTF-8?q?=EB=B0=8F=20=ED=95=98=EC=9C=84=20=EC=A0=84=EB=8B=AC=20types.ts:?= =?UTF-8?q?=20initialData=20=ED=83=80=EC=9E=85=20=EC=A0=95=EC=9D=98=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=20=EC=88=98=EC=A0=95=20=EB=AA=A8=EB=93=9C?= =?UTF-8?q?=EC=97=90=EC=84=9C=20=EC=A1=B0=EA=B1=B4=EB=B6=80=20=EC=BB=A8?= =?UTF-8?q?=ED=85=8C=EC=9D=B4=EB=84=88=20=EB=82=B4=EB=B6=80=20=EC=BB=B4?= =?UTF-8?q?=ED=8F=AC=EB=84=8C=ED=8A=B8=20=EC=B4=88=EA=B8=B0=EA=B0=92=20?= =?UTF-8?q?=ED=91=9C=EC=8B=9C=20=EC=A7=80=EC=9B=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../screen/InteractiveScreenViewerDynamic.tsx | 1 + frontend/lib/registry/DynamicComponentRenderer.tsx | 8 +++++--- .../ConditionalContainerComponent.tsx | 11 +++++++++++ .../ConditionalSectionViewer.tsx | 11 +++++++++++ .../components/conditional-container/types.ts | 3 +++ 5 files changed, 31 insertions(+), 3 deletions(-) diff --git a/frontend/components/screen/InteractiveScreenViewerDynamic.tsx b/frontend/components/screen/InteractiveScreenViewerDynamic.tsx index 4763507e..1dfdba14 100644 --- a/frontend/components/screen/InteractiveScreenViewerDynamic.tsx +++ b/frontend/components/screen/InteractiveScreenViewerDynamic.tsx @@ -365,6 +365,7 @@ export const InteractiveScreenViewerDynamic: React.FC = groupedData: props.groupedData, // โœ… ์–ธ๋”์Šค์ฝ”์–ด ์ œ๊ฑฐํ•˜์—ฌ ์ง์ ‘ ์ „๋‹ฌ _groupedData: props.groupedData, // ํ•˜์œ„ ํ˜ธํ™˜์„ฑ ์œ ์ง€ // ๐Ÿ†• UniversalFormModal์šฉ initialData ์ „๋‹ฌ - // originalData๊ฐ€ ๋น„์–ด์žˆ์ง€ ์•Š์œผ๋ฉด originalData ์‚ฌ์šฉ, ์•„๋‹ˆ๋ฉด formData ์‚ฌ์šฉ - // ์ƒ์„ฑ ๋ชจ๋“œ์—์„œ๋Š” originalData๊ฐ€ ๋นˆ ๊ฐ์ฒด์ด๋ฏ€๋กœ formData๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•จ - _initialData: (originalData && Object.keys(originalData).length > 0) ? originalData : formData, + // ์šฐ์„ ์ˆœ์œ„: props.initialData > originalData > formData + // ์กฐ๊ฑด๋ถ€ ์ปจํ…Œ์ด๋„ˆ์—์„œ ์ „๋‹ฌ๋œ initialData๊ฐ€ ์žˆ์œผ๋ฉด ๊ทธ๊ฒƒ์„ ์‚ฌ์šฉ + _initialData: props.initialData || ((originalData && Object.keys(originalData).length > 0) ? originalData : formData), _originalData: originalData, + // ๐Ÿ†• initialData๋„ ์ง์ ‘ ์ „๋‹ฌ (์กฐ๊ฑด๋ถ€ ์ปจํ…Œ์ด๋„ˆ โ†’ ๋‚ด๋ถ€ ์ปดํฌ๋„ŒํŠธ) + initialData: props.initialData, // ๐Ÿ†• ํƒญ ๊ด€๋ จ ์ •๋ณด ์ „๋‹ฌ (ํƒญ ๋‚ด๋ถ€์˜ ํ…Œ์ด๋ธ” ์ปดํฌ๋„ŒํŠธ์—์„œ ์‚ฌ์šฉ) parentTabId: props.parentTabId, parentTabsComponentId: props.parentTabsComponentId, diff --git a/frontend/lib/registry/components/conditional-container/ConditionalContainerComponent.tsx b/frontend/lib/registry/components/conditional-container/ConditionalContainerComponent.tsx index db3fde4c..e3d84d43 100644 --- a/frontend/lib/registry/components/conditional-container/ConditionalContainerComponent.tsx +++ b/frontend/lib/registry/components/conditional-container/ConditionalContainerComponent.tsx @@ -42,7 +42,16 @@ export function ConditionalContainerComponent({ className, groupedData, // ๐Ÿ†• ๊ทธ๋ฃน ๋ฐ์ดํ„ฐ onSave, // ๐Ÿ†• EditModal์˜ handleSave ์ฝœ๋ฐฑ + initialData, // ๐Ÿ†• ์ˆ˜์ • ๋ชจ๋“œ: ์ดˆ๊ธฐ ๋ฐ์ดํ„ฐ (๋ฐœ์ฃผ์ผ, ๋‹ด๋‹น์ž, ๋ฉ”๋ชจ ๋“ฑ) }: ConditionalContainerProps) { + // ๐Ÿ” ๋””๋ฒ„๊ทธ: initialData ์ˆ˜์‹  ํ™•์ธ + React.useEffect(() => { + console.log("[ConditionalContainer] initialData ์ˆ˜์‹ :", { + hasInitialData: !!initialData, + initialDataKeys: initialData ? Object.keys(initialData) : [], + initialData, + }); + }, [initialData]); // ํ™”๋ฉด ์ปจํ…์ŠคํŠธ (๋ฐ์ดํ„ฐ ์ œ๊ณต์ž๋กœ ๋“ฑ๋ก) const screenContext = useScreenContextOptional(); @@ -221,6 +230,7 @@ export function ConditionalContainerComponent({ onSave={onSave} controlField={controlField} selectedCondition={selectedValue} + initialData={initialData} /> ))} @@ -244,6 +254,7 @@ export function ConditionalContainerComponent({ onSave={onSave} controlField={controlField} selectedCondition={selectedValue} + initialData={initialData} /> ) : null ) diff --git a/frontend/lib/registry/components/conditional-container/ConditionalSectionViewer.tsx b/frontend/lib/registry/components/conditional-container/ConditionalSectionViewer.tsx index 59c82421..1338f40b 100644 --- a/frontend/lib/registry/components/conditional-container/ConditionalSectionViewer.tsx +++ b/frontend/lib/registry/components/conditional-container/ConditionalSectionViewer.tsx @@ -29,7 +29,17 @@ export function ConditionalSectionViewer({ onSave, // ๐Ÿ†• EditModal์˜ handleSave ์ฝœ๋ฐฑ controlField, // ๐Ÿ†• ์กฐ๊ฑด๋ถ€ ์ปจํ…Œ์ด๋„ˆ์˜ ์ œ์–ด ํ•„๋“œ๋ช… selectedCondition, // ๐Ÿ†• ํ˜„์žฌ ์„ ํƒ๋œ ์กฐ๊ฑด ๊ฐ’ + initialData, // ๐Ÿ†• ์ˆ˜์ • ๋ชจ๋“œ: ์ดˆ๊ธฐ ๋ฐ์ดํ„ฐ (๋ฐœ์ฃผ์ผ, ๋‹ด๋‹น์ž, ๋ฉ”๋ชจ ๋“ฑ) }: ConditionalSectionViewerProps) { + // ๐Ÿ” ๋””๋ฒ„๊ทธ: initialData ์ˆ˜์‹  ํ™•์ธ + React.useEffect(() => { + console.log("[ConditionalSectionViewer] initialData ์ˆ˜์‹ :", { + sectionId, + hasInitialData: !!initialData, + initialDataKeys: initialData ? Object.keys(initialData) : [], + initialData, + }); + }, [initialData, sectionId]); const { userId, userName, user } = useAuth(); const [isLoading, setIsLoading] = useState(false); const [components, setComponents] = useState([]); @@ -191,6 +201,7 @@ export function ConditionalSectionViewer({ onFormDataChange={onFormDataChange} groupedData={groupedData} onSave={hasUniversalFormModal ? undefined : onSave} + initialData={initialData} /> ); diff --git a/frontend/lib/registry/components/conditional-container/types.ts b/frontend/lib/registry/components/conditional-container/types.ts index 284e0855..24ba2033 100644 --- a/frontend/lib/registry/components/conditional-container/types.ts +++ b/frontend/lib/registry/components/conditional-container/types.ts @@ -47,6 +47,7 @@ export interface ConditionalContainerProps { onFormDataChange?: (fieldName: string, value: any) => void; groupedData?: Record[]; // ๐Ÿ†• ๊ทธ๋ฃน ๋ฐ์ดํ„ฐ (EditModal โ†’ ModalRepeaterTable) onSave?: () => Promise; // ๐Ÿ†• EditModal์˜ handleSave ์ฝœ๋ฐฑ + initialData?: Record; // ๐Ÿ†• ์ˆ˜์ • ๋ชจ๋“œ: ์ดˆ๊ธฐ ๋ฐ์ดํ„ฐ (๋ฐœ์ฃผ์ผ, ๋‹ด๋‹น์ž, ๋ฉ”๋ชจ ๋“ฑ) // ํ™”๋ฉด ํŽธ์ง‘๊ธฐ ๊ด€๋ จ isDesignMode?: boolean; // ๋””์ž์ธ ๋ชจ๋“œ ์—ฌ๋ถ€ @@ -82,5 +83,7 @@ export interface ConditionalSectionViewerProps { // ๐Ÿ†• ์กฐ๊ฑด๋ถ€ ์ปจํ…Œ์ด๋„ˆ ์ •๋ณด (์ž์‹ ํ™”๋ฉด์— ์ „๋‹ฌ) controlField?: string; // ์ œ์–ด ํ•„๋“œ๋ช… (์˜ˆ: "inbound_type") selectedCondition?: string; // ํ˜„์žฌ ์„ ํƒ๋œ ์กฐ๊ฑด ๊ฐ’ (์˜ˆ: "PURCHASE_IN") + // ๐Ÿ†• ์ˆ˜์ • ๋ชจ๋“œ: ์ดˆ๊ธฐ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ (๋ฐœ์ฃผ์ผ, ๋‹ด๋‹น์ž, ๋ฉ”๋ชจ ๋“ฑ) + initialData?: Record; }