Experiment Audit Report

Fetched: 2026-05-13T08:34:16.752772+00:00 · Scanned: 2026-05-13T08:35:00.180387+00:00

Repos:

Apptimize

KeyStatusStartedCode hitsConfig
LoyaltyPg_0319 showing_variant 2026-05-08T02:05:35.162Z from setting kkday-ios-member: 3
show hits
  • kkday-ios-member · Solution/KKNetworking/KKNetworking/B2C/Entities/Loyalty/LoyaltyMemberInfoDTO.swift:21 · // TODO: joey [Loyalty] 待LoyaltyPg_0319 A/B 移除後刪掉
  • kkday-ios-member · "Solution/kkday-ios-member/kkday-ios-member/App/\346\234\203\345\223\241\344\270\255\345\277\203 MemberCenter/Loyalty/KKLoyaltyKit/Models/Models.swift":11 · // TODO: joey [Loyalty] 待LoyaltyPg_0319 A/B 移除後刪掉
  • kkday-ios-member · "Solution/kkday-ios-member/kkday-ios-member/App/\346\234\203\345\223\241\344\270\255\345\277\203 MemberCenter/Loyalty/KKLoyaltyKit/Providers/MemberInfoProvider.swift":12 · // TODO: joey [Loyalty] 待LoyaltyPg_0319 A/B 移除後刪掉
raw
{}
HomePageLocationEXP running 2026-04-29T06:08:20.102Z from setting kkday-android-member: 32 · kkday-ios-member: 3
show hits
  • kkday-android-member · app/src/main/java/com/kkday/member/view/homeV2/presentation/HomeScreen.kt:86 · import com.kkday.abtesting.experiment.cases.HomePageLocationEXP
  • kkday-android-member · app/src/main/java/com/kkday/member/view/homeV2/presentation/HomeScreen.kt:175 · val group by remember { derivedStateOf { if (homePageLocationEXP == HomePageLocationEXP.control) "control" else "experiment" } }
  • kkday-android-member · app/src/main/java/com/kkday/member/view/homeV2/presentation/HomeScreen.kt:179 · && uIState.value.homePageLocationEXP == HomePageLocationEXP.experiment
  • kkday-android-member · app/src/main/java/com/kkday/member/view/homeV2/presentation/HomeUiState.kt:3 · import com.kkday.abtesting.experiment.cases.HomePageLocationEXP
  • kkday-android-member · app/src/main/java/com/kkday/member/view/homeV2/presentation/HomeUiState.kt:40 · val homePageLocationEXP: HomePageLocationEXP = HomePageLocationEXP.control,
  • kkday-android-member · app/src/main/java/com/kkday/member/view/homeV2/presentation/HomeViewModelV2.kt:13 · import com.kkday.abtesting.experiment.cases.HomePageLocationEXP
  • kkday-android-member · app/src/main/java/com/kkday/member/view/homeV2/presentation/HomeViewModelV2.kt:198 · val uxExp = fetchHomePageLocationEXP()
  • kkday-android-member · app/src/main/java/com/kkday/member/view/homeV2/presentation/HomeViewModelV2.kt:215 · private suspend fun fetchHomePageLocationEXP(): String {
  • kkday-android-member · app/src/main/java/com/kkday/member/view/homeV2/presentation/HomeViewModelV2.kt:217 · val disposable = KKAbTestingService.getHomePageLocationEXP()
  • kkday-android-member · app/src/main/java/com/kkday/member/view/homeV2/presentation/HomeViewModelV2.kt:231 · HomePageLocationEXP.experiment -> "1"
  • kkday-android-member · app/src/main/java/com/kkday/member/view/homeV2/presentation/HomeViewModelV2.kt:596 · exp: HomePageLocationEXP,
  • kkday-android-member · app/src/main/java/com/kkday/member/view/homeV2/presentation/HomeViewModelV2.kt:599 · exp == HomePageLocationEXP.experiment
  • kkday-android-member · app/src/main/java/com/kkday/member/view/homeV2/presentation/components/DestinationFilterItem.kt:25 · import com.kkday.abtesting.experiment.cases.HomePageLocationEXP
  • kkday-android-member · app/src/main/java/com/kkday/member/view/homeV2/presentation/components/DestinationFilterItem.kt:39 · homePageLocationEXP: HomePageLocationEXP,
  • kkday-android-member · app/src/main/java/com/kkday/member/view/homeV2/presentation/components/DestinationFilterItem.kt:67 · homePageLocationEXP: HomePageLocationEXP,
  • kkday-android-member · app/src/main/java/com/kkday/member/view/homeV2/presentation/components/DestinationFilterItem.kt:158 · homePageLocationEXP: HomePageLocationEXP,
  • kkday-android-member · app/src/main/java/com/kkday/member/view/homeV2/presentation/components/DestinationFilterItem.kt:160 · if (homePageLocationEXP != HomePageLocationEXP.experiment) return null
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/Constants.kt:7 · import com.kkday.abtesting.experiment.cases.HomePageLocationEXP
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/Constants.kt:45 · HomePageLocationEXP::class.simpleName to HomePageLocationEXP.values()
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/KKAbTestingService.kt:10 · import com.kkday.abtesting.experiment.cases.HomePageLocationEXP
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/KKAbTestingService.kt:161 · override fun getHomePageLocationEXP(): Observable {
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/KKAbTestingService.kt:163 · apptimize::getHomePageLocationEXP,
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/KKAbTestingService.kt:164 · { value -> HomePageLocationEXP.valueOf(value) },
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/KKAbTestingService.kt:165 · HomePageLocationEXP.control
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/experiment/cases/HomePageLocationEXP.kt:3 · enum class HomePageLocationEXP {
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/AbTestingService.kt:8 · import com.kkday.abtesting.experiment.cases.HomePageLocationEXP
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/AbTestingService.kt:41 · fun getHomePageLocationEXP(): Observable
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/apptimize/ApptimizeServiceImpl.kt:10 · import com.kkday.abtesting.experiment.cases.HomePageLocationEXP
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/apptimize/ApptimizeServiceImpl.kt:169 · override fun getHomePageLocationEXP(): Observable {
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/apptimize/ApptimizeServiceImpl.kt:171 · experimentName = HomePageLocationEXP::class.simpleName ?: "",
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/apptimize/ApptimizeServiceImpl.kt:172 · variants = HomePageLocationEXP.values(),
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/apptimize/ApptimizeServiceImpl.kt:173 · defaultVariant = HomePageLocationEXP.control
  • kkday-ios-member · Solution/kkday-ios-member/kkday-ios-member/AppDelegate/AppDelegate+Feature.swift:185 · with: .HomePageLocationEXP,
  • kkday-ios-member · Solution/kkday-ios-member/kkday-ios-member/Manager/ABTesting/ABVariantProviders/HomePageLocationABVariantProvider.swift:12 · private static let dispatcher = SwitchableABTestingService(with: .HomePageLocationEXP)
  • kkday-ios-member · Solution/kkday-ios-member/kkday-ios-member/Manager/ABTesting/KKABTestingService.swift:88 · case HomePageLocationEXP
raw
{}
TourTicketLandingEXP running 2026-04-16T08:17:39.369Z from setting kkday-android-member: 21 · kkday-ios-member: 3
show hits
  • kkday-android-member · app/src/main/java/com/kkday/member/reducer/app/AppReducer.kt:943 · KKAbTestingService.getTourTicketLandingEXP()
  • kkday-android-member · app/src/main/java/com/kkday/member/view/homeV2/presentation/HomeViewModelV2.kt:21 · import com.kkday.abtesting.experiment.cases.TourTicketLandingEXP
  • kkday-android-member · app/src/main/java/com/kkday/member/view/homeV2/presentation/HomeViewModelV2.kt:337 · useCategorySettingV4 = appSharedData.tourTicketLandingEXP == TourTicketLandingEXP.experiment
  • kkday-android-member · app/src/main/java/com/kkday/member/view/homeV2/useCase/GetThemeCategoriesUseCase.kt:18 · // useCategorySettingV4: 由 TourTicketLandingEXP 實驗控制
  • kkday-android-member · libs/base/src/main/java/com/kkday/library/common/app/AppSharedData.kt:7 · import com.kkday.abtesting.experiment.cases.TourTicketLandingEXP
  • kkday-android-member · libs/base/src/main/java/com/kkday/library/common/app/AppSharedData.kt:49 · var tourTicketLandingEXP = TourTicketLandingEXP.control
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/Constants.kt:14 · import com.kkday.abtesting.experiment.cases.TourTicketLandingEXP
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/Constants.kt:42 · TourTicketLandingEXP::class.simpleName to TourTicketLandingEXP.values()
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/KKAbTestingService.kt:16 · import com.kkday.abtesting.experiment.cases.TourTicketLandingEXP
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/KKAbTestingService.kt:153 · override fun getTourTicketLandingEXP(): Observable {
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/KKAbTestingService.kt:155 · apptimize::getTourTicketLandingEXP,
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/KKAbTestingService.kt:156 · { value -> TourTicketLandingEXP.valueOf(value) },
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/KKAbTestingService.kt:157 · TourTicketLandingEXP.control
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/experiment/cases/TourTicketLandingEXP.kt:3 · enum class TourTicketLandingEXP {
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/AbTestingService.kt:14 · import com.kkday.abtesting.experiment.cases.TourTicketLandingEXP
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/AbTestingService.kt:40 · fun getTourTicketLandingEXP(): Observable
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/apptimize/ApptimizeServiceImpl.kt:16 · import com.kkday.abtesting.experiment.cases.TourTicketLandingEXP
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/apptimize/ApptimizeServiceImpl.kt:161 · override fun getTourTicketLandingEXP(): Observable {
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/apptimize/ApptimizeServiceImpl.kt:163 · experimentName = TourTicketLandingEXP::class.java.simpleName ?: "",
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/apptimize/ApptimizeServiceImpl.kt:164 · variants = TourTicketLandingEXP.values(),
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/apptimize/ApptimizeServiceImpl.kt:165 · defaultVariant = TourTicketLandingEXP.control
  • kkday-ios-member · Solution/kkday-ios-member/kkday-ios-member/App/TTDLanding/ABTest/TourTicketLandingABVariantProvider.swift:8 · with: .TourTicketLandingEXP
  • kkday-ios-member · Solution/kkday-ios-member/kkday-ios-member/AppDelegate/AppDelegate+Feature.swift:169 · with: .TourTicketLandingEXP,
  • kkday-ios-member · Solution/kkday-ios-member/kkday-ios-member/Manager/ABTesting/KKABTestingService.swift:85 · case TourTicketLandingEXP
raw
{}
HomePageLocationMapEXP running 2026-04-22T05:59:42.916Z from setting 0 hits
raw
{}
ProdListingExhibitionEXP showing_variant 2026-04-20T10:31:07.888Z from setting kkday-android-member: 39 · kkday-ios-member: 1
show hits
  • kkday-android-member · libs/feature/search_page/src/main/java/com/kkday/search_page/presentation/category/CategorySearchPageActivity.kt:7 · import com.kkday.abtesting.experiment.cases.ProdListingExhibitionEXP
  • kkday-android-member · libs/feature/search_page/src/main/java/com/kkday/search_page/presentation/category/CategorySearchPageActivity.kt:108 · if (categorySearchVM.prodListingExhibition.value == ProdListingExhibitionEXP.Experiment
  • kkday-android-member · libs/feature/search_page/src/main/java/com/kkday/search_page/presentation/category/compose/main/CategoryPage.kt:36 · import com.kkday.abtesting.experiment.cases.ProdListingExhibitionEXP
  • kkday-android-member · libs/feature/search_page/src/main/java/com/kkday/search_page/presentation/category/compose/main/CategoryPage.kt:96 · val isExperiment = prodListingExhibition.value == ProdListingExhibitionEXP.Experiment
  • kkday-android-member · libs/feature/search_page/src/main/java/com/kkday/search_page/presentation/category/compose/search/CategorySearchPage.kt:30 · import com.kkday.abtesting.experiment.cases.ProdListingExhibitionEXP
  • kkday-android-member · libs/feature/search_page/src/main/java/com/kkday/search_page/presentation/category/compose/search/CategorySearchPage.kt:50 · prodListingExhibitionEXP: State,
  • kkday-android-member · libs/feature/search_page/src/main/java/com/kkday/search_page/presentation/category/compose/search/CategorySearchPage.kt:201 · prodListingExhibitionEXP = mutableStateOf(ProdListingExhibitionEXP.Control),
  • kkday-android-member · libs/feature/search_page/src/main/java/com/kkday/search_page/presentation/category/compose/search/CategorySearchRelayPage.kt:20 · import com.kkday.abtesting.experiment.cases.ProdListingExhibitionEXP
  • kkday-android-member · libs/feature/search_page/src/main/java/com/kkday/search_page/presentation/category/compose/search/CategorySearchRelayPage.kt:41 · prodListingExhibitionEXP: ProdListingExhibitionEXP = ProdListingExhibitionEXP.Control,
  • kkday-android-member · libs/feature/search_page/src/main/java/com/kkday/search_page/presentation/category/compose/search/CategorySearchRelayPage.kt:55 · if (prodListingExhibitionEXP == ProdListingExhibitionEXP.Control || (prodListingExhibitionEXP == ProdListingExhibitionEXP.Experiment && categoryCode !in setOf(
  • kkday-android-member · libs/feature/search_page/src/main/java/com/kkday/search_page/presentation/category/compose/search/CategorySearchRelayPage.kt:177 · prodListingExhibitionEXP = ProdListingExhibitionEXP.Control,
  • kkday-android-member · libs/feature/search_page/src/main/java/com/kkday/search_page/presentation/category/viewmodel/CategoryPageViewModel.kt:12 · import com.kkday.abtesting.experiment.cases.ProdListingExhibitionEXP
  • kkday-android-member · libs/feature/search_page/src/main/java/com/kkday/search_page/presentation/category/viewmodel/CategoryPageViewModel.kt:138 · private var _prodListingExhibitionEXP = MutableStateFlow(
  • kkday-android-member · libs/feature/search_page/src/main/java/com/kkday/search_page/presentation/category/viewmodel/CategoryPageViewModel.kt:139 · ProdListingExhibitionEXP.Control
  • kkday-android-member · libs/feature/search_page/src/main/java/com/kkday/search_page/presentation/category/viewmodel/CategoryPageViewModel.kt:172 · uxExp = if (it == ProdListingExhibitionEXP.Control) 0 else 1
  • kkday-android-member · libs/feature/search_page/src/main/java/com/kkday/search_page/presentation/category/viewmodel/CategorySearchViewModel.kt:11 · import com.kkday.abtesting.experiment.cases.ProdListingExhibitionEXP
  • kkday-android-member · libs/feature/search_page/src/main/java/com/kkday/search_page/presentation/category/viewmodel/CategorySearchViewModel.kt:108 · private var _prodListingExhibitionEXP = MutableStateFlow(ProdListingExhibitionEXP.Control)
  • kkday-android-member · libs/feature/search_page/src/main/java/com/kkday/search_page/presentation/search/compose/SearchResultPage.kt:81 · import com.kkday.abtesting.experiment.cases.ProdListingExhibitionEXP
  • kkday-android-member · libs/feature/search_page/src/main/java/com/kkday/search_page/presentation/search/compose/SearchResultPage.kt:448 · prodListingExhibitionEXP = if (isExperimental) ProdListingExhibitionEXP.Experiment else ProdListingExhibitionEXP.Control,
  • kkday-android-member · libs/feature/search_page/src/main/java/com/kkday/search_page/presentation/search/compose/SearchResultPage.kt:955 · val prodListingExhibitionEXP: ProdListingExhibitionEXP = ProdListingExhibitionEXP.Control,
  • kkday-android-member · libs/feature/search_page/src/main/java/com/kkday/search_page/presentation/search/compose/SearchResultPage.kt:1261 · if (params.prodListingExhibitionEXP == ProdListingExhibitionEXP.Control) {
  • kkday-android-member · libs/feature/search_page/src/main/java/com/kkday/search_page/presentation/search/viewmodel/SearchResultViewModel.kt:19 · import com.kkday.abtesting.experiment.cases.ProdListingExhibitionEXP
  • kkday-android-member · libs/feature/search_page/src/main/java/com/kkday/search_page/presentation/search/viewmodel/SearchResultViewModel.kt:105 · private var _prodListingExhibitionEXP = MutableStateFlow(
  • kkday-android-member · libs/feature/search_page/src/main/java/com/kkday/search_page/presentation/search/viewmodel/SearchResultViewModel.kt:106 · ProdListingExhibitionEXP.Control
  • kkday-android-member · libs/feature/search_page/src/main/java/com/kkday/search_page/presentation/search/viewmodel/SearchResultViewModel.kt:112 · isForceExperimentSearch || prodListingExhibition.value == ProdListingExhibitionEXP.Experiment
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/Constants.kt:10 · import com.kkday.abtesting.experiment.cases.ProdListingExhibitionEXP
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/Constants.kt:40 · ProdListingExhibitionEXP::class.simpleName to ProdListingExhibitionEXP.values()
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/KKAbTestingService.kt:12 · import com.kkday.abtesting.experiment.cases.ProdListingExhibitionEXP
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/KKAbTestingService.kt:145 · override fun getSearchResultTest(): Observable {
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/KKAbTestingService.kt:148 · { value -> ProdListingExhibitionEXP.valueOf(value) },
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/KKAbTestingService.kt:149 · ProdListingExhibitionEXP.Control
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/experiment/cases/ProdListingExhibitionEXP.kt:3 · enum class ProdListingExhibitionEXP {
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/AbTestingService.kt:10 · import com.kkday.abtesting.experiment.cases.ProdListingExhibitionEXP
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/AbTestingService.kt:39 · fun getSearchResultTest(): Observable
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/apptimize/ApptimizeServiceImpl.kt:12 · import com.kkday.abtesting.experiment.cases.ProdListingExhibitionEXP
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/apptimize/ApptimizeServiceImpl.kt:153 · override fun getSearchResultTest(): Observable {
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/apptimize/ApptimizeServiceImpl.kt:155 · experimentName = ProdListingExhibitionEXP::class.java.simpleName ?: "",
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/apptimize/ApptimizeServiceImpl.kt:156 · variants = ProdListingExhibitionEXP.values(),
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/apptimize/ApptimizeServiceImpl.kt:157 · defaultVariant = ProdListingExhibitionEXP.Control
  • kkday-ios-member · Solution/kkday-ios-member/kkday-ios-member/Manager/ABTesting/KKABTestingService.swift:86 · case ProdlistExp = "ProdListingExhibitionEXP"
raw
{}
BookingFormPgRevamp running 2026-04-14T12:22:12.947Z from setting kkday-android-member: 35 · kkday-ios-member: 3
show hits
  • kkday-android-member · app/src/main/java/com/kkday/member/model/AppState.java:233 · .setIsBookingFormPgRevampExperimental(false)
  • kkday-android-member · app/src/main/java/com/kkday/member/model/AppState.java:524 · public abstract Boolean isBookingFormPgRevampExperimental();
  • kkday-android-member · app/src/main/java/com/kkday/member/model/AppState.java:1036 · public AppState setIsBookingFormPgRevampExperimental(Boolean isExperimental) {
  • kkday-android-member · app/src/main/java/com/kkday/member/model/AppState.java:1037 · return toBuilder().setIsBookingFormPgRevampExperimental(isExperimental).build();
  • kkday-android-member · app/src/main/java/com/kkday/member/model/AppState.java:1658 · public abstract Builder setIsBookingFormPgRevampExperimental(Boolean isExperimental);
  • kkday-android-member · app/src/main/java/com/kkday/member/reducer/app/AppReducer.kt:138 · getBookingFormPgRevampABTest()
  • kkday-android-member · app/src/main/java/com/kkday/member/reducer/app/AppReducer.kt:949 · private fun getBookingFormPgRevampABTest() {
  • kkday-android-member · app/src/main/java/com/kkday/member/reducer/app/AppReducer.kt:951 · KKAbTestingService.getBookingFormPgRevamp()
  • kkday-android-member · app/src/main/java/com/kkday/member/reducer/product/OrderFormFillingReducer.kt:5 · import com.kkday.abtesting.experiment.cases.BookingFormPgRevamp
  • kkday-android-member · app/src/main/java/com/kkday/member/reducer/product/OrderFormFillingReducer.kt:553 · val isBookingFormExperimental = appSharedData.bookingFormPgRevamp == BookingFormPgRevamp.Experimental
  • kkday-android-member · app/src/main/java/com/kkday/member/reducer/product/OrderFormFillingReducer.kt:560 · .setIsBookingFormPgRevampExperimental(isBookingFormExperimental),
  • kkday-android-member · app/src/main/java/com/kkday/member/reducer/product/OrderFormFillingReducer.kt:591 · .setIsBookingFormPgRevampExperimental(isBookingFormExperimental)
  • kkday-android-member · app/src/main/java/com/kkday/member/reducer/product/OrderFormFillingReducer.kt:635 · val isBookingFormExperimental = appSharedData.bookingFormPgRevamp == BookingFormPgRevamp.Experimental
  • kkday-android-member · app/src/main/java/com/kkday/member/reducer/product/OrderFormFillingReducer.kt:642 · .setIsBookingFormPgRevampExperimental(isBookingFormExperimental),
  • kkday-android-member · app/src/main/java/com/kkday/member/reducer/product/OrderFormFillingReducer.kt:686 · .setIsBookingFormPgRevampExperimental(isBookingFormExperimental)
  • kkday-android-member · app/src/main/java/com/kkday/member/view/product/form/OrderFormFillingViewModel.kt:8 · import com.kkday.abtesting.experiment.cases.BookingFormPgRevamp
  • kkday-android-member · app/src/main/java/com/kkday/member/view/product/form/OrderFormFillingViewModel.kt:206 · if (appSharedData.bookingFormPgRevamp == BookingFormPgRevamp.Control) return false
  • kkday-android-member · app/src/main/java/com/kkday/member/view/product/form/OrderFormFillingViewModel.kt:456 · val experimental = if (appState.isBookingFormPgRevampExperimental) "BookingFormPgRevampExperimental" else "BookingFormPgRevampControl"
  • kkday-android-member · libs/base/src/main/java/com/kkday/library/common/app/AppSharedData.kt:5 · import com.kkday.abtesting.experiment.cases.BookingFormPgRevamp
  • kkday-android-member · libs/base/src/main/java/com/kkday/library/common/app/AppSharedData.kt:47 · var bookingFormPgRevamp = BookingFormPgRevamp.Control
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/Constants.kt:17 · import com.kkday.abtesting.experiment.cases.BookingFormPgRevamp
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/Constants.kt:47 · BookingFormPgRevamp::class.simpleName to BookingFormPgRevamp.values()
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/KKAbTestingService.kt:7 · import com.kkday.abtesting.experiment.cases.BookingFormPgRevamp
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/KKAbTestingService.kt:137 · override fun getBookingFormPgRevamp(): Observable {
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/KKAbTestingService.kt:139 · apptimize::getBookingFormPgRevamp,
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/KKAbTestingService.kt:140 · { value -> BookingFormPgRevamp.valueOf(value) },
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/KKAbTestingService.kt:141 · BookingFormPgRevamp.Control
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/experiment/cases/BookingFormPgRevamp.kt:3 · enum class BookingFormPgRevamp {
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/AbTestingService.kt:17 · import com.kkday.abtesting.experiment.cases.BookingFormPgRevamp
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/AbTestingService.kt:38 · fun getBookingFormPgRevamp(): Observable
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/apptimize/ApptimizeServiceImpl.kt:7 · import com.kkday.abtesting.experiment.cases.BookingFormPgRevamp
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/apptimize/ApptimizeServiceImpl.kt:145 · override fun getBookingFormPgRevamp(): Observable {
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/apptimize/ApptimizeServiceImpl.kt:147 · experimentName = BookingFormPgRevamp::class.simpleName ?: "",
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/apptimize/ApptimizeServiceImpl.kt:148 · variants = BookingFormPgRevamp.values(),
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/apptimize/ApptimizeServiceImpl.kt:149 · defaultVariant = BookingFormPgRevamp.Control
  • kkday-ios-member · "Solution/kkday-ios-member/kkday-ios-member/App/\345\241\253\345\257\253\350\241\214\347\250\213\350\263\207\346\226\231 ProductFillSchedule/ABProvider/ProductFillInstantPurchaseVersionTestProvider.swift":23 · return "BookingFormPgRevampControl"
  • kkday-ios-member · "Solution/kkday-ios-member/kkday-ios-member/App/\345\241\253\345\257\253\350\241\214\347\250\213\350\263\207\346\226\231 ProductFillSchedule/ABProvider/ProductFillInstantPurchaseVersionTestProvider.swift":25 · return "BookingFormPgRevampExperimental"
  • kkday-ios-member · Solution/kkday-ios-member/kkday-ios-member/Manager/ABTesting/KKABTestingService.swift:83 · case ProductFillInstantPurchaseVersionTest = "BookingFormPgRevamp"
raw
{}
BookingDetailFormPgRevamp showing_variant 2026-04-09T06:42:01.805Z from setting kkday-android-member: 43 · kkday-ios-member: 1
show hits
  • kkday-android-member · app/src/main/java/com/kkday/member/reducer/cart/CartActions.kt:3 · import com.kkday.abtesting.experiment.cases.BookingDetailFormPgRevamp
  • kkday-android-member · app/src/main/java/com/kkday/member/reducer/cart/CartActions.kt:191 · fun getBookingDetailFormPgRevamp(res: Response, abTest: BookingDetailFormPgRevamp,): Action
  • kkday-android-member · app/src/main/java/com/kkday/member/reducer/cart/CartReducer.kt:7 · import com.kkday.abtesting.experiment.cases.BookingDetailFormPgRevamp
  • kkday-android-member · app/src/main/java/com/kkday/member/reducer/cart/CartReducer.kt:168 · val isExperimental = KKAbTestingService.getBookingDetailFormPgRevamp()
  • kkday-android-member · app/src/main/java/com/kkday/member/reducer/cart/CartReducer.kt:169 · .blockingFirst() == BookingDetailFormPgRevamp.Experimental && appSharedData.androidNewScheduleOpen
  • kkday-android-member · app/src/main/java/com/kkday/member/reducer/cart/CartReducer.kt:207 · KKAbTestingService.getBookingDetailFormPgRevamp()
  • kkday-android-member · app/src/main/java/com/kkday/member/reducer/cart/CartReducer.kt:209 · cartActions.getBookingDetailFormPgRevamp(
  • kkday-android-member · app/src/main/java/com/kkday/member/reducer/cart/CartReducer.kt:227 · fun getBookingDetailFormPgRevamp(
  • kkday-android-member · app/src/main/java/com/kkday/member/reducer/cart/CartReducer.kt:228 · state: AppState, response: Response, abTest: BookingDetailFormPgRevamp,
  • kkday-android-member · app/src/main/java/com/kkday/member/reducer/cart/CartReducer.kt:230 · val isExperimental = abTest == BookingDetailFormPgRevamp.Experimental
  • kkday-android-member · app/src/main/java/com/kkday/member/reducer/cart/CartReducer.kt:2520 · val experimental = if (appState.isTravelerExperimental) "BookingDetailFormPgRevampExperimental" else "BookingDetailFormPgRevampControl"
  • kkday-android-member · app/src/main/java/com/kkday/member/reducer/product/OrderFormFillingActions.kt:17 · import com.kkday.abtesting.experiment.cases.BookingDetailFormPgRevamp
  • kkday-android-member · app/src/main/java/com/kkday/member/reducer/product/OrderFormFillingActions.kt:78 · abTest: BookingDetailFormPgRevamp
  • kkday-android-member · app/src/main/java/com/kkday/member/reducer/product/OrderFormFillingActions.kt:85 · bookingDetailAbTest: BookingDetailFormPgRevamp
  • kkday-android-member · app/src/main/java/com/kkday/member/reducer/product/OrderFormFillingActions.kt:173 · fun getBookingDetailFormPgRevamp(res: Response, abTest: BookingDetailFormPgRevamp): Action
  • kkday-android-member · app/src/main/java/com/kkday/member/reducer/product/OrderFormFillingReducer.kt:4 · import com.kkday.abtesting.experiment.cases.BookingDetailFormPgRevamp
  • kkday-android-member · app/src/main/java/com/kkday/member/reducer/product/OrderFormFillingReducer.kt:219 · KKAbTestingService.getBookingDetailFormPgRevamp()
  • kkday-android-member · app/src/main/java/com/kkday/member/reducer/product/OrderFormFillingReducer.kt:247 · KKAbTestingService.getBookingDetailFormPgRevamp()
  • kkday-android-member · app/src/main/java/com/kkday/member/reducer/product/OrderFormFillingReducer.kt:276 · fun getBookingDetailFormPgRevamp(
  • kkday-android-member · app/src/main/java/com/kkday/member/reducer/product/OrderFormFillingReducer.kt:279 · abTest: BookingDetailFormPgRevamp,
  • kkday-android-member · app/src/main/java/com/kkday/member/reducer/product/OrderFormFillingReducer.kt:281 · val isExperimental = abTest == BookingDetailFormPgRevamp.Experimental
  • kkday-android-member · app/src/main/java/com/kkday/member/reducer/product/OrderFormFillingReducer.kt:543 · abTest: BookingDetailFormPgRevamp
  • kkday-android-member · app/src/main/java/com/kkday/member/reducer/product/OrderFormFillingReducer.kt:552 · val isExperimental = abTest == BookingDetailFormPgRevamp.Experimental
  • kkday-android-member · app/src/main/java/com/kkday/member/reducer/product/OrderFormFillingReducer.kt:609 · .map { orderFormActions.getBookingDetailFormPgRevamp(it, abTest) }
  • kkday-android-member · app/src/main/java/com/kkday/member/reducer/product/OrderFormFillingReducer.kt:624 · abTest: BookingDetailFormPgRevamp
  • kkday-android-member · app/src/main/java/com/kkday/member/reducer/product/OrderFormFillingReducer.kt:634 · val isExperimental = abTest == BookingDetailFormPgRevamp.Experimental
  • kkday-android-member · app/src/main/java/com/kkday/member/reducer/product/OrderFormFillingReducer.kt:704 · .map { orderFormActions.getBookingDetailFormPgRevamp(it, abTest) }
  • kkday-android-member · app/src/main/java/com/kkday/member/view/product/form/schedule/common/util/ScheduleFormTravelerUtil.kt:95 · fun travelerExperimentStr(isExperimental: Boolean) = if (isExperimental) "BookingDetailFormPgRevampExperimental" else "BookingDetailFormPgRevampControl"
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/Constants.kt:4 · import com.kkday.abtesting.experiment.cases.BookingDetailFormPgRevamp
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/Constants.kt:36 · BookingDetailFormPgRevamp::class.simpleName to BookingDetailFormPgRevamp.values()
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/KKAbTestingService.kt:6 · import com.kkday.abtesting.experiment.cases.BookingDetailFormPgRevamp
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/KKAbTestingService.kt:121 · override fun getBookingDetailFormPgRevamp(): Observable {
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/KKAbTestingService.kt:123 · apptimize::getBookingDetailFormPgRevamp,
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/KKAbTestingService.kt:124 · { value -> BookingDetailFormPgRevamp.valueOf(value) },
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/KKAbTestingService.kt:125 · BookingDetailFormPgRevamp.Control
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/experiment/cases/BookingDetailFormPgRevamp.kt:3 · enum class BookingDetailFormPgRevamp {
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/AbTestingService.kt:5 · import com.kkday.abtesting.experiment.cases.BookingDetailFormPgRevamp
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/AbTestingService.kt:36 · fun getBookingDetailFormPgRevamp(): Observable
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/apptimize/ApptimizeServiceImpl.kt:6 · import com.kkday.abtesting.experiment.cases.BookingDetailFormPgRevamp
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/apptimize/ApptimizeServiceImpl.kt:129 · override fun getBookingDetailFormPgRevamp(): Observable {
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/apptimize/ApptimizeServiceImpl.kt:131 · experimentName = BookingDetailFormPgRevamp::class.simpleName ?: "",
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/apptimize/ApptimizeServiceImpl.kt:132 · variants = BookingDetailFormPgRevamp.values(),
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/apptimize/ApptimizeServiceImpl.kt:133 · defaultVariant = BookingDetailFormPgRevamp.Control
  • kkday-ios-member · Solution/kkday-ios-member/kkday-ios-member/Manager/ABTesting/KKABTestingService.swift:82 · case ProductFillScheduleVersionTest = "BookingDetailFormPgRevamp"
raw
{}
destinationFilterTest showing_variant 2026-04-07T03:04:02.360Z from setting kkday-android-member: 55 · kkday-ios-member: 36
show hits
  • kkday-android-member · libs/feature/search_page/src/main/java/com/kkday/search_page/presentation/category/CategoryPageActivity.kt:27 · import com.kkday.abtesting.experiment.cases.destinationFilterTest
  • kkday-android-member · libs/feature/search_page/src/main/java/com/kkday/search_page/presentation/category/CategoryPageActivity.kt:192 · if (destinationFilter == destinationFilterTest.experiment) {
  • kkday-android-member · libs/feature/search_page/src/main/java/com/kkday/search_page/presentation/category/CategorySearchResultPageActivity.kt:24 · import com.kkday.abtesting.experiment.cases.destinationFilterTest
  • kkday-android-member · libs/feature/search_page/src/main/java/com/kkday/search_page/presentation/category/CategorySearchResultPageActivity.kt:165 · if (destinationFilter == destinationFilterTest.experiment) {
  • kkday-android-member · libs/feature/search_page/src/main/java/com/kkday/search_page/presentation/category/viewmodel/CategoryPageViewModel.kt:13 · import com.kkday.abtesting.experiment.cases.destinationFilterTest
  • kkday-android-member · libs/feature/search_page/src/main/java/com/kkday/search_page/presentation/category/viewmodel/CategoryPageViewModel.kt:133 · private var _abTestDestinationFilterTest = MutableStateFlow(
  • kkday-android-member · libs/feature/search_page/src/main/java/com/kkday/search_page/presentation/category/viewmodel/CategoryPageViewModel.kt:134 · destinationFilterTest.experiment
  • kkday-android-member · libs/feature/search_page/src/main/java/com/kkday/search_page/presentation/category/viewmodel/CategoryPageViewModel.kt:166 · _abTestDestinationFilterTest.value = destinationFilterTest.control
  • kkday-android-member · libs/feature/search_page/src/main/java/com/kkday/search_page/presentation/category/viewmodel/CategorySearchResultViewModel.kt:19 · import com.kkday.abtesting.experiment.cases.destinationFilterTest
  • kkday-android-member · libs/feature/search_page/src/main/java/com/kkday/search_page/presentation/category/viewmodel/CategorySearchResultViewModel.kt:154 · private var _abTestDestinationFilterTest = MutableStateFlow(
  • kkday-android-member · libs/feature/search_page/src/main/java/com/kkday/search_page/presentation/category/viewmodel/CategorySearchResultViewModel.kt:155 · destinationFilterTest.experiment
  • kkday-android-member · libs/feature/search_page/src/main/java/com/kkday/search_page/presentation/search/SearchFilterEventTracker.kt:3 · import com.kkday.abtesting.experiment.cases.destinationFilterTest
  • kkday-android-member · libs/feature/search_page/src/main/java/com/kkday/search_page/presentation/search/SearchFilterEventTracker.kt:22 · abTestDestinationFilter: destinationFilterTest
  • kkday-android-member · libs/feature/search_page/src/main/java/com/kkday/search_page/presentation/search/SearchFilterEventTracker.kt:43 · abTestDestinationFilter: destinationFilterTest
  • kkday-android-member · libs/feature/search_page/src/main/java/com/kkday/search_page/presentation/search/SearchFilterEventTracker.kt:67 · abTestDestinationFilter: destinationFilterTest
  • kkday-android-member · libs/feature/search_page/src/main/java/com/kkday/search_page/presentation/search/SearchFilterEventTracker.kt:90 · abTestDestinationFilter: destinationFilterTest
  • kkday-android-member · libs/feature/search_page/src/main/java/com/kkday/search_page/presentation/search/compose/BottomSheetSearchDestinationViewNew.kt:66 · import com.kkday.abtesting.experiment.cases.destinationFilterTest
  • kkday-android-member · libs/feature/search_page/src/main/java/com/kkday/search_page/presentation/search/compose/BottomSheetSearchDestinationViewNew.kt:117 · abTestDestinationFilter = destinationFilterTest.experiment
  • kkday-android-member · libs/feature/search_page/src/main/java/com/kkday/search_page/presentation/search/compose/BottomSheetSearchDestinationViewNew.kt:236 · abTestDestinationFilter = destinationFilterTest.experiment
  • kkday-android-member · libs/feature/search_page/src/main/java/com/kkday/search_page/presentation/search/compose/BottomSheetSearchDestinationViewNew.kt:247 · abTestDestinationFilter = destinationFilterTest.experiment
  • kkday-android-member · libs/feature/search_page/src/main/java/com/kkday/search_page/presentation/search/compose/BottomSheetSearchDestinationViewNew.kt:447 · abTestDestinationFilter = destinationFilterTest.experiment
  • kkday-android-member · libs/feature/search_page/src/main/java/com/kkday/search_page/presentation/search/compose/BottomSheetSearchDestinationViewNew.kt:475 · abTestDestinationFilter = destinationFilterTest.experiment
  • kkday-android-member · libs/feature/search_page/src/main/java/com/kkday/search_page/presentation/search/compose/BottomSheetSearchDestinationViewNew.kt:503 · abTestDestinationFilter = destinationFilterTest.experiment
  • kkday-android-member · libs/feature/search_page/src/main/java/com/kkday/search_page/presentation/search/compose/BottomSheetSearchDestinationViewNew.kt:811 · abTestDestinationFilter = destinationFilterTest.experiment
  • kkday-android-member · libs/feature/search_page/src/main/java/com/kkday/search_page/presentation/search/compose/BottomSheetSearchDestinationViewNew.kt:863 · abTestDestinationFilter = destinationFilterTest.experiment
  • kkday-android-member · libs/feature/search_page/src/main/java/com/kkday/search_page/presentation/search/compose/BottomSheetSearchDestinationViewNew.kt:897 · abTestDestinationFilter = destinationFilterTest.experiment
  • kkday-android-member · libs/feature/search_page/src/main/java/com/kkday/search_page/presentation/search/compose/BottomSheetSearchDestinationViewNew.kt:928 · abTestDestinationFilter = destinationFilterTest.experiment
  • kkday-android-member · libs/feature/search_page/src/main/java/com/kkday/search_page/presentation/search/compose/BottomSheetSearchDestinationViewNew.kt:1058 · abTestDestinationFilter = destinationFilterTest.experiment
  • kkday-android-member · libs/feature/search_page/src/main/java/com/kkday/search_page/presentation/search/compose/BottomSheetSearchDestinationViewNew.kt:1092 · abTestDestinationFilter = destinationFilterTest.experiment
  • kkday-android-member · libs/feature/search_page/src/main/java/com/kkday/search_page/presentation/search/compose/BottomSheetSearchDestinationViewNew.kt:1123 · abTestDestinationFilter = destinationFilterTest.experiment
  • kkday-android-member · libs/feature/search_page/src/main/java/com/kkday/search_page/presentation/search/compose/SearchFilterBottomSheet.kt:44 · import com.kkday.abtesting.experiment.cases.destinationFilterTest
  • kkday-android-member · libs/feature/search_page/src/main/java/com/kkday/search_page/presentation/search/compose/SearchFilterBottomSheet.kt:85 · destinationFilter: destinationFilterTest = destinationFilterTest.experiment
  • kkday-android-member · libs/feature/search_page/src/main/java/com/kkday/search_page/presentation/search/compose/SearchFilterBottomSheet.kt:182 · destinationFilter: destinationFilterTest = destinationFilterTest.experiment,
  • kkday-android-member · libs/feature/search_page/src/main/java/com/kkday/search_page/presentation/search/compose/SearchFilterBottomSheet.kt:446 · if (destinationFilter == destinationFilterTest.experiment) {
  • kkday-android-member · libs/feature/search_page/src/main/java/com/kkday/search_page/presentation/search/compose/SearchFilterBottomSheet.kt:609 · if (destinationFilter == destinationFilterTest.experiment) {
  • kkday-android-member · libs/feature/search_page/src/main/java/com/kkday/search_page/presentation/search/compose/SearchFilterBottomSheet.kt:653 · if (destinationFilter == destinationFilterTest.experiment) return@Column
  • kkday-android-member · libs/feature/search_page/src/main/java/com/kkday/search_page/presentation/search/compose/SearchFilterBottomSheet.kt:667 · || (currentRoute.value.contains(SearchFilterBottomSheetType.DESTINATION.route) && destinationFilter != destinationFilterTest.experiment)
  • kkday-android-member · libs/feature/search_page/src/main/java/com/kkday/search_page/presentation/search/viewmodel/SearchResultViewModel.kt:20 · import com.kkday.abtesting.experiment.cases.destinationFilterTest
  • kkday-android-member · libs/feature/search_page/src/main/java/com/kkday/search_page/presentation/search/viewmodel/SearchResultViewModel.kt:100 · private var _abTestDestinationFilterTest = MutableStateFlow(
  • kkday-android-member · libs/feature/search_page/src/main/java/com/kkday/search_page/presentation/search/viewmodel/SearchResultViewModel.kt:101 · destinationFilterTest.experiment
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/Constants.kt:15 · import com.kkday.abtesting.experiment.cases.destinationFilterTest
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/Constants.kt:34 · destinationFilterTest::class.simpleName to destinationFilterTest.values()
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/KKAbTestingService.kt:17 · import com.kkday.abtesting.experiment.cases.destinationFilterTest
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/KKAbTestingService.kt:113 · override fun getDestinationFilter(): Observable {
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/KKAbTestingService.kt:116 · { value -> destinationFilterTest.valueOf(value) },
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/KKAbTestingService.kt:117 · destinationFilterTest.control
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/experiment/cases/destinationFilterTest.kt:3 · enum class destinationFilterTest {
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/AbTestingService.kt:15 · import com.kkday.abtesting.experiment.cases.destinationFilterTest
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/AbTestingService.kt:35 · fun getDestinationFilter(): Observable
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/apptimize/ApptimizeServiceImpl.kt:17 · import com.kkday.abtesting.experiment.cases.destinationFilterTest
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/apptimize/ApptimizeServiceImpl.kt:121 · override fun getDestinationFilter(): Observable {
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/apptimize/ApptimizeServiceImpl.kt:123 · experimentName = destinationFilterTest::class.java.simpleName ?: "",
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/apptimize/ApptimizeServiceImpl.kt:124 · variants = destinationFilterTest.values(),
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/apptimize/ApptimizeServiceImpl.kt:125 · defaultVariant = destinationFilterTest.experiment
  • kkday-android-member · libs/tool/tracker/KKAnalyticsSpec/src/main/java/com/kkday/spec/kkanalytics/ktm/model/KTMEventProperty.kt:774 · override val key = "destinationFilterTest"
  • kkday-ios-member · Solution/kkday-ios-member/kkday-ios-member/App/CategoryPage/CategoryPageModel.swift:17 · if self.destinationFilterTestABVariantProvider.isExperimental {
  • kkday-ios-member · Solution/kkday-ios-member/kkday-ios-member/App/CategoryPage/CategoryPageModel.swift:25 · let destinationFilterTestABVariantProvider: ABVariantProvider = DestinationFilterTestABVariantProvider()
  • kkday-ios-member · Solution/kkday-ios-member/kkday-ios-member/App/CategoryPage/CategoryPageModel.swift:66 · if self.destinationFilterTestABVariantProvider.isExperimental {
  • kkday-ios-member · Solution/kkday-ios-member/kkday-ios-member/App/CategoryPage/CategoryPageModel.swift:83 · if self.destinationFilterTestABVariantProvider.isExperimental {
  • kkday-ios-member · Solution/kkday-ios-member/kkday-ios-member/App/CategoryPage/CategoryPageTracker.swift:16 · var destinationFilterTestABVariant: String? { get }
  • kkday-ios-member · Solution/kkday-ios-member/kkday-ios-member/App/CategoryPage/CategoryPageTracker.swift:177 · userProperties["destinationFilterTest"] = self.dataSource.destinationFilterTestABVariant
  • kkday-ios-member · Solution/kkday-ios-member/kkday-ios-member/App/CategoryPage/CategoryPageTracker.swift:194 · userProperties["destinationFilterTest"] = self.dataSource.destinationFilterTestABVariant
  • kkday-ios-member · Solution/kkday-ios-member/kkday-ios-member/App/CategoryPage/CategoryPageViewModel.swift:66 · if self.model.destinationFilterTestABVariantProvider.isExperimental {
  • kkday-ios-member · Solution/kkday-ios-member/kkday-ios-member/App/CategoryPage/CategoryPageViewModel.swift:171 · guard !self.model.destinationFilterTestABVariantProvider.isExperimental else { return }
  • kkday-ios-member · Solution/kkday-ios-member/kkday-ios-member/App/CategoryPage/CategoryPageViewModel.swift:578 · var destinationFilterTestABVariant: String? {
  • kkday-ios-member · Solution/kkday-ios-member/kkday-ios-member/App/CategoryPage/CategoryPageViewModel.swift:579 · self.model.destinationFilterTestABVariantProvider.variantName
  • kkday-ios-member · Solution/kkday-ios-member/kkday-ios-member/App/CategorySearchResultPage/Tracker/CategorySearchResultTracker.swift:16 · let destinationFilterTestABVariantProvider: ABVariantProvider = DestinationFilterTestABVariantProvider()
  • kkday-ios-member · Solution/kkday-ios-member/kkday-ios-member/App/CategorySearchResultPage/Tracker/CategorySearchResultTracker.swift:55 · userProperties["destinationFilterTest"] = self.destinationFilterTestABVariantProvider.variantName
  • kkday-ios-member · Solution/kkday-ios-member/kkday-ios-member/App/CategorySearchResultPage/ViewModel/CategorySearchResultViewModel+KTMTracker.swift:221 · .set(group: KTMEventGroupType.userProperty, with: ["destinationFilterTest": self.destinationFilterTestABVariantProvider.variantName])
  • kkday-ios-member · Solution/kkday-ios-member/kkday-ios-member/App/CategorySearchResultPage/ViewModel/CategorySearchResultViewModel+KTMTracker.swift:237 · .set(group: KTMEventGroupType.userProperty, with: ["destinationFilterTest": self.destinationFilterTestABVariantProvider.variantName])
  • kkday-ios-member · Solution/kkday-ios-member/kkday-ios-member/App/CategorySearchResultPage/ViewModel/CategorySearchResultViewModel+KTMTracker.swift:252 · .set(group: KTMEventGroupType.userProperty, with: ["destinationFilterTest": self.destinationFilterTestABVariantProvider.variantName])
  • kkday-ios-member · Solution/kkday-ios-member/kkday-ios-member/App/CategorySearchResultPage/ViewModel/CategorySearchResultViewModel+KTMTracker.swift:266 · .set(group: KTMEventGroupType.userProperty, with: ["destinationFilterTest": self.destinationFilterTestABVariantProvider.variantName])
  • kkday-ios-member · Solution/kkday-ios-member/kkday-ios-member/App/CategorySearchResultPage/ViewModel/CategorySearchResultViewModel+KTMTracker.swift:291 · userProperties["destinationFilterTest"] = self.destinationFilterTestABVariantProvider.variantName
  • kkday-ios-member · Solution/kkday-ios-member/kkday-ios-member/App/CategorySearchResultPage/ViewModel/CategorySearchResultViewModel+NavigationBar.swift:44 · if self.destinationFilterTestABVariantProvider.isExperimental {
  • kkday-ios-member · Solution/kkday-ios-member/kkday-ios-member/App/CategorySearchResultPage/ViewModel/CategorySearchResultViewModel.swift:146 · let destinationFilterTestABVariantProvider: ABVariantProvider = DestinationFilterTestABVariantProvider()
  • kkday-ios-member · Solution/kkday-ios-member/kkday-ios-member/App/CategorySearchResultPage/ViewModel/ViewModel+Sections/CategorySearchResultViewModel+Search.swift:34 · if self.destinationFilterTestABVariantProvider.isExperimental {
  • kkday-ios-member · Solution/kkday-ios-member/kkday-ios-member/App/Vertical/Hotel/CategoryPage/HotelCategoryPageViewModel.swift:561 · var destinationFilterTestABVariant: String? {
  • kkday-ios-member · "Solution/kkday-ios-member/kkday-ios-member/App/\346\220\234\345\260\213\345\274\225\346\223\216 Search/Page/Tracker/SearchDestinationTracker.swift":28 · userProperties["destinationFilterTest"] = "experiment"
  • kkday-ios-member · "Solution/kkday-ios-member/kkday-ios-member/App/\346\220\234\345\260\213\345\274\225\346\223\216 Search/Page/Tracker/SearchDestinationTracker.swift":42 · userProperties["destinationFilterTest"] = "experiment"
  • kkday-ios-member · "Solution/kkday-ios-member/kkday-ios-member/App/\346\220\234\345\260\213\345\274\225\346\223\216 Search/Page/Tracker/SearchDestinationTracker.swift":58 · userProperties["destinationFilterTest"] = "experiment"
  • kkday-ios-member · "Solution/kkday-ios-member/kkday-ios-member/App/\346\220\234\345\260\213\345\274\225\346\223\216 Search/Page/Tracker/SearchDestinationTracker.swift":74 · userProperties["destinationFilterTest"] = "experiment"
  • kkday-ios-member · "Solution/kkday-ios-member/kkday-ios-member/App/\346\220\234\345\260\213\345\274\225\346\223\216 Search/Page/\346\220\234\345\260\213\347\265\220\346\236\234\351\240\201 SearchResult/SearchResult/Page/ViewModels/SearchResultViewModel.swift":44 · let destinationFilterTestABVariantProvider: ABVariantProvider = DestinationFilterTestABVariantProvider()
  • kkday-ios-member · "Solution/kkday-ios-member/kkday-ios-member/App/\346\220\234\345\260\213\345\274\225\346\223\216 Search/Page/\346\220\234\345\260\213\347\265\220\346\236\234\351\240\201 SearchResult/SearchResult/Page/ViewModels/SearchResultViewModel.swift":334 · if self.destinationFilterTestABVariantProvider.isExperimental,
  • kkday-ios-member · "Solution/kkday-ios-member/kkday-ios-member/App/\346\220\234\345\260\213\345\274\225\346\223\216 Search/Page/\346\220\234\345\260\213\347\265\220\346\236\234\351\240\201 SearchResult/SearchResult/Page/ViewModels/SearchResultViewModel.swift":1599 · if copySelf.destinationFilterTestABVariantProvider.isExperimental {
  • kkday-ios-member · "Solution/kkday-ios-member/kkday-ios-member/App/\346\220\234\345\260\213\345\274\225\346\223\216 Search/Page/\346\220\234\345\260\213\347\265\220\346\236\234\351\240\201 SearchResult/SearchResult/Page/ViewModels/SearchResultViewModel.swift":2947 · .set(group: KTMEventGroupType.userProperty, with: ["destinationFilterTest": self.destinationFilterTestABVariantProvider.variantName])
  • kkday-ios-member · "Solution/kkday-ios-member/kkday-ios-member/App/\346\220\234\345\260\213\345\274\225\346\223\216 Search/Page/\346\220\234\345\260\213\347\265\220\346\236\234\351\240\201 SearchResult/SearchResult/Page/ViewModels/SearchResultViewModel.swift":3005 · .set(group: KTMEventGroupType.userProperty, with: ["destinationFilterTest": self.destinationFilterTestABVariantProvider.variantName])
  • kkday-ios-member · "Solution/kkday-ios-member/kkday-ios-member/App/\346\220\234\345\260\213\345\274\225\346\223\216 Search/Page/\346\220\234\345\260\213\347\265\220\346\236\234\351\240\201 SearchResult/SearchResult/Page/ViewModels/SearchResultViewModel.swift":3098 · .set(group: KTMEventGroupType.userProperty, with: ["destinationFilterTest": self.destinationFilterTestABVariantProvider.variantName])
  • kkday-ios-member · "Solution/kkday-ios-member/kkday-ios-member/App/\346\220\234\345\260\213\345\274\225\346\223\216 Search/Page/\346\220\234\345\260\213\347\265\220\346\236\234\351\240\201 SearchResult/SearchResult/Page/ViewModels/SearchResultViewModel.swift":3115 · .set(group: KTMEventGroupType.userProperty, with: ["destinationFilterTest": self.destinationFilterTestABVariantProvider.variantName])
  • kkday-ios-member · "Solution/kkday-ios-member/kkday-ios-member/App/\346\220\234\345\260\213\345\274\225\346\223\216 Search/Page/\346\220\234\345\260\213\347\265\220\346\236\234\351\240\201 SearchResult/SearchResult/Page/ViewModels/SearchResultViewModel.swift":3131 · .set(group: KTMEventGroupType.userProperty, with: ["destinationFilterTest": self.destinationFilterTestABVariantProvider.variantName])
  • kkday-ios-member · "Solution/kkday-ios-member/kkday-ios-member/App/\346\220\234\345\260\213\345\274\225\346\223\216 Search/Page/\346\220\234\345\260\213\347\265\220\346\236\234\351\240\201 SearchResult/SearchResult/Page/Views/SearchResultViewController.swift":113 · if self.viewModel.destinationFilterTestABVariantProvider.isExperimental {
  • kkday-ios-member · Solution/kkday-ios-member/kkday-ios-member/Manager/ABTesting/KKABTestingService.swift:84 · case DestinationFilterTest = "destinationFilterTest"
raw
{}
ProdListingExhibitionV3 running 2026-03-31T09:49:47.141Z from setting 0 hits
raw
{}
home_page_shortcuts_test showing_variant 2026-01-19T02:36:44.890Z from setting kkday-android-member: 4
show hits
  • kkday-android-member · app/src/main/java/com/kkday/member/view/homeV2/presentation/HomeScreen.kt:525 · // 背景圖片層 - 使用 graphicsLayer 優化性能,避免重組 (A/B test: home_page_shortcuts_test)
  • kkday-android-member · app/src/main/java/com/kkday/member/view/homeV2/presentation/HomeScreen.kt:560 · // 白色圓角背景容器 - 使用 graphicsLayer 優化性能 (A/B test: home_page_shortcuts_test)
  • kkday-android-member · app/src/main/java/com/kkday/member/view/homeV2/presentation/HomeScreen.kt:955 · // 合併的頂部容器: 使用 graphicsLayer 優化背景色動畫 (A/B test: home_page_shortcuts_test)
  • kkday-android-member · libs/model/src/main/java/com/kkday/library/common/tracker/TrackerConstants.kt:179 · const val KEY_HOME_PAGE_SHORTCUTS_TEST = "home_page_shortcuts_test"
raw
{}
HomePgLoopTest running 2026-01-16T06:33:06.109Z from setting 0 hits
raw
{}
TicketProdRecommend Experiment is a draft showing_variant 2025-12-18T02:55:32.185Z from setting 0 hits
raw
{}
ListPgVideo showing_variant 2025-11-30T14:24:13.221Z from setting 0 hits
raw
{}
TicketProdGroup showing_variant 2025-11-14T08:48:04.510Z from setting kkday-android-member: 2
show hits
  • kkday-android-member · vm/ticket/src/main/java/com/kkday/multiple/ticket/common/product/page/MultipleProductViewModel.kt:181 · fun getTicketProdGroup(productOid: String) {
  • kkday-android-member · vm/ticket/src/main/java/com/kkday/multiple/ticket/common/product/view/MultipleProductDetailFragment.kt:514 · multipleProductViewModel.getTicketProdGroup(getProductId())
raw
{}
CatResultPgInfinityLoopAB running 2025-10-27T07:10:50.748Z from setting kkday-android-member: 16
show hits
  • kkday-android-member · "docs/abtesting/CatResultPgInfinityLoopAB_\344\275\277\347\224\250\350\252\252\346\230\216.md":1 · # CatResultPgInfinityLoopAB 使用說明
  • kkday-android-member · "docs/abtesting/CatResultPgInfinityLoopAB_\344\275\277\347\224\250\350\252\252\346\230\216.md":5 · **實驗名稱**: `CatResultPgInfinityLoopAB`
  • kkday-android-member · "docs/abtesting/CatResultPgInfinityLoopAB_\344\275\277\347\224\250\350\252\252\346\230\216.md":21 · import com.kkday.abtesting.experiment.cases.CatResultPgInfinityLoopAB
  • kkday-android-member · "docs/abtesting/CatResultPgInfinityLoopAB_\344\275\277\347\224\250\350\252\252\346\230\216.md":32 · private val _abTestVariant = MutableStateFlow(
  • kkday-android-member · "docs/abtesting/CatResultPgInfinityLoopAB_\344\275\277\347\224\250\350\252\252\346\230\216.md":33 · CatResultPgInfinityLoopAB.InfiniteLoopOriginal
  • kkday-android-member · "docs/abtesting/CatResultPgInfinityLoopAB_\344\275\277\347\224\250\350\252\252\346\230\216.md":35 · val abTestVariant: StateFlow = _abTestVariant.asStateFlow()
  • kkday-android-member · "docs/abtesting/CatResultPgInfinityLoopAB_\344\275\277\347\224\250\350\252\252\346\230\216.md":43 · KKAbTestingService.getCatResultPgInfinityLoopAB()
  • kkday-android-member · "docs/abtesting/CatResultPgInfinityLoopAB_\344\275\277\347\224\250\350\252\252\346\230\216.md":48 · _abTestVariant.value = CatResultPgInfinityLoopAB.InfiniteLoopOriginal
  • kkday-android-member · "docs/abtesting/CatResultPgInfinityLoopAB_\344\275\277\347\224\250\350\252\252\346\230\216.md":76 · CatResultPgInfinityLoopAB.InfiniteLoopVariant -> exploreProducts
  • kkday-android-member · "docs/abtesting/CatResultPgInfinityLoopAB_\344\275\277\347\224\250\350\252\252\346\230\216.md":77 · CatResultPgInfinityLoopAB.InfiniteLoopOriginal -> null
  • kkday-android-member · "docs/abtesting/CatResultPgInfinityLoopAB_\344\275\277\347\224\250\350\252\252\346\230\216.md":81 · if (abTestVariant == CatResultPgInfinityLoopAB.InfiniteLoopVariant) {
  • kkday-android-member · "docs/abtesting/CatResultPgInfinityLoopAB_\344\275\277\347\224\250\350\252\252\346\230\216.md":95 · if (_abTestVariant.value != CatResultPgInfinityLoopAB.InfiniteLoopVariant) {
  • kkday-android-member · "docs/abtesting/CatResultPgInfinityLoopAB_\344\275\277\347\224\250\350\252\252\346\230\216.md":131 · 1. **實驗名稱**: `CatResultPgInfinityLoopAB`
  • kkday-android-member · "docs/abtesting/CatResultPgInfinityLoopAB_\344\275\277\347\224\250\350\252\252\346\230\216.md":158 · 2. 切換實驗為 `CatResultPgInfinityLoopAB`
  • kkday-android-member · "docs/abtesting/CatResultPgInfinityLoopAB_\344\275\277\347\224\250\350\252\252\346\230\216.md":176 · - **實驗定義**: `libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/experiment/cases/CatResultPgInfinityLoopAB.kt`
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/experiment/cases/CatResultPgInfinityLoopAB.kt:3 · enum class CatResultPgInfinityLoopAB {
raw
{}
SearchBarUIAB running 2025-09-08T09:06:05.227Z from setting 0 hits
raw
{}
DestinationPgRecomDefault running 2025-08-20T08:34:12.534Z from setting kkday-android-member: 21 · kkday-ios-member: 3
show hits
  • kkday-android-member · libs/feature/search_page/src/main/java/com/kkday/search_page/presentation/category/compose/main/DestinationPage.kt:78 · import com.kkday.abtesting.experiment.cases.DestinationPgRecomDefault
  • kkday-android-member · libs/feature/search_page/src/main/java/com/kkday/search_page/presentation/category/compose/main/DestinationPage.kt:525 · if (currentPage == -1 && pageState.pageCount > 0 && pageState.currentPage != (pageState.pageCount - 1) && destinationPgRecomDefault.value == DestinationPgRecomDefault.Control) {
  • kkday-android-member · libs/feature/search_page/src/main/java/com/kkday/search_page/presentation/category/viewmodel/DestinationPageViewModel.kt:18 · import com.kkday.abtesting.experiment.cases.DestinationPgRecomDefault
  • kkday-android-member · libs/feature/search_page/src/main/java/com/kkday/search_page/presentation/category/viewmodel/DestinationPageViewModel.kt:140 · private var _destinationPgRecomDefault = MutableStateFlow(
  • kkday-android-member · libs/feature/search_page/src/main/java/com/kkday/search_page/presentation/category/viewmodel/DestinationPageViewModel.kt:141 · DestinationPgRecomDefault.Control
  • kkday-android-member · libs/feature/search_page/src/main/java/com/kkday/search_page/presentation/category/viewmodel/DestinationPageViewModel.kt:152 · getDestinationPgRecomDefault()
  • kkday-android-member · libs/feature/search_page/src/main/java/com/kkday/search_page/presentation/category/viewmodel/DestinationPageViewModel.kt:552 · private fun getDestinationPgRecomDefault() {
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/Constants.kt:6 · import com.kkday.abtesting.experiment.cases.DestinationPgRecomDefault
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/Constants.kt:32 · DestinationPgRecomDefault::class.simpleName to DestinationPgRecomDefault.values()
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/KKAbTestingService.kt:9 · import com.kkday.abtesting.experiment.cases.DestinationPgRecomDefault
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/KKAbTestingService.kt:105 · override fun getDestinationPgRecommendTab(): Observable {
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/KKAbTestingService.kt:108 · { value -> DestinationPgRecomDefault.valueOf(value) },
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/KKAbTestingService.kt:109 · DestinationPgRecomDefault.Control
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/experiment/cases/DestinationPgRecomDefault.kt:3 · enum class DestinationPgRecomDefault {
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/AbTestingService.kt:7 · import com.kkday.abtesting.experiment.cases.DestinationPgRecomDefault
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/AbTestingService.kt:34 · fun getDestinationPgRecommendTab(): Observable
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/apptimize/ApptimizeServiceImpl.kt:9 · import com.kkday.abtesting.experiment.cases.DestinationPgRecomDefault
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/apptimize/ApptimizeServiceImpl.kt:113 · override fun getDestinationPgRecommendTab(): Observable {
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/apptimize/ApptimizeServiceImpl.kt:115 · experimentName = DestinationPgRecomDefault::class.java.simpleName ?: "",
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/apptimize/ApptimizeServiceImpl.kt:116 · variants = DestinationPgRecomDefault.values(),
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/apptimize/ApptimizeServiceImpl.kt:117 · defaultVariant = DestinationPgRecomDefault.DataRecomFirst
  • kkday-ios-member · Solution/kkday-ios-member/kkday-ios-member/App/DestinationPage/ABTest/DestinationPgRecommendExperimentProvider.swift:12 · private static let dispatcher = SwitchableABTestingService(with: .DestinationPgRecomDefault)
  • kkday-ios-member · Solution/kkday-ios-member/kkday-ios-member/AppDelegate/AppDelegate+Feature.swift:129 · with: .DestinationPgRecomDefault,
  • kkday-ios-member · Solution/kkday-ios-member/kkday-ios-member/Manager/ABTesting/KKABTestingService.swift:81 · case DestinationPgRecomDefault
raw
{}
InfiniteLoopOnDestination running 2025-07-24T06:55:42.652Z from setting kkday-ios-member: 1
show hits
  • kkday-ios-member · Solution/kkday-ios-member/kkday-ios-member/Manager/ABTesting/KKABTestingService.swift:80 · case InfiniteLoopOnDestination
raw
{}
InfiniteLoopOnDestinationv4 showing_variant 2025-07-23T07:55:08.837Z from setting 0 hits
raw
{}
InfiniteLoopOnDestinationv2 showing_variant 2025-07-17T03:44:09.662Z from setting 0 hits
raw
{}
SKUPageVersion showing_variant 2025-05-19T02:57:23.781Z from setting kkday-ios-member: 1
show hits
  • kkday-ios-member · Solution/kkday-ios-member/kkday-ios-member/Manager/ABTesting/KKABTestingService.swift:79 · case SKUPageVersion
raw
{}
TicketProdSkuPgOptimizationV1 showing_variant 2025-05-07T04:20:00.686Z from setting 0 hits
raw
{}
ProdPgPresaleSupportV2 showing_variant 2025-04-27T23:27:22.795Z from setting kkday-android-member: 25 · kkday-ios-member: 5
show hits
  • kkday-android-member · libs/feature/product_page/src/main/java/com/kkday/product_page/presentation/detail/view/SharedProductDetailFragment.kt:28 · import com.kkday.abtesting.experiment.cases.ProdPgPresaleSupportV2
  • kkday-android-member · libs/feature/product_page/src/main/java/com/kkday/product_page/presentation/detail/view/SharedProductDetailFragment.kt:2442 · it.first == true && it.second == ProdPgPresaleSupportV2.Experimental
  • kkday-android-member · libs/feature/product_page/src/main/java/com/kkday/product_page/presentation/detail/view/SharedProductDetailFragment.kt:2446 · if (it.second == ProdPgPresaleSupportV2.Control) {
  • kkday-android-member · libs/feature/product_page/src/main/java/com/kkday/product_page/presentation/detail/viewModel/ProductDetailViewModel.kt:14 · import com.kkday.abtesting.experiment.cases.ProdPgPresaleSupportV2
  • kkday-android-member · libs/feature/product_page/src/main/java/com/kkday/product_page/presentation/detail/viewModel/ProductDetailViewModel.kt:252 · private val _prodPgPresaleSupportV2: MutableStateFlow =
  • kkday-android-member · libs/feature/product_page/src/main/java/com/kkday/product_page/presentation/detail/viewModel/ProductDetailViewModel.kt:254 · ProdPgPresaleSupportV2.Control
  • kkday-android-member · libs/feature/product_page/src/main/java/com/kkday/product_page/presentation/detail/viewModel/ProductDetailViewModel.kt:349 · getAbTestingOfProdPgPresaleSupportV2()
  • kkday-android-member · libs/feature/product_page/src/main/java/com/kkday/product_page/presentation/detail/viewModel/ProductDetailViewModel.kt:1053 · private fun getAbTestingOfProdPgPresaleSupportV2() {
  • kkday-android-member · libs/feature/product_page/src/main/java/com/kkday/product_page/presentation/detail/viewModel/ProductDetailViewModel.kt:1057 · abTestValue = if (it == ProdPgPresaleSupportV2.Control) {
  • kkday-android-member · libs/feature/product_page/src/main/java/com/kkday/product_page/presentation/detail/viewModel/ProductDetailViewModel.kt:1058 · "ProdPgPresaleSupportV2Control"
  • kkday-android-member · libs/feature/product_page/src/main/java/com/kkday/product_page/presentation/detail/viewModel/ProductDetailViewModel.kt:1060 · "ProdPgPresaleSupportV2Experiment"
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/Constants.kt:11 · import com.kkday.abtesting.experiment.cases.ProdPgPresaleSupportV2
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/Constants.kt:30 · ProdPgPresaleSupportV2::class.simpleName to ProdPgPresaleSupportV2.values()
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/KKAbTestingService.kt:13 · import com.kkday.abtesting.experiment.cases.ProdPgPresaleSupportV2
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/KKAbTestingService.kt:97 · override fun getProdPgPresaleCsV1Experiment(): Observable {
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/KKAbTestingService.kt:100 · { value -> ProdPgPresaleSupportV2.valueOf(value) },
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/KKAbTestingService.kt:101 · ProdPgPresaleSupportV2.Control
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/experiment/cases/ProdPgPresaleSupportV2.kt:3 · enum class ProdPgPresaleSupportV2 {
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/AbTestingService.kt:11 · import com.kkday.abtesting.experiment.cases.ProdPgPresaleSupportV2
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/AbTestingService.kt:33 · fun getProdPgPresaleCsV1Experiment(): Observable
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/apptimize/ApptimizeServiceImpl.kt:13 · import com.kkday.abtesting.experiment.cases.ProdPgPresaleSupportV2
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/apptimize/ApptimizeServiceImpl.kt:105 · override fun getProdPgPresaleCsV1Experiment(): Observable {
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/apptimize/ApptimizeServiceImpl.kt:107 · experimentName = ProdPgPresaleSupportV2::class.simpleName ?: "",
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/apptimize/ApptimizeServiceImpl.kt:108 · variants = ProdPgPresaleSupportV2.values(),
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/apptimize/ApptimizeServiceImpl.kt:109 · defaultVariant = ProdPgPresaleSupportV2.Control
  • kkday-ios-member · "Solution/kkday-ios-member/kkday-ios-member/App/\345\225\206\345\223\201\345\205\247\345\256\271\351\240\201 Product/\345\225\206\345\223\201\345\205\247\345\256\271\351\240\201 ProductContainer/ProductContent/Helpers/PresaleSupportABVariantProvider.swift":12 · private static let dispatcher = SwitchableABTestingService(with: .ProdPgPresaleSupportV2)
  • kkday-ios-member · "Solution/kkday-ios-member/kkday-ios-member/App/\345\225\206\345\223\201\345\205\247\345\256\271\351\240\201 Product/\345\225\206\345\223\201\345\205\247\345\256\271\351\240\201 ProductContainer/ProductContent/Helpers/PresaleSupportABVariantProvider.swift":21 · return "ProdPgPresaleSupportV2Control"
  • kkday-ios-member · "Solution/kkday-ios-member/kkday-ios-member/App/\345\225\206\345\223\201\345\205\247\345\256\271\351\240\201 Product/\345\225\206\345\223\201\345\205\247\345\256\271\351\240\201 ProductContainer/ProductContent/Helpers/PresaleSupportABVariantProvider.swift":23 · return "ProdPgPresaleSupportV2Experimental"
  • kkday-ios-member · Solution/kkday-ios-member/kkday-ios-member/AppDelegate/AppDelegate+Feature.swift:121 · with: .ProdPgPresaleSupportV2,
  • kkday-ios-member · Solution/kkday-ios-member/kkday-ios-member/Manager/ABTesting/KKABTestingService.swift:76 · case ProdPgPresaleSupportV2
raw
{}
MemberSVCErrorMessage running 2025-02-27T05:29:50.952Z from setting kkday-ios-member: 1
show hits
  • kkday-ios-member · Solution/kkday-ios-member/kkday-ios-member/Manager/ABTesting/KKABTestingService.swift:78 · case MemberSVCErrorMessage
raw
{}
MemberSVCPasswordRule running 2025-02-27T05:28:42.086Z from setting kkday-ios-member: 1
show hits
  • kkday-ios-member · Solution/kkday-ios-member/kkday-ios-member/Manager/ABTesting/KKABTestingService.swift:77 · case MemberSVCPasswordRule
raw
{}
TrueTime showing_variant 2024-11-04T08:47:41.082Z from setting kkday-ios-member: 19
show hits
  • kkday-ios-member · Solution/kkday-ios-member/Podfile:447 · pod 'TrueTime', :git => 'https://github.com/instacart/TrueTime.swift.git', :tag => '5.1.0'
  • kkday-ios-member · Solution/kkday-ios-member/Podfile.lock:383 · - TrueTime (5.1.0)
  • kkday-ios-member · Solution/kkday-ios-member/Podfile.lock:466 · - TrueTime (from `https://github.com/instacart/TrueTime.swift.git`, tag `5.1.0`)
  • kkday-ios-member · Solution/kkday-ios-member/Podfile.lock:602 · TrueTime:
  • kkday-ios-member · Solution/kkday-ios-member/Podfile.lock:603 · :git: https://github.com/instacart/TrueTime.swift.git
  • kkday-ios-member · Solution/kkday-ios-member/Podfile.lock:622 · TrueTime:
  • kkday-ios-member · Solution/kkday-ios-member/Podfile.lock:623 · :git: https://github.com/instacart/TrueTime.swift.git
  • kkday-ios-member · Solution/kkday-ios-member/Podfile.lock:735 · TrueTime: 76aea5381d4799e620730857318cc23f082925a7
  • kkday-ios-member · Solution/kkday-ios-member/kkday-ios-member.xcodeproj/project.pbxproj:2372 · "${BUILT_PRODUCTS_DIR}/TrueTime/TrueTime.framework",
  • kkday-ios-member · Solution/kkday-ios-member/kkday-ios-member.xcodeproj/project.pbxproj:2482 · "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/TrueTime.framework",
  • kkday-ios-member · Solution/kkday-ios-member/kkday-ios-member.xcodeproj/project.pbxproj:3240 · "\"TrueTime\"",
  • kkday-ios-member · Solution/kkday-ios-member/kkday-ios-member.xcodeproj/project.pbxproj:3565 · "\"TrueTime\"",
  • kkday-ios-member · Solution/kkday-ios-member/kkday-ios-member/Manager/ABTesting/KKABTestingService.swift:75 · case TrueTime
  • kkday-ios-member · Solution/kkday-ios-member/kkday-ios-member/Manager/ABTesting/Variants/TrueTimeABVariant.swift:2 · // TrueTimeABVariant.swift
  • kkday-ios-member · Solution/kkday-ios-member/kkday-ios-member/Manager/ABTesting/Variants/TrueTimeABVariant.swift:12 · enum TrueTimeABVariant: String, ABTestingVariantSetProtocol {
  • kkday-ios-member · Solution/kkday-ios-member/kkday-ios-member/Manager/ABTesting/Variants/TrueTimeABVariant.swift:16 · static var defaultValue: TrueTimeABVariant {
  • kkday-ios-member · Solution/kkday-ios-member/kkday-ios-member/Manager/TimeManager.swift:12 · import TrueTime
  • kkday-ios-member · Solution/kkday-ios-member/kkday-ios-member/Manager/TimeManager.swift:21 · private var timeClient = TrueTimeClient.sharedInstance
  • kkday-ios-member · Solution/kkday-ios-member/kkday-ios-member/Manager/TimeManager.swift:92 · let trueTimeABVariant: TrueTimeABVariant = KKABTestingService.shared.dispatchVariant(with: .TrueTime)
raw
{}
AddPkgPhoto showing_variant 2024-06-20T08:46:07.806Z from setting 0 hits
raw
{}
ProdPgReviewSortingV1 showing_variant 2024-01-10T08:29:22.312Z from setting 0 hits
raw
{}
CancelPolicyOptimize showing_variant 2023-10-23T03:50:13.415Z from setting kkday-android-member: 2
show hits
  • kkday-android-member · app/src/main/java/com/kkday/member/tracker/kktracker/parser/obj/universal/KKAbTestingServiceParser.kt:26 · * CancelPolicyOptimize::class.simpleName -> {
  • kkday-android-member · app/src/main/java/com/kkday/member/tracker/kktracker/parser/obj/universal/KKAbTestingServiceParser.kt:27 · * abTestingName + kkAbTestingService.getCancelPolicyOptimizeExperiment()
raw
{}
ProdPgPresaleSupportV1 showing_variant 2023-10-20T10:52:07.692Z from setting 0 hits
raw
{}
OrderListAfterBookingPromoV1 showing_variant 2023-10-16T04:31:37.684Z from setting 0 hits
raw
{}
DealPgLaunchV1 showing_variant 2023-09-26T06:35:37.746Z from setting kkday-android-member: 2
show hits
  • kkday-android-member · app/src/main/java/com/kkday/member/view/main/MainActivity.kt:537 · mainVM.getDealPgLaunchV1Experiment()
  • kkday-android-member · libs/base/src/main/java/com/kkday/library/common/view/main/MainViewModel.kt:137 · fun getDealPgLaunchV1Experiment() {
raw
{}
OrderListAfterBookingPromoV2 showing_variant 2023-08-30T06:05:10.532Z from setting 0 hits
raw
{}
BookingFormSystemV1 showing_variant 2023-08-23T11:19:41.776Z from setting 0 hits
raw
{}
PaymentAdsDisplay showing_variant 2023-08-18T06:30:08.992Z from setting 0 hits
raw
{}
SKUPageV2dot0 showing_variant 2023-08-16T07:37:06.845Z from setting 0 hits
raw
{}
ProdSkuFormPgUnlogin showing_variant 2023-07-04T10:51:30.598Z from setting kkday-ios-member: 1
show hits
  • kkday-ios-member · Solution/kkday-ios-member/kkday-ios-member/Manager/ABTesting/KKABTestingService.swift:74 · case ProdSkuFormPgUnlogin
raw
{}
AbTestingExample running 2023-05-23T08:20:18.682Z from setting kkday-android-member: 19
show hits
  • kkday-android-member · libs/tool/abtesting/app/src/main/java/com/abtesting/app/MainViewModel.kt:10 · import com.kkday.abtesting.experiment.cases.AbTestingExample
  • kkday-android-member · libs/tool/abtesting/app/src/main/java/com/abtesting/app/MainViewModel.kt:42 · val experiment = settings[dataStoreExperiment] ?: AbTestingExample::class.simpleName
  • kkday-android-member · libs/tool/abtesting/app/src/main/java/com/abtesting/app/MainViewModel.kt:112 · AbTestingExample::class.simpleName -> {
  • kkday-android-member · libs/tool/abtesting/app/src/main/java/com/abtesting/app/MainViewModel.kt:113 · KKAbTestingService.getAbTestingExampleExperiment()
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/Constants.kt:3 · import com.kkday.abtesting.experiment.cases.AbTestingExample
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/Constants.kt:21 · AbTestingExample::class.simpleName to AbTestingExample.values().map { it.name },
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/KKAbTestingService.kt:5 · import com.kkday.abtesting.experiment.cases.AbTestingExample
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/KKAbTestingService.kt:73 · override fun getAbTestingExampleExperiment(): Observable {
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/KKAbTestingService.kt:75 · apptimize::getAbTestingExampleExperiment,
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/KKAbTestingService.kt:76 · { value -> AbTestingExample.valueOf(value) },
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/KKAbTestingService.kt:77 · AbTestingExample.Control
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/experiment/cases/AbTestingExample.kt:3 · enum class AbTestingExample {
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/AbTestingService.kt:4 · import com.kkday.abtesting.experiment.cases.AbTestingExample
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/AbTestingService.kt:30 · fun getAbTestingExampleExperiment(): Observable
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/apptimize/ApptimizeServiceImpl.kt:5 · import com.kkday.abtesting.experiment.cases.AbTestingExample
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/apptimize/ApptimizeServiceImpl.kt:64 · override fun getAbTestingExampleExperiment(): Observable {
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/apptimize/ApptimizeServiceImpl.kt:66 · experimentName = AbTestingExample::class.simpleName ?: "",
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/apptimize/ApptimizeServiceImpl.kt:67 · variants = AbTestingExample.values(),
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/apptimize/ApptimizeServiceImpl.kt:68 · defaultVariant = AbTestingExample.Control
raw
{}
ProdPageLegibility showing_variant 2023-05-23T08:16:12.643Z from setting 0 hits
raw
{}
ProdPageLegibilityV2dot0 showing_variant 2023-05-16T10:06:18.547Z from setting 0 hits
raw
{}
RepayTest showing_variant 2023-03-15T01:34:24.016Z from setting kkday-android-member: 18
show hits
  • kkday-android-member · libs/tool/abtesting/app/src/main/java/com/abtesting/app/MainViewModel.kt:12 · import com.kkday.abtesting.experiment.cases.RepayTest
  • kkday-android-member · libs/tool/abtesting/app/src/main/java/com/abtesting/app/MainViewModel.kt:116 · RepayTest::class.simpleName -> {
  • kkday-android-member · libs/tool/abtesting/app/src/main/java/com/abtesting/app/MainViewModel.kt:117 · KKAbTestingService.getRepayTestExperiment()
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/Constants.kt:12 · import com.kkday.abtesting.experiment.cases.RepayTest
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/Constants.kt:27 · RepayTest::class.simpleName to RepayTest.values().map { it.name },
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/KKAbTestingService.kt:14 · import com.kkday.abtesting.experiment.cases.RepayTest
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/KKAbTestingService.kt:81 · override fun getRepayTestExperiment(): Observable {
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/KKAbTestingService.kt:83 · apptimize::getRepayTestExperiment,
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/KKAbTestingService.kt:84 · { value -> RepayTest.valueOf(value) },
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/KKAbTestingService.kt:85 · RepayTest.Control
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/experiment/cases/RepayTest.kt:3 · enum class RepayTest {
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/AbTestingService.kt:12 · import com.kkday.abtesting.experiment.cases.RepayTest
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/AbTestingService.kt:31 · fun getRepayTestExperiment(): Observable
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/apptimize/ApptimizeServiceImpl.kt:14 · import com.kkday.abtesting.experiment.cases.RepayTest
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/apptimize/ApptimizeServiceImpl.kt:72 · override fun getRepayTestExperiment(): Observable {
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/apptimize/ApptimizeServiceImpl.kt:74 · experimentName = RepayTest::class.simpleName ?: "",
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/apptimize/ApptimizeServiceImpl.kt:75 · variants = RepayTest.values(),
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/apptimize/ApptimizeServiceImpl.kt:76 · defaultVariant = RepayTest.Control
raw
{}
SKUPageTest showing_variant 2023-03-09T05:07:53.786Z from setting 0 hits
raw
{}
SearchDiscoverPageDestinationTestCase showing_variant 2023-02-08T04:36:11.320Z from setting kkday-android-member: 18
show hits
  • kkday-android-member · libs/tool/abtesting/app/src/main/java/com/abtesting/app/MainViewModel.kt:13 · import com.kkday.abtesting.experiment.cases.SearchDiscoverPageDestinationTestCase
  • kkday-android-member · libs/tool/abtesting/app/src/main/java/com/abtesting/app/MainViewModel.kt:124 · SearchDiscoverPageDestinationTestCase::class.simpleName -> {
  • kkday-android-member · libs/tool/abtesting/app/src/main/java/com/abtesting/app/MainViewModel.kt:125 · KKAbTestingService.getSearchDiscoverPageDestinationTestCase()
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/Constants.kt:13 · import com.kkday.abtesting.experiment.cases.SearchDiscoverPageDestinationTestCase
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/Constants.kt:28 · SearchDiscoverPageDestinationTestCase::class.simpleName to SearchDiscoverPageDestinationTestCase.values()
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/KKAbTestingService.kt:15 · import com.kkday.abtesting.experiment.cases.SearchDiscoverPageDestinationTestCase
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/KKAbTestingService.kt:65 · override fun getSearchDiscoverPageDestinationTestCase(): Observable {
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/KKAbTestingService.kt:67 · apptimize::getSearchDiscoverPageDestinationTestCase,
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/KKAbTestingService.kt:68 · { value -> SearchDiscoverPageDestinationTestCase.valueOf(value) },
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/KKAbTestingService.kt:69 · SearchDiscoverPageDestinationTestCase.SearchDiscoverPageDestination_Control
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/experiment/cases/SearchDiscoverPageDestinationTestCase.kt:3 · enum class SearchDiscoverPageDestinationTestCase {
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/AbTestingService.kt:13 · import com.kkday.abtesting.experiment.cases.SearchDiscoverPageDestinationTestCase
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/AbTestingService.kt:29 · fun getSearchDiscoverPageDestinationTestCase(): Observable
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/apptimize/ApptimizeServiceImpl.kt:15 · import com.kkday.abtesting.experiment.cases.SearchDiscoverPageDestinationTestCase
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/apptimize/ApptimizeServiceImpl.kt:88 · override fun getSearchDiscoverPageDestinationTestCase(): Observable {
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/apptimize/ApptimizeServiceImpl.kt:90 · experimentName = SearchDiscoverPageDestinationTestCase::class.simpleName
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/apptimize/ApptimizeServiceImpl.kt:92 · variants = SearchDiscoverPageDestinationTestCase.values(),
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/apptimize/ApptimizeServiceImpl.kt:93 · defaultVariant = SearchDiscoverPageDestinationTestCase.SearchDiscoverPageDestination_Control
raw
{}
CityPageTest showing_variant 2022-11-02T17:56:07.881Z from setting kkday-android-member: 16
show hits
  • kkday-android-member · libs/tool/abtesting/app/src/main/java/com/abtesting/app/MainViewModel.kt:11 · import com.kkday.abtesting.experiment.cases.CityPageTest
  • kkday-android-member · libs/tool/abtesting/app/src/main/java/com/abtesting/app/MainViewModel.kt:120 · CityPageTest::class.simpleName -> {
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/Constants.kt:5 · import com.kkday.abtesting.experiment.cases.CityPageTest
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/Constants.kt:22 · CityPageTest::class.simpleName to CityPageTest.values().map { it.name },
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/KKAbTestingService.kt:8 · import com.kkday.abtesting.experiment.cases.CityPageTest
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/KKAbTestingService.kt:57 · override fun getCityPageExperiment(): Observable {
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/KKAbTestingService.kt:60 · { value -> CityPageTest.valueOf(value) },
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/KKAbTestingService.kt:61 · CityPageTest.Control
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/experiment/cases/CityPageTest.kt:3 · enum class CityPageTest {
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/AbTestingService.kt:6 · import com.kkday.abtesting.experiment.cases.CityPageTest
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/AbTestingService.kt:28 · fun getCityPageExperiment(): Observable
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/apptimize/ApptimizeServiceImpl.kt:8 · import com.kkday.abtesting.experiment.cases.CityPageTest
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/apptimize/ApptimizeServiceImpl.kt:80 · override fun getCityPageExperiment(): Observable {
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/apptimize/ApptimizeServiceImpl.kt:82 · experimentName = CityPageTest::class.java.simpleName ?: "",
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/apptimize/ApptimizeServiceImpl.kt:83 · variants = CityPageTest.values(),
  • kkday-android-member · libs/tool/abtesting/kkAbtesting/src/main/java/com/kkday/abtesting/services/apptimize/ApptimizeServiceImpl.kt:84 · defaultVariant = CityPageTest.Control
raw
{}
SearchDiscoverResultPg_Keywords_Special_Link showing_variant 2022-10-11T08:17:04.580Z from setting 0 hits
raw
{}
HomeMarketingRecommendProd showing_variant 2021-12-20T08:58:02.221Z from setting 0 hits
raw
{}
RegisterTestCase showing_variant 2021-11-13T02:15:16.199Z from setting kkday-ios-member: 12
show hits
  • kkday-ios-member · Chart/swiftplantuml/kkday-ios-member.puml:986 · class "RegisterTestCase" as RegisterTestCase << (E, LightSteelBlue) enum >> {
  • kkday-ios-member · Chart/swiftplantuml/kkday-ios-member.puml:5605 · ~registerTestCase : RegisterTestCase
  • kkday-ios-member · Chart/swiftplantuml/kkday-ios-member.puml:18708 · RegisterTestCase -- String : inherits
  • kkday-ios-member · Chart/swiftplantuml/kkday-ios-member.svg:336 · class RegisterTestCase-->
  • kkday-ios-member · Chart/swiftplantuml/kkday-ios-member.svg:2883 · link RegisterTestCase to String-->> {
  • kkday-ios-member · Chart/swiftplantuml/kkday-ios-member.svg:12113 · ~registerTestCase : RegisterTestCase
  • kkday-ios-member · Chart/swiftplantuml/kkday-ios-member.svg:25216 · RegisterTestCase - - String : inherits
  • kkday-ios-member · Chart/swiftplantuml/kkday-ios-member.svg:29358 · class "RegisterTestCase" as RegisterTestCase << (E, LightSteelBlue) enum >> {
  • kkday-ios-member · Chart/swiftplantuml/kkday-ios-member.svg:33977 · ~registerTestCase : RegisterTestCase
  • kkday-ios-member · Chart/swiftplantuml/kkday-ios-member.svg:47080 · RegisterTestCase - - String : inherits
raw
{}

Web (ab_test_service.php)

KeyStatusStartedCode hitsConfig
recommend_products_also_view enabled 2021-04-26 from code (first commit) kkday-member-ci: 5
show hits
  • kkday-member-ci · application/config/ab_test_service.php:5 · 'recommend_products_also_view' => [
  • kkday-member-ci · application/controllers/hotel.php:536 · 'recommend_products_also_view',
  • kkday-member-ci · application/controllers/hotel.php:600 · $recom_test_case = $this->ab_test_service->get_test_case_value_by_test_name('recommend_products_also_view');
  • kkday-member-ci · application/controllers/product.php:390 · 'recommend_products_also_view',
  • kkday-member-ci · application/controllers/product.php:1910 · $recom_test_case = $this->ab_test_service->get_test_case_value_by_test_name('recommend_products_also_view');
raw
{
  "version": 1,
  "cases": [
    "recommend",
    "recommend_by_mkt"
  ],
  "rule": "random_by_kkud",
  "param": {
    "digit": -2
  }
}
recommend_products_also_buy enabled 2021-05-31 from code (first commit) kkday-member-ci: 5
show hits
  • kkday-member-ci · application/config/ab_test_service.php:13 · 'recommend_products_also_buy' => [
  • kkday-member-ci · application/controllers/booking.php:1880 · $version = $this->_get_custom_ab_test_value('recommend_products_also_buy');
  • kkday-member-ci · application/controllers/booking.php:1948 · 'recomTestCase' => (bool) $this->_get_custom_ab_test_value('recommend_products_also_buy'),
  • kkday-member-ci · application/controllers/booking.php:1964 · 'recommend_products_also_buy',
  • kkday-member-ci · application/controllers/booking.php:2987 · case 'recommend_products_also_buy':
raw
{
  "version": 1,
  "cases": [
    "also_buy",
    "also_buy_by_mkt"
  ],
  "cases_data": {
    "also_buy": [],
    "also_buy_by_mkt": {
      "version": "v2"
    }
  },
  "rule": "random_by_kkud",
  "param": {
    "digit": -2
  }
}
search_bar_recommend_you_products enabled 2020-08-11 from code (first commit) kkday-member-ci: 2
show hits
  • kkday-member-ci · application/config/ab_test_service.php:27 · 'search_bar_recommend_you_products' => [
  • kkday-member-ci · application/config/ab_test_service.php:206 · 'search_bar_recommend_you_products', // JIRA-2105
raw
{
  "version": 1,
  "cases": [
    0,
    1
  ],
  "rule": "random_by_kkud",
  "param": {
    "digit": -2
  }
}
area_page enabled 2021-04-27 from code (first commit) kkday-member-ci: 14
show hits
  • kkday-member-ci · application/config/ab_test_service.php:35 · 'area_page' => [
  • kkday-member-ci · application/controllers/theme.php:443 · private function _area_page_ab_test_redirection($area_source)
  • kkday-member-ci · application/controllers/theme.php:464 · $this->_area_page_ab_test_redirection($area_source);
  • kkday-member-ci · application/controllers/theme.php:497 · $this->_area_page_ab_test_redirection($area_source);
  • kkday-member-ci · application/libraries/area_theme_service.php:259 · $this->page_setting = $this->svc_common_service->get_area_page($this->_get_area_code());
  • kkday-member-ci · application/libraries/area_theme_service.php:512 · $area_page_data = $this->svc_common_service->get_area_page_data($code, kk_site_lang());
  • kkday-member-ci · application/libraries/area_theme_service.php:514 · if($area_page_data) {
  • kkday-member-ci · application/libraries/area_theme_service.php:515 · $result = $area_page_data['data']['themes'] ?? [];
  • kkday-member-ci · application/libraries/svc_common_service.php:492 · public function get_area_page($area_code)
  • kkday-member-ci · application/libraries/svc_common_service.php:499 · return element('data', $this->mod_web_api_svc_common->get_area_page($area_code), array());
  • kkday-member-ci · application/libraries/svc_common_service.php:502 · public function get_area_page_data($area_code = 'A01-001-00001', $search_lang = 'zh-tw')
  • kkday-member-ci · application/libraries/svc_common_service.php:504 · return $this->mod_web_api_svc_common->get_area_page_data($area_code, $search_lang);
  • kkday-member-ci · application/models/mod_web_api_svc_common.php:125 · public function get_area_page($area_code)
  • kkday-member-ci · application/models/mod_web_api_svc_common.php:133 · public function get_area_page_data($area_code, $search_lang)
raw
{
  "version": 1,
  "cases": [
    "old",
    "new"
  ],
  "rule": "random_by_kkud",
  "param": {
    "digit": -2
  }
}
google_one_tap enabled 2022-03-25 from code (first commit) kkday-member-ci: 8
show hits
  • kkday-member-ci · application/config/ab_test_service.php:48 · 'google_one_tap' => [
  • kkday-member-ci · application/config/ab_test_service.php:207 · 'google_one_tap', // JIRA-3237
  • kkday-member-ci · application/controllers/member.php:2616 · public function ajax_google_one_tap()
  • kkday-member-ci · resources/mobile/js/components/common/GoogleOneTap.vue:34 · url: kkday.url.kkSiteUrl('member/ajax_google_one_tap'),
  • kkday-member-ci · resources/mobile/js/views/App.vue:114 · googleOneTapTestCase: (s) => s.testCases?.google_one_tap,
  • kkday-member-ci · resources/pc/js/components/common/GoogleOneTap.vue:7 · {{ lang('common_google_one_tap_text') }}
  • kkday-member-ci · resources/pc/js/components/common/GoogleOneTap.vue:58 · url: kkday.url.kkSiteUrl('member/ajax_google_one_tap'),
  • kkday-member-ci · resources/pc/js/views/App.vue:173 · googleOneTapTestCase: (s) => s.testCases?.google_one_tap,
raw
{
  "version": 1,
  "cases": [
    "Control",
    "Experimental"
  ],
  "rule": "weighted_random_by_kkud",
  "param": {
    "weights": [
      1,
      1
    ]
  }
}
ticket_prod_sku_optimization_v1 enabled 2025-06-16 from code (first commit) kkday-member-ci: 1
show hits
  • kkday-member-ci · application/config/ab_test_service.php:76 · 'ticket_prod_sku_optimization_v1' => [
raw
{
  "version": 1,
  "cases": [
    "TicketProdSkuPgOptimizationV1Control",
    "TicketProdSkuPgOptimizationV1Experimental"
  ],
  "rule": "weighted_random_by_kkud",
  "param": {
    "weights": [
      1,
      1
    ]
  }
}
destination_infinite_loop_experiment enabled 2025-07-10 from code (first commit) kkday-member-ci: 3
show hits
  • kkday-member-ci · application/config/ab_test_service.php:91 · 'destination_infinite_loop_experiment' => [
  • kkday-member-ci · application/controllers/destination.php:101 · ->append_ab_test_data_by_names(['destination_infinite_loop_experiment'])
  • kkday-member-ci · resources/share/js/helpers/destination.js:81 · 'state.common.abTestData.destination_infinite_loop_experiment.case',
raw
{
  "version": 1,
  "cases": [
    "infinite_loop_original",
    "infinite_loop_variant_empty",
    "infinite_loop_variant_impression"
  ],
  "rule": "weighted_random_by_kkud",
  "param": {
    "weights": [
      2,
      4,
      4
    ]
  }
}
app_only_coupon_on_mweb_test enabled 2025-09-23 from code (first commit) kkday-member-ci: 3
show hits
  • kkday-member-ci · application/config/ab_test_service.php:107 · 'app_only_coupon_on_mweb_test' => [
  • kkday-member-ci · application/controllers/home.php:160 · $this->agent->is_mobile() ? array('app_only_coupon_on_mweb_test') : array(),
  • kkday-member-ci · resources/mobile/js/helpers/abTest/appOnlyCouponTest.js:11 · ['state', 'common', 'abTestData', 'app_only_coupon_on_mweb_test', 'case'],
raw
{
  "version": 1,
  "cases": [
    "control",
    "show_all",
    "show_banner"
  ],
  "rule": "weighted_random_by_kkud",
  "param": {
    "weights": [
      2,
      1,
      1
    ]
  },
  "default_case": "control"
}
home_page_shortcuts_test enabled 2025-10-20 from code (first commit) kkday-member-ci: 7
show hits
  • kkday-member-ci · application/config/ab_test_service.php:121 · 'home_page_shortcuts_test' => [
  • kkday-member-ci · application/controllers/home.php:161 · $this->agent->is_mobile() ? array('home_page_shortcuts_test') : array(),
  • kkday-member-ci · resources/mobile/js/components/explore/ExploreInfiniteScrollView.vue:173 · useAbTest('home_page_shortcuts_test');
  • kkday-member-ci · resources/mobile/js/components/home/FirstOrderAppSection.vue:7 ·
  • kkday-member-ci · resources/mobile/js/components/home/FirstOrderAppSection.vue:135 · useAbTest('home_page_shortcuts_test');
  • kkday-member-ci · resources/mobile/js/store/modules/home.js:99 · initState?.common?.abTestData?.['home_page_shortcuts_test'] ?? {};
  • kkday-member-ci · resources/mobile/js/views/Home.vue:448 · useAbTest('home_page_shortcuts_test');
raw
{
  "version": 1,
  "cases": [
    "control",
    "experiment"
  ],
  "rule": "weighted_random_by_kkud",
  "param": {
    "weights": [
      1,
      1
    ]
  }
}
destination_filter_test enabled 2025-12-18 from code (first commit) kkday-member-ci: 12
show hits
  • kkday-member-ci · application/config/ab_test_service.php:135 · 'destination_filter_test' => [
  • kkday-member-ci · application/controllers/category.php:129 · ->append_ab_test_data_by_names(['destination_filter_test'])
  • kkday-member-ci · application/controllers/product.php:965 · $this->agent->is_mobile() ? array('destination_filter_test') : array()
  • kkday-member-ci · application/libraries/product_list/product_list_service.php:61 · $destination_filter_test_data = $this->ab_test_service->get_test_data_by_test_names(['destination_filter_test'])['destination_filter_test'] ?? [];
  • kkday-member-ci · application/libraries/product_list/product_list_service.php:106 · $skip_verify_filter_ids = $destination_filter_test_data['case'] === 'experiment' && $this->agent->is_mobile()
  • kkday-member-ci · resources/mobile/js/components/destinationSearch/hooks/useDestinationSearchTracker.js:21 · const { currentCase } = useAbTest('destination_filter_test');
  • kkday-member-ci · resources/mobile/js/components/filter/FilterBottomSheet.vue:219 · const { currentCase, cases } = useAbTest('destination_filter_test');
  • kkday-member-ci · resources/mobile/js/components/filter/FilterHybridContentCustomNavigation.vue:57 · const { currentCase, cases } = useAbTest('destination_filter_test');
  • kkday-member-ci · resources/share/js/components/theme/category/SelectWithBottomSheet.vue:59 · const { currentCase, cases } = useAbTest('destination_filter_test');
  • kkday-member-ci · resources/share/js/hooks/components/category/useCategoryEvent.js:27 · const { currentCase } = useAbTest('destination_filter_test');
  • kkday-member-ci · resources/share/js/hooks/events/ktm/listingPg/useListingPgPageLoad.js:12 · const { currentCase } = useAbTest('destination_filter_test');
  • kkday-member-ci · resources/share/js/hooks/filter/useFilterTracker.js:43 · const { currentCase } = useAbTest('destination_filter_test');
raw
{
  "version": 1,
  "cases": [
    "control",
    "experiment"
  ],
  "rule": "weighted_random_by_kkud",
  "param": {
    "weights": [
      1,
      1
    ]
  }
}
ticket_prod_recommend enabled 2025-11-13 from code (first commit) kkday-member-ci: 1
show hits
  • kkday-member-ci · application/config/ab_test_service.php:148 · 'ticket_prod_recommend' => [
raw
{
  "version": 1,
  "cases": [
    "TicketProdRecommendControl",
    "TicketProdRecommendExperimental"
  ],
  "rule": "weighted_random_by_kkud",
  "param": {
    "weights": [
      1,
      1
    ]
  }
}
list_pg_video enabled 2025-10-13 from code (first commit) kkday-member-ci: 2
show hits
  • kkday-member-ci · application/config/ab_test_service.php:166 · 'list_pg_video' => [
  • kkday-member-ci · resources/share/js/helpers/abTest/productCardVideoTest.js:3 · const AB_TEST_NAME = 'list_pg_video';
raw
{
  "version": 1,
  "cases": [
    "Control",
    "Experimental"
  ],
  "rule": "weighted_random_by_kkud",
  "param": {
    "weights": [
      1,
      1
    ]
  }
}
HomePg_Loop_test enabled 2025-11-03 from code (first commit) kkday-member-ci: 3
show hits
  • kkday-member-ci · application/config/ab_test_service.php:182 · 'HomePg_Loop_test' => [
  • kkday-member-ci · application/controllers/home.php:162 · $this->agent->is_mobile() ? array('HomePg_Loop_test') : array()
  • kkday-member-ci · resources/mobile/js/views/Home.vue:470 · useAbTest('HomePg_Loop_test');
raw
{
  "version": 1,
  "cases": [
    "HomePgLoopctrl",
    "HomePgLoopexp"
  ],
  "rule": "weighted_random_by_kkud",
  "param": {
    "weights": [
      1,
      1
    ]
  }
}
TourTicketLandingEXP enabled 2026-04-28 from code (first commit) kkday-member-ci: 4
show hits
  • kkday-member-ci · application/config/ab_test_service.php:194 · 'TourTicketLandingEXP' => [
  • kkday-member-ci · application/config/ab_test_service.php:208 · 'TourTicketLandingEXP', // KB2CW-3425 (Things to Do Landing Page)
  • kkday-member-ci · application/controllers/api/internal/home.php:48 · $tour_ticket_exp = $this->ab_test_service->get_test_case_value_by_test_name('TourTicketLandingEXP');
  • kkday-member-ci · application/controllers/home.php:115 · $tour_ticket_exp = $this->ab_test_service->get_test_case_value_by_test_name('TourTicketLandingEXP');
raw
{
  "version": 1,
  "cases": [
    "control",
    "experiment"
  ],
  "rule": "weighted_random_by_kkud",
  "param": {
    "weights": [
      1,
      1
    ]
  }
}

Backend (BQ experiment_setting)

KeyStatusStartedCode hitsConfig
enable_group running 2023-10-26 from setting 0 hits
raw
{
  "id": 9,
  "service": "ktm",
  "name": "enable_group",
  "hash_field": "device_id",
  "salt": "salt",
  "cumulative_sum_group_sizes": "[1, 1]",
  "begin_date": "2023-10-26",
  "end_date": null,
  "create_date": "2023-10-26 09:24:35"
}