Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -45,10 +45,12 @@ import com.eatssu.android.presentation.cafeteria.review.list.component.OthersRev
import com.eatssu.android.presentation.cafeteria.review.list.component.ReviewItem
import com.eatssu.android.presentation.cafeteria.review.list.component.ReviewProgressBar
import com.eatssu.android.presentation.cafeteria.review.report.ReportActivity
import com.eatssu.android.presentation.util.TrackScreenViewEvent
import com.eatssu.android.presentation.util.showToast
import com.eatssu.common.UiEvent
import com.eatssu.common.UiState
import com.eatssu.common.enums.MenuType
import com.eatssu.common.enums.ScreenId
import com.eatssu.design_system.component.DelayedLoadingIndicator
import com.eatssu.design_system.component.EatSsuButton
import com.eatssu.design_system.component.EatSsuTopBar
Expand All @@ -75,6 +77,9 @@ fun ReviewListScreen(
viewModel.getReview(menuType, id)
}

// Screen View 로깅
TrackScreenViewEvent(ScreenId.REVIEW_V2_VIEW)

val reviewListState by viewModel.uiState.collectAsStateWithLifecycle()
val uiEvent by viewModel.uiEvent.collectAsStateWithLifecycle(initialValue = null)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,11 @@ import androidx.hilt.navigation.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.eatssu.android.domain.model.Review
import com.eatssu.android.presentation.cafeteria.review.write.component.MenuLikeButtonItem
import com.eatssu.android.presentation.util.TrackScreenViewEvent
import com.eatssu.android.presentation.util.showToast
import com.eatssu.common.UiEvent
import com.eatssu.common.UiState
import com.eatssu.common.enums.ScreenId
import com.eatssu.design_system.component.CloseTopBar
import com.eatssu.design_system.component.EatSsuButton
import com.eatssu.design_system.component.RatingBarMedium
Expand All @@ -54,6 +56,9 @@ fun ModifyReviewScreen(
val context = LocalContext.current
val ui by viewModel.uiState.collectAsStateWithLifecycle()

// Screen View 로깅
TrackScreenViewEvent(ScreenId.REVIEW_V2_MODIFY)

// 최초 1회 초기화
LaunchedEffect(Unit) {
viewModel.init(initialRating, initialContent, menuLikeInfoList)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,13 @@ import coil.compose.AsyncImage
import com.eatssu.android.R
import com.eatssu.android.domain.model.MenuMini
import com.eatssu.android.presentation.cafeteria.review.write.component.MenuLikeButtonItem
import com.eatssu.android.presentation.util.TrackScreenViewEvent
import com.eatssu.android.presentation.util.showToast
import com.eatssu.common.EventLogger
import com.eatssu.common.UiEvent
import com.eatssu.common.UiState
import com.eatssu.common.enums.MenuType
import com.eatssu.common.enums.ScreenId
import com.eatssu.design_system.component.CloseTopBar
import com.eatssu.design_system.component.EatSsuButton
import com.eatssu.design_system.component.RatingBarMedium
Expand Down Expand Up @@ -71,6 +74,9 @@ fun WriteReviewScreen(
ActivityResultContracts.GetContent()
) { uri: Uri? -> viewModel.setSelectedImage(uri) }

// Screen View 로깅
TrackScreenViewEvent(ScreenId.REVIEW_V2_WRITE)

// 처음 진입 시, 메뉴 불러오기: 기본찬(김치, 단무지, 밥) 등을 거르기 위함
LaunchedEffect(menuType, id, menuName) {
viewModel.loadMenuList(menuType, id, menuName)
Expand Down Expand Up @@ -106,7 +112,10 @@ fun WriteReviewScreen(
onToggleLike = viewModel::toggleLike,
onImageSelect = { galleryLauncher.launch("image/*") },
onImageDelete = { viewModel.setSelectedImage(null) },
onSubmit = { viewModel.postReview(menuType, id, context) }
onSubmit = {
EventLogger.writeReview()
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

EventLogger.writeReview() 함수는 v1 리뷰 작성 시작 이벤트(WRITE_REVIEW_V1)를 로깅하도록 구현되어 있습니다. 현재 v2 리뷰 기능에 대한 로깅을 추가하고 있으므로, v1 이벤트를 사용하는 것은 적절하지 않습니다. EventLoggerwriteReviewV2와 같은 새로운 함수를 추가하여 v2에 맞는 이벤트를 로깅하거나, 이 이벤트의 목적을 다시 확인해주세요. EventLogger.ktwriteReview 함수에 //todo v2로 바꿀시 v1 제거 라는 주석이 있는 것으로 보아 수정이 필요한 부분으로 보입니다.

viewModel.postReview(menuType, id, context)
}
)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import com.eatssu.android.domain.model.MenuMini
import com.eatssu.android.domain.usecase.menu.GetValidMenusOfMealUseCase
import com.eatssu.android.domain.usecase.review.GetImageUrlUseCase
import com.eatssu.android.domain.usecase.review.WriteReviewUseCase
import com.eatssu.common.EventLogger
import com.eatssu.common.UiEvent
import com.eatssu.common.UiState
import com.eatssu.common.enums.MenuType
Expand Down Expand Up @@ -149,6 +150,13 @@ class WriteReviewViewModel @Inject constructor(
return@launch
}

// 리뷰 작성 완료 로깅
EventLogger.completeReviewV2(
rating = editing.rating.toLong(),
likes = editing.likedMenuIds.size.toLong(),
photoAttached = editing.selectedImageUri != null
)

_uiEvent.emit(UiEvent.ShowToast("리뷰가 작성되었습니다."))
_uiEvent.emit(UiEvent.NavigateBack)
}
Expand Down
25 changes: 11 additions & 14 deletions core/common/src/main/java/com/eatssu/common/enums/ScreenId.kt
Original file line number Diff line number Diff line change
Expand Up @@ -9,20 +9,17 @@ enum class ScreenId(val value: String) {
HOME_MAIN("MNU_001000"),
HOME_INFO("MNU_002000"),

REVIEW_V1_VIEW("REV_001000_V1"),
REVIEW_V1_WRITE("REV_001001_V1"),
REVIEW_V1_WRITE_RATE("REV_001002_V1"),
REVIEW_V1_LOGIN_REQUIRED("REV_001003_V1"), // TODO: 필수 로그인이라 사용하지 않음
REVIEW_V1_MODIFY("REV_001004_V1"), // TODO: Figma에 존재하지 않음

REVIEW_V2_1("REV_001000_V2"),
REVIEW_V3_1("REV_001000_V3"),
REVIEW_V2_3("REV_001001"),
REVIEW_V2_4("REV_003001"),
REVIEW_V2_5("REV_001003"),

// V1과 V2가 같음
REVIEW_REPORT("REV_002000"),
REVIEW_V2_VIEW("REV_001001_V2"),
REVIEW_V3_VIEW("REV_001000_V3"), // todo 사진 모아보기가 있는 v3 버전

REVIEW_V2_WRITE("REV_001001_V2"),
Comment on lines +12 to +15
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

critical

REVIEW_V2_VIEWREVIEW_V2_WRITE의 화면 ID 값이 "REV_001001_V2"로 동일합니다. 화면 구분을 위해 각 화면 ID는 고유한 값을 가져야 합니다. 이 값이 중복되면 애널리틱스에서 두 화면을 구분할 수 없어 데이터 정확성에 심각한 문제가 발생합니다. REVIEW_V2_VIEW의 값을 다른 고유한 값으로 수정하는 것을 제안합니다. 예를 들어, 삭제된 REVIEW_V2_1의 값이었던 "REV_001000_V2"를 사용할 수 있습니다.

Suggested change
REVIEW_V2_VIEW("REV_001001_V2"),
REVIEW_V3_VIEW("REV_001000_V3"), // todo 사진 모아보기가 있는 v3 버전
REVIEW_V2_WRITE("REV_001001_V2"),
REVIEW_V2_VIEW("REV_001000_V2"),
REVIEW_V3_VIEW("REV_001000_V3"), // todo 사진 모아보기가 있는 v3 버전
REVIEW_V2_WRITE("REV_001001_V2"),


REVIEW_V2_MODIFY("REV_001002_V2"),

REVIEW_V3_PHOTO("REV_003000"), //todo 포토리뷰
REVIEW_V3_PHOTO_DETAIL("REV_003001"), //todo 포토리뷰

REVIEW_REPORT("REV_002000"), // V1과 V2가 같음

MAP_MAIN("MAP_001000"),
MAP_DETAIL("MAP_001001"),
Expand Down