Skip to content

[FE] 바텐더 노트 리뷰 작성 캠페인 콘텐츠 참여 이벤트 연동 #545

Closed

Description

@bottlenote-app

배경

Product FE main의 /bartender-note 리뷰 작성은 ReviewApi.registerReview로 저장하고 GA4 write_review_start·write_review_complete를 전송한다. 반면 서버 캠페인 콘텐츠 이벤트(VIEW·START·FINISH·RESULT)는 이 리뷰 흐름에서 호출하지 않아, 캠페인 콘텐츠 지표에서 리뷰 진입·작성·완료를 따로 측정할 수 없다.

FE 요청 범위

  • 바텐더 노트의 리뷰 작성 흐름 전용 캠페인 콘텐츠 코드를 사용한다. 후보 코드는 bartender-note-review이며, 최종 코드는 기존 등록값을 확인해 확정한다. whiskey-mbti·whiskey-tarot나 바텐더 추천 흐름의 bartender-note-type-d와 섞지 않는다.
  • Product의 기존 POST /api/v1/campaign-contents/{code}/events 계약과 공용 이벤트 전송 패턴을 재사용하고, FE 코드 타입/호출 지점을 확장한다.
  • 이벤트 시점을 리뷰 흐름 기준으로 연결한다: VIEW는 리뷰 작성 흐름 진입, START는 실제 리뷰 작성 시작(모드 선택), FINISH는 리뷰 저장 성공, RESULT는 로그인 상태에서 리뷰 작성 완료 화면 노출. 추천 결과 조회나 위스키 상세 이동은 리뷰의 RESULT로 세지 않는다.
  • FINISH는 리뷰가 저장됐다면 별점 저장만 실패해도 전송하며, 이미지 업로드·리뷰 저장 실패에는 전송하지 않는다. RESULT는 완료 화면을 실제로 보여준 경우에만 전송한다.
  • 진행 중 로그인 이동·복귀, 새로고침, 뒤로 가기, 중복 클릭 시 같은 진행의 START·FINISH·RESULT를 중복 전송하지 않는다. 새 리뷰 작성 진행은 별도로 측정한다.
  • 기존 리뷰 작성·로그인·GA4 이벤트는 유지한다. 측정 요청 실패는 리뷰 저장과 화면 이동을 막지 않는다.

선행 확인

  • 관리자 캠페인 콘텐츠에 해당 리뷰 전용 코드가 등록·활성화됐는지 확인해야 한다. 미등록/비활성 코드는 서버가 거절하므로, FE 코드만 배포해도 지표가 쌓이지 않는다. 이 이슈는 관리자 데이터 생성이나 백엔드 API 변경을 승인하지 않는다.
  • VIEW를 어느 진입점에서 한 번 보낼지와 RESULT의 화면 노출 기준을 FE 흐름 테스트에서 명확히 고정한다. 리뷰 작성은 이미 로그인이 필요하므로 기존 로그인 정책을 변경하지 않는다.

완료 기준

  • 리뷰 전용 코드가 MBTI·타로·바텐더 추천 코드와 구별되어 전송되고, 등록·활성화 선행 조건을 확인한다.
  • 리뷰 흐름의 네 이벤트가 위 시점에 전송되며, 저장 실패/별점만 실패/로그인 복귀/재방문/새 진행의 경계를 테스트한다.
  • 이벤트 API 실패가 리뷰 저장·완료 UI를 막지 않고 기존 GA4 추적도 유지한다.
  • 개발 환경에서 이벤트 수집 응답과 관리자 지표의 리뷰 전용 코드 구분을 확인한다. 응답 성공과 실제 지표 반영은 구분해 기록한다.

관련 이슈

제외

백엔드 스키마·API 변경, 추천/큐레이션 흐름 측정 변경, 기존 MBTI·타로 이벤트 변경, 관리자 데이터 등록 및 캠페인 발송/푸시.

