diff --git a/Front/client/src/components/FramePanel.tsx b/Front/client/src/components/FramePanel.tsx index 9168c57..5b971c6 100644 --- a/Front/client/src/components/FramePanel.tsx +++ b/Front/client/src/components/FramePanel.tsx @@ -47,6 +47,21 @@ export default function FramePanel({ return userSelection.overrides.zone_frames[targetRegion.id] || targetRegion.frame_match_strategy.frame_id; }, [selectedZone, selectedRegion, userSelection.overrides.zone_frames]); + const handleFrameSelect = React.useCallback( + (candidate: FrameCandidate) => { + const isReject = candidate.label === "reject"; + const alreadyApplied = currentFrameId === candidate.id; + if (isReject && !alreadyApplied) { + const ok = window.confirm( + `"${candidate.name}" 은 V4 reject 라벨입니다.\n선택 시 frame 은 유지되고 AI 가 콘텐츠를 frame 구조에 맞게 재구성합니다.\n계속하시겠습니까?`, + ); + if (!ok) return; + } + onFrameSelect(candidate.id); + }, + [currentFrameId, onFrameSelect], + ); + if (!selectedZone) { return (
@@ -152,7 +167,7 @@ export default function FramePanel({ className="w-full" >