{
  "status": "partial",
  "completed_count": 29,
  "applicable_count": 30,
  "failed_count": 1,
  "data": {
    "scenes": [
      {
        "scene_index": 1,
        "flow_summary": "도망치는 남자의 파편화된 신체와 표정을 거칠게 따라가던 카메라는, 측면에서 허공을 가르며 덮쳐오는 검은 인영을 향해 급격히 패닝한 뒤 두 사람이 바닥으로 고꾸라지는 궤적을 따라 거칠게 틸트다운합니다.",
        "flow_stages": [
          {
            "stage_index": 1,
            "stage_label": "frantic_tracking",
            "camera_position": "Low to mid height, moving backward rapidly through dense bushes",
            "camera_motion": "handheld",
            "visual_focus": "The fleeing man's bare foot, bleeding thigh, and terrified face",
            "transition_to_next": "Rapid whip pan to the side as a sudden dark shape enters the peripheral vision"
          },
          {
            "stage_index": 2,
            "stage_label": "ambush",
            "camera_position": "Mid height, slightly wider distance to frame the impending collision",
            "camera_motion": "pan",
            "visual_focus": "The black figure leaping through the air towards the terrified man",
            "transition_to_next": "Fast tilt down following the downward momentum of the tackle"
          },
          {
            "stage_index": 3,
            "stage_label": "ground_impact",
            "camera_position": "Low angle near the forest floor, close to the fallen bodies",
            "camera_motion": "tilt",
            "visual_focus": "The black figure pinning down the man on the ground",
            "transition_to_next": ""
          }
        ],
        "shot_assignments": [
          {
            "shot_index": 4,
            "stage_index": 2,
            "flow_position": "mid",
            "inherits": [
              "camera_position",
              "camera_motion",
              "visual_focus"
            ],
            "deviation_note": "Captures the exact apex of the black figure's leap, emphasizing the dynamic tension right before impact"
          },
          {
            "shot_index": 5,
            "stage_index": 3,
            "flow_position": "end",
            "inherits": [
              "camera_position",
              "camera_motion",
              "visual_focus"
            ],
            "deviation_note": "Camera settles on the chaotic aftermath of the impact, focusing on the overlapping bodies"
          }
        ]
      },
      {
        "scene_index": 2,
        "flow_summary": "어두운 골목길 전봇대의 두 사람에게 다가간 뒤, 남자의 흡혈 행위를 클로즈업으로 포착하고, 쓰러지는 여자를 따라 카메라가 아래로 틸트다운합니다.",
        "flow_stages": [
          {
            "stage_index": 1,
            "stage_label": "approach",
            "camera_position": "Medium distance, eye level, moving closer to the couple under the dim streetlight",
            "camera_motion": "dolly_in",
            "visual_focus": "The intertwined couple leaning against the utility pole",
            "transition_to_next": "Cut to a tight close-up of the man's face and the woman's neck"
          },
          {
            "stage_index": 2,
            "stage_label": "close_observation",
            "camera_position": "Extreme close-up, angled slightly upward towards the man's face and the woman's neck",
            "camera_motion": "static",
            "visual_focus": "The man's mouth biting the woman's neck with blood",
            "transition_to_next": "Tilt down following the woman's collapsing body"
          },
          {
            "stage_index": 3,
            "stage_label": "reveal",
            "camera_position": "High angle, looking down at the ground near the utility pole",
            "camera_motion": "tilt",
            "visual_focus": "The woman's body lying face down on the ground",
            "transition_to_next": ""
          }
        ],
        "shot_assignments": [
          {
            "shot_index": 3,
            "stage_index": 2,
            "flow_position": "mid",
            "inherits": [
              "camera_position",
              "camera_motion",
              "visual_focus"
            ],
            "deviation_note": "Focus specifically on the bloody mouth and neck."
          },
          {
            "shot_index": 4,
            "stage_index": 3,
            "flow_position": "end",
            "inherits": [
              "camera_position",
              "camera_motion",
              "visual_focus"
            ],
            "deviation_note": "Static frame after the tilt down, emphasizing the lifeless body."
          }
        ]
      },
      {
        "scene_index": 3,
        "flow_summary": "폴리스 라인 너머 감식 현장에서 시작해 수거되는 시신을 비춘 뒤, 무리 속에서 지휘하는 혜수에게로 시선이 이동하는 뉴스 보도 스타일의 핸드헬드 카메라 워크입니다.",
        "flow_stages": [
          {
            "stage_index": 1,
            "stage_label": "establishing",
            "camera_position": "Behind the police line, eye level, medium distance",
            "camera_motion": "pan",
            "visual_focus": "Police officers examining the crime scene",
            "transition_to_next": "Cut to a closer view of the body being recovered"
          },
          {
            "stage_index": 2,
            "stage_label": "close_observation",
            "camera_position": "Closer to the stretcher, slightly high angle",
            "camera_motion": "handheld",
            "visual_focus": "A body covered with a cloth on a stretcher",
            "transition_to_next": "Pan to the group of detectives"
          },
          {
            "stage_index": 3,
            "stage_label": "reveal",
            "camera_position": "Medium distance, eye level",
            "camera_motion": "handheld",
            "visual_focus": "Hye-su directing the scene among the detectives",
            "transition_to_next": ""
          }
        ],
        "shot_assignments": [
          {
            "shot_index": 2,
            "stage_index": 2,
            "flow_position": "mid",
            "inherits": [
              "camera_position",
              "camera_motion",
              "visual_focus"
            ],
            "deviation_note": "Focus remains steady on the covered body to emphasize the grim reality of the news report."
          }
        ]
      },
      {
        "scene_index": 4,
        "flow_summary": "인천 변두리의 낡은 주택가를 높은 고도에서 넓게 내려다보는 부감 샷으로 시작하여, 뉴스 보도 음성과 함께 특정 옥탑방의 고립된 전경을 정적으로 응시합니다.",
        "flow_stages": [
          {
            "stage_index": 1,
            "stage_label": "establishing",
            "camera_position": "High altitude bird's-eye view overlooking the dense, old residential area on the city outskirts",
            "camera_motion": "static",
            "visual_focus": "The sprawling, weathered rooftops of the neighborhood, establishing the bleak and anxious atmosphere",
            "transition_to_next": "Maintains the static frame while subtly shifting the viewer's attention to a specific rooftop room as the voiceover continues"
          },
          {
            "stage_index": 2,
            "stage_label": "close_observation",
            "camera_position": "Same high altitude bird's-eye view",
            "camera_motion": "static",
            "visual_focus": "The specific old villa rooftop room, emphasizing its isolation and the lingering tension in the area",
            "transition_to_next": ""
          }
        ],
        "shot_assignments": [
          {
            "shot_index": 1,
            "stage_index": 1,
            "flow_position": "mid",
            "inherits": [
              "camera_position",
              "camera_motion",
              "visual_focus"
            ],
            "deviation_note": ""
          }
        ]
      },
      {
        "scene_index": 5,
        "flow_summary": "주방의 일상적인 풍경을 훑으며 긴장한 민숙의 얼굴로 다가간 후, 식탁에서의 모녀 대화를 거쳐 현관으로 컷 전환되며, 마지막으로 민숙의 손목에 있는 미스터리한 표식으로 카메라가 깊게 밀고 들어갑니다.",
        "flow_stages": [
          {
            "stage_index": 1,
            "stage_label": "establishing",
            "camera_position": "Medium distance, tracking along the kitchen counter towards the living room",
            "camera_motion": "track",
            "visual_focus": "Kitchen elements leading to Minsuk's tense face watching TV",
            "transition_to_next": "Cut to the dining table as Suriyoung sits down"
          },
          {
            "stage_index": 2,
            "stage_label": "reaction",
            "camera_position": "Close distance at the dining table, eye level with seated characters",
            "camera_motion": "static",
            "visual_focus": "Suriyoung's facial expressions as she drinks the herbal tea",
            "transition_to_next": "Cut to the entrance area"
          },
          {
            "stage_index": 3,
            "stage_label": "interaction",
            "camera_position": "Medium distance at the entrance, eye level with standing characters",
            "camera_motion": "static",
            "visual_focus": "Suriyoung putting on shoes and hugging Minsuk",
            "transition_to_next": "Tilt down and dolly in towards Minsuk's wrist"
          },
          {
            "stage_index": 4,
            "stage_label": "reveal",
            "camera_position": "Macro distance near Minsuk's wrist",
            "camera_motion": "dolly_in",
            "visual_focus": "The small circular mark on Minsuk's wrist",
            "transition_to_next": ""
          }
        ],
        "shot_assignments": [
          {
            "shot_index": 3,
            "stage_index": 1,
            "flow_position": "end",
            "inherits": [
              "visual_focus"
            ],
            "deviation_note": "Camera stops tracking and holds a static medium close-up on Minsuk's dark expression."
          },
          {
            "shot_index": 8,
            "stage_index": 2,
            "flow_position": "mid",
            "inherits": [
              "camera_position",
              "camera_motion",
              "visual_focus"
            ],
            "deviation_note": "Tight close-up on Suriyoung's grimacing face."
          },
          {
            "shot_index": 13,
            "stage_index": 4,
            "flow_position": "end",
            "inherits": [
              "camera_position",
              "camera_motion",
              "visual_focus"
            ],
            "deviation_note": "Extreme close-up, holding steady on the circular mark as the dolly movement concludes."
          }
        ]
      },
      {
        "scene_index": 6,
        "flow_summary": "자전거에 멈춰 서서 바다 내음을 만끽하는 수리영의 측면을 정적으로 담아낸 뒤, 그녀가 출발함에 따라 카메라가 나란히 트래킹하며 활기찬 주행을 따라갑니다. 이후 갑작스러운 개 짖는 소리에 반응하는 그녀의 표정으로 다가가며 마무리됩니다.",
        "flow_stages": [
          {
            "stage_index": 1,
            "stage_label": "close_observation",
            "camera_position": "Medium side angle, eye level with Suri-young sitting on the bicycle",
            "camera_motion": "static",
            "visual_focus": "Suri-young's relaxed face with earphones and her feet resting on the pedals",
            "transition_to_next": "Cut to a wider tracking shot as she pushes the pedal and starts riding"
          },
          {
            "stage_index": 2,
            "stage_label": "track",
            "camera_position": "Medium-wide distance, moving parallel to the bicycle along the coastal road",
            "camera_motion": "track",
            "visual_focus": "Suri-young riding energetically with the ocean background",
            "transition_to_next": "Camera slows down and pushes in slightly as an off-screen sound interrupts"
          },
          {
            "stage_index": 3,
            "stage_label": "reaction",
            "camera_position": "Medium close-up, slightly frontal angle",
            "camera_motion": "dolly_in",
            "visual_focus": "Suri-young's facial expression reacting to the sudden dog bark",
            "transition_to_next": ""
          }
        ],
        "shot_assignments": [
          {
            "shot_index": 1,
            "stage_index": 1,
            "flow_position": "start",
            "inherits": [
              "camera_position",
              "camera_motion",
              "visual_focus"
            ],
            "deviation_note": ""
          }
        ]
      },
      {
        "scene_index": 7,
        "flow_summary": "사나운 맹견의 위협적인 모습에서 시작한 카메라는 수의사의 빠른 주사 처치로 시선을 옮긴 뒤, 보호소의 분주한 환경을 거쳐 능숙하게 미용 봉사를 하는 수리영의 모습으로 자연스럽게 이동합니다.",
        "flow_stages": [
          {
            "stage_index": 1,
            "stage_label": "establishing",
            "camera_position": "Low angle, close to the cage bars",
            "camera_motion": "static",
            "visual_focus": "The aggressive Rottweiler baring its teeth",
            "transition_to_next": "Cut to a close-up of the dog's hindquarters"
          },
          {
            "stage_index": 2,
            "stage_label": "close_observation",
            "camera_position": "Close-up, waist level near the dog's hindquarters",
            "camera_motion": "handheld",
            "visual_focus": "The vet's hand administering the injection with a syringe",
            "transition_to_next": "Pan up and pull back to reveal Suri-young and the shelter environment"
          },
          {
            "stage_index": 3,
            "stage_label": "reaction",
            "camera_position": "Medium shot, eye level",
            "camera_motion": "dolly_out",
            "visual_focus": "Suri-young looking around the cages and checking her smartphone",
            "transition_to_next": "Fast track to the grooming station following the helper's voice"
          },
          {
            "stage_index": 4,
            "stage_label": "reveal",
            "camera_position": "Medium close-up, slightly high angle over Suri-young's shoulder",
            "camera_motion": "track",
            "visual_focus": "Suri-young actively grooming a dog with scissors",
            "transition_to_next": ""
          }
        ],
        "shot_assignments": [
          {
            "shot_index": 1,
            "stage_index": 1,
            "flow_position": "start",
            "inherits": [
              "camera_position",
              "camera_motion",
              "visual_focus"
            ],
            "deviation_note": ""
          },
          {
            "shot_index": 4,
            "stage_index": 2,
            "flow_position": "mid",
            "inherits": [
              "camera_position",
              "camera_motion",
              "visual_focus"
            ],
            "deviation_note": "Focus strictly on the precise moment the needle pierces the skin."
          },
          {
            "shot_index": 9,
            "stage_index": 4,
            "flow_position": "mid",
            "inherits": [
              "camera_position",
              "camera_motion",
              "visual_focus"
            ],
            "deviation_note": "Emphasize the texture of the dog's fur and the metallic glint of the scissors in Suri-young's hand."
          }
        ]
      },
      {
        "scene_index": 8,
        "flow_summary": "번화가를 가로질러 마트로 들어가는 수리영의 동선을 따라간 뒤, 내부에서의 대화 상황을 포착하고 마트 밖으로 나와 초조하게 전화를 거는 모습으로 전환됩니다.",
        "flow_stages": [
          {
            "stage_index": 1,
            "stage_label": "establishing_approach",
            "camera_position": "Tracking alongside the street at eye level, ending near the mart entrance",
            "camera_motion": "track",
            "visual_focus": "Suri-young navigating the busy street on her bicycle",
            "transition_to_next": "Cut to the interior of the mart"
          },
          {
            "stage_index": 2,
            "stage_label": "search_and_dialogue",
            "camera_position": "Eye-level medium distance inside the mart aisles",
            "camera_motion": "pan",
            "visual_focus": "Suri-young and the mart employees during their conversation",
            "transition_to_next": "Cut to the exterior of the mart automatic doors"
          },
          {
            "stage_index": 3,
            "stage_label": "exit_and_reaction",
            "camera_position": "Medium close-up outside the mart entrance",
            "camera_motion": "static",
            "visual_focus": "Suri-young holding her smartphone to her ear",
            "transition_to_next": ""
          }
        ],
        "shot_assignments": [
          {
            "shot_index": 4,
            "stage_index": 2,
            "flow_position": "mid",
            "inherits": [
              "camera_position",
              "camera_motion",
              "visual_focus"
            ],
            "deviation_note": "Camera focuses specifically on Suri-young's face as she asks the female employee about her mother"
          },
          {
            "shot_index": 9,
            "stage_index": 3,
            "flow_position": "start",
            "inherits": [
              "camera_position",
              "camera_motion",
              "visual_focus"
            ],
            "deviation_note": "Framed to show the automatic doors in the background as she waits for the call to connect"
          }
        ]
      },
      {
        "scene_index": 9,
        "flow_summary": "어두운 해안도로에서 출발 직전의 긴장된 순간을 로우 앵글로 포착한 뒤, 자전거를 타고 질주하는 수리영의 옆모습을 트래킹하며 따라갑니다. 마지막으로 어둠 속으로 멀어지는 그녀의 뒷모습을 팬으로 배웅합니다.",
        "flow_stages": [
          {
            "stage_index": 1,
            "stage_label": "establishing",
            "camera_position": "Low angle, ground level on the dark coastal road, positioned slightly ahead and to the side of the bicycle",
            "camera_motion": "static",
            "visual_focus": "Suriyoung's foot on the pedal and her tense, leaning upper body",
            "transition_to_next": "Cut to a parallel tracking shot as she pushes off the pedal"
          },
          {
            "stage_index": 2,
            "stage_label": "action_tracking",
            "camera_position": "Mid-level, parallel to the bicycle moving along the road",
            "camera_motion": "track",
            "visual_focus": "Suriyoung's determined face and the spinning wheels",
            "transition_to_next": "Camera stops moving, letting the subject pass by"
          },
          {
            "stage_index": 3,
            "stage_label": "withdraw",
            "camera_position": "Fixed position on the side of the road",
            "camera_motion": "pan",
            "visual_focus": "Suriyoung's back as she rides away into the dark distance",
            "transition_to_next": ""
          }
        ],
        "shot_assignments": [
          {
            "shot_index": 1,
            "stage_index": 1,
            "flow_position": "start",
            "inherits": [
              "camera_position",
              "camera_motion",
              "visual_focus"
            ],
            "deviation_note": ""
          }
        ]
      },
      {
        "scene_index": 10,
        "flow_summary": "카메라는 옥상 바닥을 스치는 남자의 발걸음을 따라가다 문틈에서 벌어지는 은밀한 침입 과정을 클로즈업으로 포착합니다. 이후 창문으로 시선을 옮겨 그림자를 통해 끔찍한 습격의 순간을 간접적으로 드러냅니다.",
        "flow_stages": [
          {
            "stage_index": 1,
            "stage_label": "approach",
            "camera_position": "Low angle, close to the ground on the rooftop",
            "camera_motion": "track",
            "visual_focus": "The man's shoes walking and stopping in front of the door",
            "transition_to_next": "Cut to a close-up of the door gap"
          },
          {
            "stage_index": 2,
            "stage_label": "close_observation",
            "camera_position": "Close-up level at the door handle and gap height",
            "camera_motion": "static",
            "visual_focus": "The man's fingers manipulating the flyer and the door slightly opening",
            "transition_to_next": "Cut to the window exterior"
          },
          {
            "stage_index": 3,
            "stage_label": "reveal",
            "camera_position": "Outside the window, framing the illuminated window pane",
            "camera_motion": "static",
            "visual_focus": "The silhouettes on the window showing one figure attacking another",
            "transition_to_next": ""
          }
        ],
        "shot_assignments": [
          {
            "shot_index": 4,
            "stage_index": 2,
            "flow_position": "start",
            "inherits": [
              "camera_position",
              "camera_motion",
              "visual_focus"
            ],
            "deviation_note": "Focus specifically on the fingers holding the flyer."
          },
          {
            "shot_index": 6,
            "stage_index": 2,
            "flow_position": "end",
            "inherits": [
              "camera_position",
              "camera_motion",
              "visual_focus"
            ],
            "deviation_note": "Focus shifts to the slight opening of the iron door."
          },
          {
            "shot_index": 7,
            "stage_index": 3,
            "flow_position": "mid",
            "inherits": [
              "camera_position",
              "camera_motion",
              "visual_focus"
            ],
            "deviation_note": ""
          }
        ]
      },
      {
        "scene_index": 11,
        "flow_summary": "카메라는 어두운 골목길에서 자전거를 타고 오는 수리영을 따라가며, 그녀가 계단을 오르다 이상한 냄새에 멈칫하는 순간을 포착한 뒤, 옥상에 올라 열린 철문을 발견하는 시선으로 이어집니다.",
        "flow_stages": [
          {
            "stage_index": 1,
            "stage_label": "approach",
            "camera_position": "Tracking alongside Suriyoung on the bicycle in the dark alley",
            "camera_motion": "track",
            "visual_focus": "Suriyoung riding the bicycle",
            "transition_to_next": "Cut to the courtyard"
          },
          {
            "stage_index": 2,
            "stage_label": "follow",
            "camera_position": "Medium distance in the courtyard, positioned at the base of the stairs",
            "camera_motion": "tilt",
            "visual_focus": "Suriyoung hurriedly climbing the stairs",
            "transition_to_next": "Cut to a closer angle on the stairs"
          },
          {
            "stage_index": 3,
            "stage_label": "reaction",
            "camera_position": "Close up, slightly low angle on the stairs",
            "camera_motion": "static",
            "visual_focus": "Suriyoung's facial expression reacting to the foul smell",
            "transition_to_next": "Cut to the rooftop landing"
          },
          {
            "stage_index": 4,
            "stage_label": "reveal",
            "camera_position": "Over the shoulder shot from behind Suriyoung on the rooftop",
            "camera_motion": "static",
            "visual_focus": "The half-open iron door from Suriyoung's perspective",
            "transition_to_next": ""
          }
        ],
        "shot_assignments": [
          {
            "shot_index": 5,
            "stage_index": 4,
            "flow_position": "end",
            "inherits": [
              "camera_position",
              "camera_motion",
              "visual_focus"
            ],
            "deviation_note": ""
          }
        ]
      },
      {
        "scene_index": 12,
        "flow_summary": "카메라는 수리영의 뒤를 따라 어두운 집안을 탐색하다가, 방 안의 핏자국을 따라가며 끔찍한 진실을 마주합니다. 이후 핸드헬드로 혼란스러운 디테일들을 포착한 뒤, 극도의 공포에 질린 수리영의 얼굴로 빠르게 다가가며 씬을 마무리합니다.",
        "flow_stages": [
          {
            "stage_index": 1,
            "stage_label": "approach",
            "camera_position": "Behind Suriyoung, tracking her movements through the dim living room towards the bedroom door.",
            "camera_motion": "track",
            "visual_focus": "Suriyoung's back and the eerie, empty apartment environment.",
            "transition_to_next": "Cut to inside the bedroom as the door opens."
          },
          {
            "stage_index": 2,
            "stage_label": "reveal",
            "camera_position": "Low angle near the bedroom entrance, pointing down at the floor.",
            "camera_motion": "track",
            "visual_focus": "Pools of blood and bloody footprints leading towards the closed curtain.",
            "transition_to_next": "Tilt up to the curtain being pulled, then cut to Suriyoung's face."
          },
          {
            "stage_index": 3,
            "stage_label": "reaction",
            "camera_position": "Close-up in front of Suriyoung, slightly low angle.",
            "camera_motion": "dolly_in",
            "visual_focus": "Suriyoung's wide, frozen eyes and shocked expression.",
            "transition_to_next": "Cut to Minsuk's body, initiating a chaotic handheld sequence."
          },
          {
            "stage_index": 4,
            "stage_label": "close_observation",
            "camera_position": "Close proximity to Minsuk's body and the bed, moving erratically.",
            "camera_motion": "handheld",
            "visual_focus": "Minsuk's torn flesh, the crumpled photo, the glowing tattoo, and the red circle forming on the wall.",
            "transition_to_next": "Whip pan to Suriyoung's face as the supernatural event peaks."
          },
          {
            "stage_index": 5,
            "stage_label": "climax_reaction",
            "camera_position": "Extreme close-up directly in front of Suriyoung's face.",
            "camera_motion": "dolly_in",
            "visual_focus": "Suriyoung's distorted face screaming in absolute terror.",
            "transition_to_next": ""
          }
        ],
        "shot_assignments": [
          {
            "shot_index": 5,
            "stage_index": 2,
            "flow_position": "mid",
            "inherits": [
              "camera_position",
              "visual_focus"
            ],
            "deviation_note": "Camera pauses its tracking motion to emphasize the sheer volume of blood on the floor."
          },
          {
            "shot_index": 8,
            "stage_index": 3,
            "flow_position": "start",
            "inherits": [
              "camera_position",
              "camera_motion",
              "visual_focus"
            ],
            "deviation_note": ""
          },
          {
            "shot_index": 16,
            "stage_index": 5,
            "flow_position": "end",
            "inherits": [
              "camera_position",
              "camera_motion",
              "visual_focus"
            ],
            "deviation_note": "Captures the peak of her scream with maximum distortion and intensity."
          }
        ]
      },
      {
        "scene_index": 13,
        "flow_summary": "카메라는 계단 아래에서 패닉에 빠진 수리영과 달려오는 혜수를 넓게 잡은 뒤, 두 사람의 얼굴을 번갈아 클로즈업하며 충격적인 진실을 전달합니다. 이후 옥탑방을 향해 다급하게 뛰어오르는 형사들의 움직임을 따라 역동적으로 틸트 업 합니다.",
        "flow_stages": [
          {
            "stage_index": 1,
            "stage_label": "establishing",
            "camera_position": "Low angle near the bottom of the stairs, wide distance",
            "camera_motion": "pan",
            "visual_focus": "Suriyoung running down the stairs, then panning to Hyesu arriving and running towards her",
            "transition_to_next": "Cut to a close-up of Suriyoung and Hyesu"
          },
          {
            "stage_index": 2,
            "stage_label": "close_observation",
            "camera_position": "Eye level, close distance to Suriyoung and Hyesu",
            "camera_motion": "handheld",
            "visual_focus": "Suriyoung's desperate face and Hyesu's shocked reaction",
            "transition_to_next": "Cut to a low angle shot at the base of the stairs"
          },
          {
            "stage_index": 3,
            "stage_label": "action",
            "camera_position": "Low angle at the base of the stairs, looking up",
            "camera_motion": "tilt",
            "visual_focus": "Hyesu and Detective Kim rushing up the stairs",
            "transition_to_next": ""
          }
        ],
        "shot_assignments": [
          {
            "shot_index": 5,
            "stage_index": 2,
            "flow_position": "start",
            "inherits": [
              "camera_position",
              "camera_motion"
            ],
            "deviation_note": "Focus specifically on Suriyoung looking up at Hyesu, capturing her despair."
          },
          {
            "shot_index": 6,
            "stage_index": 2,
            "flow_position": "end",
            "inherits": [
              "camera_position",
              "camera_motion"
            ],
            "deviation_note": "Reverse angle focusing entirely on Hyesu's shocked expression."
          },
          {
            "shot_index": 8,
            "stage_index": 3,
            "flow_position": "mid",
            "inherits": [
              "camera_position",
              "camera_motion",
              "visual_focus"
            ],
            "deviation_note": "Focus on Detective Kim following Hyesu, emphasizing the urgency of their movement up the stairs."
          }
        ]
      },
      {
        "scene_index": 14,
        "flow_summary": "카메라는 수리영을 따라 방 안으로 급격히 이동하며 그녀의 충격받은 얼굴을 포착한 뒤, 식탁에서의 갈등을 거쳐 혜수의 따뜻한 위로를 담아내고, 마지막으로 방 안의 미세하게 위치가 바뀐 물건들을 서늘하게 비춥니다.",
        "flow_stages": [
          {
            "stage_index": 1,
            "stage_label": "approach",
            "camera_position": "Following behind Su-ri-young at eye level, moving rapidly from the entrance into her bedroom",
            "camera_motion": "track",
            "visual_focus": "Su-ri-young's back and the pristine, unexpectedly clean condition of the bedroom",
            "transition_to_next": "Cut to a frontal close-up of Su-ri-young's face"
          },
          {
            "stage_index": 2,
            "stage_label": "close_observation",
            "camera_position": "Close to Su-ri-young's face, slightly low angle",
            "camera_motion": "static",
            "visual_focus": "Su-ri-young's pale, shocked facial expression as she realizes the body is gone",
            "transition_to_next": "Whip pan following Su-ri-young as she runs out to the dining table"
          },
          {
            "stage_index": 3,
            "stage_label": "conflict",
            "camera_position": "Medium distance at the dining area, capturing Su-ri-young, Detective Kim, and Hye-soo",
            "camera_motion": "pan",
            "visual_focus": "The empty dining table and the tense interactions between the three characters",
            "transition_to_next": "Push in towards Hye-soo and Su-ri-young as Detective Kim leaves the frame"
          },
          {
            "stage_index": 4,
            "stage_label": "reaction",
            "camera_position": "Close medium shot focusing on Hye-soo and Su-ri-young",
            "camera_motion": "dolly_in",
            "visual_focus": "Hye-soo comforting Su-ri-young, specifically focusing on their emotional exchange and physical contact",
            "transition_to_next": "Slow pan and tilt down, moving back into the bedroom towards the floor"
          },
          {
            "stage_index": 5,
            "stage_label": "reveal",
            "camera_position": "Low angle, close to the floor inside Su-ri-young's bedroom",
            "camera_motion": "track",
            "visual_focus": "The backpack and doll on the floor, highlighting their slightly altered positions",
            "transition_to_next": ""
          }
        ],
        "shot_assignments": [
          {
            "shot_index": 5,
            "stage_index": 2,
            "flow_position": "mid",
            "inherits": [
              "camera_position",
              "camera_motion",
              "visual_focus"
            ],
            "deviation_note": ""
          },
          {
            "shot_index": 10,
            "stage_index": 4,
            "flow_position": "mid",
            "inherits": [
              "camera_position",
              "camera_motion",
              "visual_focus"
            ],
            "deviation_note": "Focus specifically on Hye-soo's hand resting on Su-ri-young's shoulder to emphasize the comforting gesture."
          },
          {
            "shot_index": 12,
            "stage_index": 5,
            "flow_position": "end",
            "inherits": [
              "camera_position",
              "visual_focus"
            ],
            "deviation_note": "Camera motion becomes static at the end to emphasize the eerie realization that the objects have been moved."
          }
        ]
      },
      {
        "scene_index": 15,
        "flow_summary": "수리영의 불안한 내면을 정적으로 관찰하다가, 그녀가 달려나가는 뒷모습을 따라가며 마지막에는 누군가 지켜보는 듯한 불길한 시선으로 전환됩니다.",
        "flow_stages": [
          {
            "stage_index": 1,
            "stage_label": "close_observation",
            "camera_position": "Medium close-up level, positioned slightly to the side to capture Suriyoung's profile against the dark sea",
            "camera_motion": "static",
            "visual_focus": "Suriyoung's blank expression and the dark sea in the background",
            "transition_to_next": "Cut to a slightly wider angle to include Haesu entering the frame"
          },
          {
            "stage_index": 2,
            "stage_label": "interaction",
            "camera_position": "Medium shot, focusing on the space between Suriyoung and Haesu at the bus stop",
            "camera_motion": "static",
            "visual_focus": "Haesu's hand extending the beverage can towards Suriyoung",
            "transition_to_next": "Pan and tilt up as Suriyoung suddenly stands up, then cut to her back"
          },
          {
            "stage_index": 3,
            "stage_label": "departure",
            "camera_position": "Positioned behind Suriyoung, looking down the coastal road",
            "camera_motion": "track",
            "visual_focus": "Suriyoung's back as she runs away along the coastal road",
            "transition_to_next": "Cut to a distant, obscured vantage point"
          },
          {
            "stage_index": 4,
            "stage_label": "voyeuristic_pov",
            "camera_position": "Far away, partially obscured by a structure, looking towards the bus stop and the running figure",
            "camera_motion": "handheld",
            "visual_focus": "The overall scene of Haesu shouting and Suriyoung running, framed as if being watched",
            "transition_to_next": ""
          }
        ],
        "shot_assignments": [
          {
            "shot_index": 1,
            "stage_index": 1,
            "flow_position": "start",
            "inherits": [
              "camera_position",
              "camera_motion",
              "visual_focus"
            ],
            "deviation_note": ""
          },
          {
            "shot_index": 2,
            "stage_index": 2,
            "flow_position": "mid",
            "inherits": [
              "camera_position",
              "camera_motion",
              "visual_focus"
            ],
            "deviation_note": "Focus specifically on the hand and the beverage can."
          },
          {
            "shot_index": 4,
            "stage_index": 3,
            "flow_position": "mid",
            "inherits": [
              "camera_position",
              "camera_motion",
              "visual_focus"
            ],
            "deviation_note": ""
          }
        ]
      },
      {
        "scene_index": 16,
        "flow_summary": "카메라는 사무실로 들어오는 혜수를 따라 이동한 뒤, 책상을 사이에 두고 김형사를 압박하는 혜수의 핸드폰 화면과 그녀의 굳은 표정을 타이트하게 포착하며 긴장감을 고조시킵니다.",
        "flow_stages": [
          {
            "stage_index": 1,
            "stage_label": "approach",
            "camera_position": "Medium distance, eye level, moving alongside Hye-soo from the office entrance towards the desk",
            "camera_motion": "track",
            "visual_focus": "Hye-soo walking urgently with a phone to her ear",
            "transition_to_next": "Cut to a closer over-the-shoulder shot at the desk"
          },
          {
            "stage_index": 2,
            "stage_label": "close_observation",
            "camera_position": "Close distance, over Detective Kim's shoulder, looking slightly up at Hye-soo",
            "camera_motion": "static",
            "visual_focus": "Hye-soo's hand thrusting the smartphone towards Detective Kim",
            "transition_to_next": "Cut to a tight low angle shot focusing entirely on Hye-soo's face"
          },
          {
            "stage_index": 3,
            "stage_label": "reaction",
            "camera_position": "Close distance, low angle from Detective Kim's perspective looking up at Hye-soo",
            "camera_motion": "static",
            "visual_focus": "Hye-soo's stiff and anxious facial expression",
            "transition_to_next": ""
          }
        ],
        "shot_assignments": [
          {
            "shot_index": 3,
            "stage_index": 2,
            "flow_position": "mid",
            "inherits": [
              "camera_position",
              "camera_motion",
              "visual_focus"
            ],
            "deviation_note": "Extreme close-up on the smartphone screen being shoved into the frame, blurring Detective Kim in the foreground."
          },
          {
            "shot_index": 5,
            "stage_index": 3,
            "flow_position": "mid",
            "inherits": [
              "camera_position",
              "camera_motion",
              "visual_focus"
            ],
            "deviation_note": "Tight framing on Hye-soo's eyes to emphasize her ominous feeling and firm resolve."
          }
        ]
      },
      {
        "scene_index": 17,
        "flow_summary": "카메라는 낮은 앵글에서 불 켜진 옥탑방을 올려다보는 검은 고양이를 정적으로 비춘 뒤, 고양이가 담을 넘는 움직임을 따라 역동적으로 이동합니다.",
        "flow_stages": [
          {
            "stage_index": 1,
            "stage_label": "establishing",
            "camera_position": "Low angle, ground level, positioned slightly behind the black cat",
            "camera_motion": "static",
            "visual_focus": "The black cat in the foreground and the lit rooftop room in the background",
            "transition_to_next": "Cut to a tracking shot following the cat's sudden movement"
          },
          {
            "stage_index": 2,
            "stage_label": "action",
            "camera_position": "Mid-height, parallel to the wall",
            "camera_motion": "track",
            "visual_focus": "The black cat jumping over the wall",
            "transition_to_next": ""
          }
        ],
        "shot_assignments": [
          {
            "shot_index": 1,
            "stage_index": 1,
            "flow_position": "start",
            "inherits": [
              "camera_position",
              "camera_motion",
              "visual_focus"
            ],
            "deviation_note": ""
          }
        ]
      },
      {
        "scene_index": 18,
        "flow_summary": "수리영의 불안한 동선을 따라 방에서 욕실, 거실로 컷을 통해 이동하며, 거울과 사진을 통해 발현되는 그녀의 환각과 공포를 클로즈업과 핸드헬드로 포착합니다.",
        "flow_stages": [
          {
            "stage_index": 1,
            "stage_label": "search_and_anxiety",
            "camera_position": "Eye-level, tracking alongside Suriyoung through the bedroom and her room",
            "camera_motion": "track",
            "visual_focus": "Suriyoung waking up, checking the empty room, and taking a phone call",
            "transition_to_next": "Cut to the bathroom mirror."
          },
          {
            "stage_index": 2,
            "stage_label": "mirror_hallucination",
            "camera_position": "Over-the-shoulder shot looking into the bathroom mirror",
            "camera_motion": "dolly_in",
            "visual_focus": "Suriyoung's reflection and the sudden appearance of a red circle on the reflected wall",
            "transition_to_next": "Cut to the living room dining table."
          },
          {
            "stage_index": 3,
            "stage_label": "photo_distortion",
            "camera_position": "Close-up on the framed photo on the dining table",
            "camera_motion": "dolly_in",
            "visual_focus": "The framed photo of Suriyoung and her mom, focusing on the melting face",
            "transition_to_next": "Cut to Suriyoung's terrified reaction."
          },
          {
            "stage_index": 4,
            "stage_label": "panic_reaction",
            "camera_position": "Close-up on Suriyoung's face",
            "camera_motion": "handheld",
            "visual_focus": "Suriyoung screaming and slapping herself in panic",
            "transition_to_next": ""
          }
        ],
        "shot_assignments": [
          {
            "shot_index": 10,
            "stage_index": 2,
            "flow_position": "mid",
            "inherits": [
              "camera_position",
              "visual_focus"
            ],
            "deviation_note": "Focus shifts slightly to emphasize the red circle on the reflected wall."
          },
          {
            "shot_index": 15,
            "stage_index": 3,
            "flow_position": "end",
            "inherits": [
              "camera_position",
              "camera_motion",
              "visual_focus"
            ],
            "deviation_note": "Extreme close-up on the distorted face."
          },
          {
            "shot_index": 16,
            "stage_index": 4,
            "flow_position": "start",
            "inherits": [
              "camera_position",
              "camera_motion",
              "visual_focus"
            ],
            "deviation_note": "Captures the peak of her scream with intense handheld shake."
          }
        ]
      },
      {
        "scene_index": 19,
        "flow_summary": "카메라는 마트 진열대 사이를 탐색하는 수리영을 정면에서 따라가다, 직원과의 대화 중 단서를 얻고 놀라는 그녀의 표정을 정적인 클로즈업으로 포착합니다. 이후 마트 외부로 컷 전환되어, 단서가 될 CCTV를 올려다보는 수리영의 움직임을 로우 앵글 틸트업으로 담아냅니다.",
        "flow_stages": [
          {
            "stage_index": 1,
            "stage_label": "search_approach",
            "camera_position": "Medium distance, eye level, positioned at the end of the mart aisle facing Suri-young",
            "camera_motion": "track",
            "visual_focus": "Suri-young navigating through the mart aisles",
            "transition_to_next": "Cut to a close-up dialogue setup as she initiates conversation with the male employee."
          },
          {
            "stage_index": 2,
            "stage_label": "reaction",
            "camera_position": "Close-up, eye level, slightly angled to capture Suri-young's facial expressions",
            "camera_motion": "static",
            "visual_focus": "Suri-young's face reacting to the new information about the man",
            "transition_to_next": "Cut to the exterior of the mart building."
          },
          {
            "stage_index": 3,
            "stage_label": "reveal",
            "camera_position": "Low angle, medium shot outside the mart",
            "camera_motion": "tilt",
            "visual_focus": "Suri-young looking up towards the CCTV camera",
            "transition_to_next": ""
          }
        ],
        "shot_assignments": [
          {
            "shot_index": 2,
            "stage_index": 1,
            "flow_position": "mid",
            "inherits": [
              "camera_position",
              "visual_focus"
            ],
            "deviation_note": "Camera temporarily stops tracking to capture her standing still between the aisles."
          },
          {
            "shot_index": 5,
            "stage_index": 2,
            "flow_position": "mid",
            "inherits": [
              "camera_position",
              "camera_motion",
              "visual_focus"
            ],
            "deviation_note": "Focus intensifies on her wide-eyed expression."
          },
          {
            "shot_index": 7,
            "stage_index": 3,
            "flow_position": "start",
            "inherits": [
              "camera_position",
              "camera_motion",
              "visual_focus"
            ],
            "deviation_note": "Camera tilts up slightly following her gaze to emphasize the height of the CCTV."
          }
        ]
      },
      {
        "scene_index": 20,
        "flow_summary": "카메라는 인물들 어깨 너머로 모니터를 향해 다가가다 화면 속 어두운 CCTV 영상으로 컷인합니다. 이후 초조해하는 수리영의 얼굴을 비추고, 혜수의 요청에 고개를 끄덕이는 보안 직원의 모습으로 시선을 옮깁니다.",
        "flow_stages": [
          {
            "stage_index": 1,
            "stage_label": "approach",
            "camera_position": "Behind the characters, looking over their shoulders towards the monitor",
            "camera_motion": "dolly_in",
            "visual_focus": "The monitor screen and the backs of the characters",
            "transition_to_next": "cut to a tight close-up of the monitor screen"
          },
          {
            "stage_index": 2,
            "stage_label": "close_observation",
            "camera_position": "Very close to the monitor screen, filling the frame",
            "camera_motion": "static",
            "visual_focus": "The dark, unclear CCTV footage on the monitor",
            "transition_to_next": "cut to Suriyoung's face reacting to the footage"
          },
          {
            "stage_index": 3,
            "stage_label": "reaction",
            "camera_position": "Frontal medium close-up of Suriyoung, standing behind the others",
            "camera_motion": "handheld",
            "visual_focus": "Suriyoung's anxious facial expression",
            "transition_to_next": "pan to the security guard as he responds to Haesu's request"
          },
          {
            "stage_index": 4,
            "stage_label": "resolution",
            "camera_position": "Medium shot of the security guard from Haesu's perspective",
            "camera_motion": "static",
            "visual_focus": "The security guard nodding in agreement",
            "transition_to_next": ""
          }
        ],
        "shot_assignments": [
          {
            "shot_index": 3,
            "stage_index": 2,
            "flow_position": "mid",
            "inherits": [
              "camera_position",
              "camera_motion",
              "visual_focus"
            ],
            "deviation_note": ""
          },
          {
            "shot_index": 5,
            "stage_index": 3,
            "flow_position": "mid",
            "inherits": [
              "camera_position",
              "camera_motion",
              "visual_focus"
            ],
            "deviation_note": "Focus is tightly on Suriyoung's furrowed brow and bitten lip."
          },
          {
            "shot_index": 7,
            "stage_index": 4,
            "flow_position": "end",
            "inherits": [
              "camera_position",
              "camera_motion",
              "visual_focus"
            ],
            "deviation_note": ""
          }
        ]
      },
      {
        "scene_index": 21,
        "flow_summary": "경찰서의 분주한 분위기 속에서 홀로 남겨진 수리영에게 카메라가 다가가며 책상 위의 끔찍한 사진들과 그녀의 경악을 포착하고, 이후 모니터의 알림음과 함께 화면 속 바다 좌표로 시선을 강하게 밀고 들어갑니다.",
        "flow_stages": [
          {
            "stage_index": 1,
            "stage_label": "establishing",
            "camera_position": "Wide angle near the entrance, eye level",
            "camera_motion": "track",
            "visual_focus": "Hye-su, Su-ri-young, and Detective Kim interacting in the busy office",
            "transition_to_next": "Cut to a closer angle on Su-ri-young as the detectives rush out"
          },
          {
            "stage_index": 2,
            "stage_label": "close_observation",
            "camera_position": "Medium close-up near Hye-su's desk, starting with a high angle on the desk and ending at eye level",
            "camera_motion": "tilt",
            "visual_focus": "Scattered gruesome murder photos on the desk, then Su-ri-young's shocked facial expression",
            "transition_to_next": "Quick pan following Su-ri-young's sudden attention to the notification sound from the adjacent desk"
          },
          {
            "stage_index": 3,
            "stage_label": "reveal",
            "camera_position": "Over-the-shoulder of Su-ri-young at Kim's desk, pushing in extremely close to the monitor",
            "camera_motion": "dolly_in",
            "visual_focus": "The monitor screen revealing the red coordinates on the sea map",
            "transition_to_next": "Pull back to a medium shot as she frantically writes down the coordinates"
          },
          {
            "stage_index": 4,
            "stage_label": "withdraw",
            "camera_position": "Medium shot, tracking backward towards the office door",
            "camera_motion": "dolly_out",
            "visual_focus": "Su-ri-young putting the memo in her pocket and hurrying out of the office",
            "transition_to_next": ""
          }
        ],
        "shot_assignments": [
          {
            "shot_index": 6,
            "stage_index": 2,
            "flow_position": "start",
            "inherits": [
              "camera_position",
              "camera_motion",
              "visual_focus"
            ],
            "deviation_note": "Extreme close-up on the gruesome details of the photos"
          },
          {
            "shot_index": 7,
            "stage_index": 2,
            "flow_position": "end",
            "inherits": [
              "camera_position",
              "camera_motion",
              "visual_focus"
            ],
            "deviation_note": "Focus shifts entirely to her wide, shocked eyes"
          },
          {
            "shot_index": 11,
            "stage_index": 3,
            "flow_position": "end",
            "inherits": [
              "camera_position",
              "camera_motion",
              "visual_focus"
            ],
            "deviation_note": "Macro shot filling the frame with the red coordinates and the sea map"
          }
        ]
      },
      {
        "scene_index": 22,
        "flow_summary": "경찰서 앞 주차된 자전거에 올라타 출발을 준비하는 수리영을 정지된 프레임으로 포착한 뒤, 페달을 밟고 멀어지는 그녀의 움직임을 따라 카메라가 함께 이동합니다.",
        "flow_stages": [
          {
            "stage_index": 1,
            "stage_label": "preparation",
            "camera_position": "Medium distance, slightly low angle, positioned in front and slightly to the side of the bicycle, capturing Suri-young with the police station in the background",
            "camera_motion": "static",
            "visual_focus": "Suri-young sitting on the bicycle saddle, feet on pedals, showing her paused posture and expression",
            "transition_to_next": "Camera begins to track alongside her as she pushes off the pedal"
          },
          {
            "stage_index": 2,
            "stage_label": "tracking_action",
            "camera_position": "Moving parallel to the bicycle, maintaining a medium shot distance",
            "camera_motion": "track",
            "visual_focus": "Suri-young riding the bicycle away from the police station",
            "transition_to_next": ""
          }
        ],
        "shot_assignments": [
          {
            "shot_index": 1,
            "stage_index": 1,
            "flow_position": "mid",
            "inherits": [
              "camera_position",
              "camera_motion",
              "visual_focus"
            ],
            "deviation_note": "Focus heavily on the physical tension in her posture right before she pushes the pedal"
          }
        ]
      },
      {
        "scene_index": 23,
        "flow_summary": "카메라는 수리영의 어깨 너머로 모니터 속 해상 지도를 응시하다가, 인쇄된 지도를 챙겨 백팩에 밀어넣는 그녀의 손길을 따라 시선을 아래로 이동합니다.",
        "flow_stages": [
          {
            "stage_index": 1,
            "stage_label": "close_observation",
            "camera_position": "Over-the-shoulder close-up, positioned right behind Suri-young",
            "camera_motion": "dolly_in",
            "visual_focus": "The monitor screen displaying the nautical map",
            "transition_to_next": "Cut to the printer output tray on the desk"
          },
          {
            "stage_index": 2,
            "stage_label": "reveal",
            "camera_position": "Low angle close-up near the printer on the desk",
            "camera_motion": "static",
            "visual_focus": "The printed map coming out of the printer",
            "transition_to_next": "Tilt down following Suri-young's hands as she grabs the map"
          },
          {
            "stage_index": 3,
            "stage_label": "action_detail",
            "camera_position": "High angle close-up looking down at the desk and the open backpack",
            "camera_motion": "tilt",
            "visual_focus": "Suri-young's hands folding the map and pushing it into the backpack",
            "transition_to_next": ""
          }
        ],
        "shot_assignments": [
          {
            "shot_index": 2,
            "stage_index": 1,
            "flow_position": "end",
            "inherits": [
              "camera_position",
              "visual_focus"
            ],
            "deviation_note": "The dolly-in motion stops to hold a completely static frame on the monitor screen."
          },
          {
            "shot_index": 4,
            "stage_index": 3,
            "flow_position": "end",
            "inherits": [
              "camera_position",
              "visual_focus"
            ],
            "deviation_note": "The tilt motion stops as the hand pushes the map inside, holding the final static moment on the backpack opening."
          }
        ]
      },
      {
        "scene_index": 24,
        "flow_summary": "카메라는 번개 치는 먹구름 낀 하늘에서 시작해 아래로 틸트다운하며, 세찬 비를 뚫고 해안도로를 달리는 수리영의 곁을 트래킹하다가 점차 그녀의 결연한 얼굴로 다가갑니다.",
        "flow_stages": [
          {
            "stage_index": 1,
            "stage_label": "establishing",
            "camera_position": "Low angle pointing towards the dark, stormy sky",
            "camera_motion": "tilt",
            "visual_focus": "Dark clouds and lightning flashes",
            "transition_to_next": "Tilt down to reveal the coastal road and the heavy rain"
          },
          {
            "stage_index": 2,
            "stage_label": "tracking",
            "camera_position": "Moving alongside the coastal road, medium distance from the subject",
            "camera_motion": "track",
            "visual_focus": "Suriyoung riding the bicycle through the heavy rain",
            "transition_to_next": "Dolly in closer to the subject's upper body and face"
          },
          {
            "stage_index": 3,
            "stage_label": "close_observation",
            "camera_position": "Close to Suriyoung's face, moving synchronously with the bicycle",
            "camera_motion": "dolly_in",
            "visual_focus": "Suriyoung's determined, wet face",
            "transition_to_next": ""
          }
        ],
        "shot_assignments": [
          {
            "shot_index": 2,
            "stage_index": 2,
            "flow_position": "mid",
            "inherits": [
              "camera_position",
              "camera_motion",
              "visual_focus"
            ],
            "deviation_note": "Focus slightly shifts to emphasize her tight grip on the handlebars and her hunched posture against the rain."
          }
        ]
      },
      {
        "scene_index": 25,
        "flow_summary": "분석 실패: LLM returned empty response for step=scene_camera_flow, model=gemini-pro",
        "flow_stages": [],
        "shot_assignments": []
      },
      {
        "scene_index": 26,
        "flow_summary": "안개 낀 포구에서 수리영을 비추던 카메라는 바다에서 나타나는 배를 향해 다가가며, 이후 배 앞에서의 대화 씬에서는 수리영의 간절한 표정을 향해 서서히 밀고 들어갑니다.",
        "flow_stages": [
          {
            "stage_index": 1,
            "stage_label": "establishing",
            "camera_position": "Wide shot from the pier, looking towards the foggy sea and the rocks",
            "camera_motion": "pan",
            "visual_focus": "Suriyoung sitting on the rocks in the thick fog",
            "transition_to_next": "Cut to the sea to reveal the approaching boat"
          },
          {
            "stage_index": 2,
            "stage_label": "reveal",
            "camera_position": "Medium shot facing the sea, slightly elevated",
            "camera_motion": "dolly_in",
            "visual_focus": "The bow of the small boat emerging from the fog",
            "transition_to_next": "Cut to an over-the-shoulder angle on the pier"
          },
          {
            "stage_index": 3,
            "stage_label": "close_observation",
            "camera_position": "Over-the-shoulder from Inwoo's perspective, looking down at Suriyoung",
            "camera_motion": "dolly_in",
            "visual_focus": "Suriyoung looking up at Inwoo with an earnest expression",
            "transition_to_next": "Cut to a side angle for the final voice message"
          },
          {
            "stage_index": 4,
            "stage_label": "withdraw",
            "camera_position": "Medium shot from the side, framing Suriyoung against the sea",
            "camera_motion": "static",
            "visual_focus": "Suriyoung holding her smartphone and leaving a voice message",
            "transition_to_next": ""
          }
        ],
        "shot_assignments": [
          {
            "shot_index": 5,
            "stage_index": 2,
            "flow_position": "mid",
            "inherits": [
              "camera_position",
              "camera_motion",
              "visual_focus"
            ],
            "deviation_note": ""
          },
          {
            "shot_index": 8,
            "stage_index": 3,
            "flow_position": "start",
            "inherits": [
              "camera_position",
              "camera_motion",
              "visual_focus"
            ],
            "deviation_note": "Slightly wider framing to show the spatial relationship between Suriyoung and the boat."
          },
          {
            "shot_index": 10,
            "stage_index": 3,
            "flow_position": "end",
            "inherits": [
              "camera_position",
              "camera_motion",
              "visual_focus"
            ],
            "deviation_note": "Closer framing on Suriyoung's face and clasped hands to emphasize her desperation as the camera pushes in."
          }
        ]
      },
      {
        "scene_index": 27,
        "flow_summary": "카메라는 스마트폰을 든 혜수의 충격받은 얼굴을 가까이서 포착한 뒤, 그녀가 고개를 돌릴 때 시선을 따라가며 불안감을 담아내고, 마지막으로 어스름이 깔린 텅 빈 옥탑방 전체를 비추며 쓸쓸하게 물러납니다.",
        "flow_stages": [
          {
            "stage_index": 1,
            "stage_label": "close_observation",
            "camera_position": "Close-up at eye level, positioned slightly to the side of Hye-su's face",
            "camera_motion": "static",
            "visual_focus": "Hye-su's wide eyes and the smartphone held tightly to her ear",
            "transition_to_next": "cut to a slightly wider angle as she turns her head to address Detective Kim"
          },
          {
            "stage_index": 2,
            "stage_label": "reaction",
            "camera_position": "Medium close-up, positioned to capture Hye-su's upper body and her spatial relation to the off-screen Detective Kim",
            "camera_motion": "pan",
            "visual_focus": "Hye-su's anxious facial expression as she looks back",
            "transition_to_next": "cut to a wide shot of the room after the dialogue ends and the wind blows"
          },
          {
            "stage_index": 3,
            "stage_label": "withdraw",
            "camera_position": "Wide shot from the corner of the living room, capturing the entire space including the front door",
            "camera_motion": "dolly_out",
            "visual_focus": "The empty, messy living room bathed in dim evening light",
            "transition_to_next": ""
          }
        ],
        "shot_assignments": [
          {
            "shot_index": 2,
            "stage_index": 1,
            "flow_position": "mid",
            "inherits": [
              "camera_position",
              "camera_motion",
              "visual_focus"
            ],
            "deviation_note": ""
          },
          {
            "shot_index": 3,
            "stage_index": 2,
            "flow_position": "start",
            "inherits": [
              "camera_position",
              "camera_motion",
              "visual_focus"
            ],
            "deviation_note": "Captures the exact moment she turns her head, emphasizing the sudden shift in her emotion."
          },
          {
            "shot_index": 6,
            "stage_index": 3,
            "flow_position": "end",
            "inherits": [
              "camera_position",
              "camera_motion",
              "visual_focus"
            ],
            "deviation_note": "Camera settles on the static wide view at the end of the dolly-out to emphasize the desolate atmosphere."
          }
        ]
      },
      {
        "scene_index": 28,
        "flow_summary": "카메라는 갑판 위 인우의 찌푸린 얼굴에서 시작해 수리영이 내민 사진의 결정적 단서로 시선을 옮긴 뒤, 조타실로 뛰어드는 인우를 거칠게 따라가며 두 사람의 물리적 충돌을 포착합니다.",
        "flow_stages": [
          {
            "stage_index": 1,
            "stage_label": "close_observation",
            "camera_position": "Close to In-woo's face on the deck, slightly high angle looking down towards the map",
            "camera_motion": "dolly_in",
            "visual_focus": "In-woo's frowning face and his reaction to the map",
            "transition_to_next": "Cut to a tight insert shot of the photograph as Su-ri-young presents the new evidence."
          },
          {
            "stage_index": 2,
            "stage_label": "reveal",
            "camera_position": "Macro distance, positioned between Su-ri-young and In-woo, focusing on the photograph",
            "camera_motion": "static",
            "visual_focus": "Su-ri-young's finger pointing at the specific text on the old photograph",
            "transition_to_next": "Fast pan and track following In-woo as he abruptly stands up and rushes into the wheelhouse."
          },
          {
            "stage_index": 3,
            "stage_label": "conflict",
            "camera_position": "Inside the cramped wheelhouse, close to the steering wheel, slightly low angle",
            "camera_motion": "handheld",
            "visual_focus": "The physical struggle, specifically Su-ri-young's hands tightly gripping In-woo's arm",
            "transition_to_next": ""
          }
        ],
        "shot_assignments": [
          {
            "shot_index": 4,
            "stage_index": 1,
            "flow_position": "mid",
            "inherits": [
              "camera_position",
              "camera_motion",
              "visual_focus"
            ],
            "deviation_note": ""
          },
          {
            "shot_index": 8,
            "stage_index": 2,
            "flow_position": "mid",
            "inherits": [
              "camera_position",
              "camera_motion",
              "visual_focus"
            ],
            "deviation_note": ""
          },
          {
            "shot_index": 15,
            "stage_index": 3,
            "flow_position": "end",
            "inherits": [
              "camera_position",
              "camera_motion",
              "visual_focus"
            ],
            "deviation_note": "Focus intensely on the tension in Su-ri-young's hands gripping In-woo's arm to emphasize the sudden halt of his action."
          }
        ]
      },
      {
        "scene_index": 29,
        "flow_summary": "카메라는 수리영이 가리키는 사진으로 다가가며 시작해 인우의 충격받은 얼굴로 틸트업하고, 이후 시점을 넓혀 의식을 잃고 인우의 어깨에 쓰러지는 수리영의 모습을 포착합니다.",
        "flow_stages": [
          {
            "stage_index": 1,
            "stage_label": "close_observation",
            "camera_position": "Over the shoulder of In-woo, looking down closely at the photograph in Su-ri-young's hands",
            "camera_motion": "dolly_in",
            "visual_focus": "Su-ri-young's finger pointing at the young girl in the photograph",
            "transition_to_next": "Tilt up to In-woo's face"
          },
          {
            "stage_index": 2,
            "stage_label": "reaction",
            "camera_position": "Close-up level with In-woo's face",
            "camera_motion": "static",
            "visual_focus": "In-woo's pale and stiffened face",
            "transition_to_next": "Rack focus to the background, then cut to a wider side angle of both characters"
          },
          {
            "stage_index": 3,
            "stage_label": "withdraw",
            "camera_position": "Medium close-up from a side angle capturing both Su-ri-young and In-woo",
            "camera_motion": "tilt",
            "visual_focus": "Su-ri-young losing consciousness and her head resting on In-woo's shoulder",
            "transition_to_next": ""
          }
        ],
        "shot_assignments": [
          {
            "shot_index": 4,
            "stage_index": 1,
            "flow_position": "end",
            "inherits": [
              "camera_position",
              "camera_motion",
              "visual_focus"
            ],
            "deviation_note": "Extreme close-up focusing tightly on the finger and the girl's face in the photo."
          },
          {
            "shot_index": 7,
            "stage_index": 2,
            "flow_position": "start",
            "inherits": [
              "camera_position",
              "camera_motion",
              "visual_focus"
            ],
            "deviation_note": ""
          },
          {
            "shot_index": 13,
            "stage_index": 3,
            "flow_position": "end",
            "inherits": [
              "camera_position",
              "camera_motion",
              "visual_focus"
            ],
            "deviation_note": "Camera stops tilting as her head touches his shoulder, freezing the moment."
          }
        ]
      },
      {
        "scene_index": 30,
        "flow_summary": "카메라는 황금빛 노을이 비치는 바다에서 거대한 안개 벽으로 시선을 옮긴 뒤, 안개 속으로 서서히 진입하는 작은 배의 뱃머리를 따라갑니다.",
        "flow_stages": [
          {
            "stage_index": 1,
            "stage_label": "establishing",
            "camera_position": "High angle wide shot over the ocean surface",
            "camera_motion": "pan",
            "visual_focus": "Golden sunset reflection on the water",
            "transition_to_next": "Pan reveals the massive fog bank"
          },
          {
            "stage_index": 2,
            "stage_label": "reveal",
            "camera_position": "Wide shot at water level facing the fog",
            "camera_motion": "static",
            "visual_focus": "Dark gray fog bank rising like a massive wall",
            "transition_to_next": "Cut to a closer tracking shot of the boat"
          },
          {
            "stage_index": 3,
            "stage_label": "approach",
            "camera_position": "Medium shot tracking alongside the small fishing boat",
            "camera_motion": "track",
            "visual_focus": "The bow of the boat making contact with the fog wall",
            "transition_to_next": ""
          }
        ],
        "shot_assignments": [
          {
            "shot_index": 2,
            "stage_index": 2,
            "flow_position": "mid",
            "inherits": [
              "camera_position",
              "camera_motion",
              "visual_focus"
            ],
            "deviation_note": ""
          },
          {
            "shot_index": 3,
            "stage_index": 3,
            "flow_position": "mid",
            "inherits": [
              "camera_position",
              "camera_motion",
              "visual_focus"
            ],
            "deviation_note": ""
          }
        ]
      }
    ]
  },
  "step_id": "scene_camera_flow",
  "run_id": "73d7a6e7-0ece-4aea-9365-734ef2a5df2c",
  "resolved_model": "gemini-pro",
  "updated_at": "2026-04-27T09:05:16.964406+00:00"
}