Activity

  1. self-assigned this
    on Nov 3, 2026
  2. hyejj19 commented on Nov 3, 2026

    @hyejj19

    bottle-note/bottle-note-frontend#926 로 구현해 main에 머지했습니다. 본문 기준에서 범위와 이벤트 시점이 바뀌어, 실제 구현 기준을 정리합니다.

    범위

    리뷰만이 아니라 바텐더 노트의 세 흐름을 각각 캠페인으로 측정합니다. 코드는 개발 어드민에 등록·활성화된 값입니다.

    • 추천: bartender-note-recommend (본문의 bartender-note-type-d 대신)
    • 큐레이션: bartender-note-curation
    • 리뷰: bartender-note-review

    이벤트 시점

    추천 큐레이션 리뷰
    VIEW 바텐더 노트 첫 화면 진입 시 세 코드 모두 ← ←
    START 첫 화면 위스키 추천해 주세요 첫 화면 큐레이션으로 추천해 주세요 첫 화면 바텐더님과 함께 리뷰를 쓸게요 (로그인 안내 전)
    FINISH 첫 잔 노출 (후보가 없으면 빈 결과 도달) 큐레이션 술 목록 노출 미리보기 도달
    RESULT 로그인 상태에서 다른 후보 목록 노출 로그인 상태에서 술 상세 노출 리뷰 등록 성공 (별점 저장만 실패해도 보냄)

    리뷰 기준이 본문과 달라진 부분은 다음과 같습니다.

    • START: 리뷰 방식 선택 → 첫 화면 메뉴 선택
    • FINISH: 저장 성공 → 미리보기 도달
    • RESULT: 완료 화면 노출 → 등록 성공

    집계 규칙

    • 첫 화면에서 고른 흐름을 진행 중인 시도로 보고, FINISH·RESULT는 그 흐름의 것만 시도당 한 번 보냅니다.
      • 추천·큐레이션 상세에서 이어 쓴 리뷰는 리뷰 캠페인에 넣지 않습니다.
      • 리뷰할 술을 고를 때 거치는 상세는 추천·큐레이션 결과로 세지 않습니다.
      • 찜한 술 보기는 측정하지 않습니다.
    • 다른 술도 기록할게요와, 빈 큐레이션·빈 찜 목록에서 추천으로 넘어가는 경우는 새 시도로 셉니다.
    • 새로고침, 로그인 왕복, 술 상세 페이지 복귀, 처음 화면 복귀는 VIEW와 같은 시도의 이벤트를 다시 보내지 않습니다.

    함께 바뀐 것

    • 추천 다른 후보 보기 로그인 전환: 첫 잔은 누구나 보고, 비로그인 사용자가 다른 술도 보여주세요를 누르면 로그인 안내를 띄웁니다. 로그인 후에는 후보 목록을 바로 보여 줍니다. 추천 RESULT가 이 목록 노출입니다.
    • 캠페인 전송 큐: 방문자 쿠키가 코드와 상관없이 하나라서, 전송 큐를 코드별에서 전체 하나로 합쳤습니다. 첫 방문에 세 VIEW가 동시에 나가도 같은 방문자로 집계됩니다. MBTI·타로는 한 페이지에서 코드 하나만 써서 동작이 같습니다.

    확인 결과

    • 로컬(개발 API)에서 세 흐름 모두 이벤트 수집 응답 200을 확인했습니다. 비로그인 상태에서는 RESULT가 나가지 않는 것도 확인했습니다.
    • 개발 어드민 캠페인 상세에서는 세 코드 모두 조회·시작·완료 방문자가 올랐습니다.
    • 결과 조회 회원은 0입니다. 집계가 root_admins 회원을 제외하는데, 검증 계정이 이에 해당하는 것으로 보입니다. 일반 계정으로 반영되는지는 아직 확인하지 못했습니다.
  3. bottlenote-app commented on Nov 3, 2026

    @bottlenote-app
    Author

    실제 구현 기준 요약

    구현: bottle-note/bottle-note-frontend#926. 혜정님 구현 완료 확인 및 PR·useBartenderCampaign 변경 기준입니다.

    • 범위 확대: 리뷰만이 아니라 추천·큐레이션·리뷰를 각각 bartender-note-recommend / bartender-note-curation / bartender-note-review로 측정합니다. 기존 bartender-note-type-d 대신 추천 전용 코드를 사용합니다.
    • VIEW: 바텐더 노트 신규 진입 시 세 코드 모두 전송합니다.
    흐름 START FINISH RESULT
    추천 첫 화면 추천 메뉴 선택 첫 잔 또는 빈 결과 노출 로그인 상태에서 다른 후보 목록 노출
    큐레이션 첫 화면 큐레이션 메뉴 선택 큐레이션 술 목록 노출 로그인 상태 술 상세 노출
    리뷰 첫 화면 리뷰 메뉴 선택·로그인 안내 전 미리보기 도달 리뷰 등록 성공·별점 저장만 실패해도 전송

    리뷰는 원안의 모드 선택 → 저장 성공 → 완료 화면이 아니라 메뉴 선택 → 미리보기 → 등록 성공으로 구현됐습니다.

    • 선택한 흐름의 FINISH·RESULT만 시도당 한 번 전송하고 스냅샷으로 보존합니다. 새로고침·로그인 왕복·상세 복귀는 중복 집계하지 않습니다. 추천·큐레이션에서 이어 쓴 리뷰와 찜 목록은 리뷰 캠페인에 넣지 않습니다.
    • 다른 술 기록 또는 빈 목록에서 추천으로 전환하면 새 시도입니다. 세 VIEW의 방문자 쿠키가 갈라지지 않도록 공용 전송 큐를 직렬화했습니다.
    • 첫 잔은 공개하고 다른 후보 목록은 로그인 후 열도록 변경했습니다.

    PR 작성자 검증에서는 이벤트 200 및 개발 어드민 조회·시작·완료 집계를 확인했습니다. 일반 계정의 RESULT 지표 반영은 별도 미확인입니다(검증 계정 root_admins 제외 가능성). 이번 정리는 댓글만 추가하며 본문·상태·종결은 변경하지 않습니다.

  4. added
    자동화: 종결후보AI가 종결 가능하다고 판단한 사람 확인 대상 이슈
    and removed on Nov 7, 2026
  5. bottlenote-app commented on Nov 7, 2026

    @bottlenote-app
    Author

    릴리즈 PR: bottle-note/bottle-note-frontend#936

    릴리즈 포함 기준으로 운영배포를 반영했으며, 사용자 요청에 따라 종결합니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions