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"
>