project

실습 시나리오 생성 및 이벤트 기반 미션 기능 설계

octo54 2025. 3. 26. 11:16
반응형

실습 시나리오 생성 및 이벤트 기반 미션 기능 설계

퍼널 분석을 통해 사용자 흐름과 전환 경로를 파악했다면, 이제는 학습자(또는 실습자)가 직접 퍼널을 설계하고 목표 이벤트를 기반으로 실습 미션을 수행할 수 있는 기능을 제공해야 합니다. 이번 글에서는 사용자가 직접 구성할 수 있는 실습 시나리오 생성 기능과 그에 따른 이벤트 미션 트래킹 로직을 구현하는 방법을 소개합니다.


1. 실습 시나리오란?

정의

  • 실습자가 특정 목표(Event)를 설정하고, 사용자 여정(Flow)을 설계하여 실시간으로 트래킹 결과를 확인할 수 있도록 구성된 가상 실험 공간입니다.

예시 시나리오

시나리오 이름 목표 이벤트 흐름 구성

첫 방문 → CTA 클릭 → 회원가입 완료 FORM_SUBMIT PAGE_VIEW → CTA_CLICK → FORM_SUBMIT
제품 검색 → 상세 페이지 진입 → 장바구니 담기 ADD_TO_CART SEARCH_KEYWORD → PRODUCT_VIEW → ADD_TO_CART

2. 시나리오 생성 UI 구성

2-1. 실습 미션 생성 폼 예시 (React + Zustand)

반응형
<form onSubmit={createMission}>
  <input name="title" placeholder="미션 이름" />
  <select name="events" multiple>
    <option value="PAGE_VIEW">PAGE_VIEW</option>
    <option value="CTA_CLICK">CTA_CLICK</option>
    <option value="FORM_SUBMIT">FORM_SUBMIT</option>
  </select>
  <button type="submit">미션 생성</button>
</form>

2-2. Zustand 또는 Context를 활용한 시나리오 상태 관리

const useMissionStore = create((set) => ({
  missions: [],
  addMission: (mission) => set((state) => ({ missions: [...state.missions, mission] }))
}));

3. 이벤트 기준 미션 상태 체크 로직

3-1. 이벤트 발생 감지 함수

window.addEventListener("EVENT_CAPTURE", (e) => {
  const { name } = e.detail;
  if (activeMission.includes(name)) {
    completeEvent(name);
  }
});

3-2. 미션 완료 조건 판별

  • 사용자가 정의한 이벤트 순서를 localStorage 또는 DB에 기록
  • 최종 목표 이벤트까지 모두 도달하면 “완료” 상태 처리

4. 미션 UI 컴포넌트 예시

<MissionProgress title="회원가입 퍼널">
  <MissionStep name="PAGE_VIEW" status="done" />
  <MissionStep name="CTA_CLICK" status="done" />
  <MissionStep name="FORM_SUBMIT" status="pending" />
</MissionProgress>

5. 실습자에게 제공할 기능 요약

기능 설명

미션 생성 퍼널 흐름을 정의하고 이름 지정
실시간 진행 상태 보기 각 이벤트가 언제 발생했는지 시각적으로 확인
완료 조건 트래킹 최종 목표에 도달한 시간 및 전환율 기록
결과 내보내기 분석 리포트 형태로 결과 요약 (PDF, CSV 등)

다음 글에서는 실습 사이트의 데이터를 기반으로 자동 리포트 생성, 미션별 성과 요약, 분석 결과 저장 및 공유 기능 구현을 설명합니다.
→ 8편. 자동 리포트 생성 및 분석 결과 저장 기능 설계