diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/autopilot/autopilot/OchAutoPilotManager.kt b/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/autopilot/autopilot/OchAutoPilotManager.kt index 3ed811f9c1..b7769f9dd3 100644 --- a/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/autopilot/autopilot/OchAutoPilotManager.kt +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/autopilot/autopilot/OchAutoPilotManager.kt @@ -1,18 +1,32 @@ package com.mogo.och.common.module.manager.autopilot.autopilot import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters +import com.mogo.eagle.core.function.api.autopilot.IMoGoReceiveReceivedAckListener import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager +import com.mogo.eagle.core.function.call.autopilot.CallerReceiveReceivedAckListenerManager +import com.zhjt.mogo.adas.common.MessageType +import com.zhjt.mogo.adas.data.bean.ReceivedAck +import com.zhjt.mogo.adas.data.bean.ReceivedAck.Status -object OchAutoPilotManager { +object OchAutoPilotManager : IMoGoReceiveReceivedAckListener { const val TAG = "OchAutoPilotManager" init { - + CallerReceiveReceivedAckListenerManager.addListener(TAG,this) } @JvmStatic fun startAutoPilot(controlParameters: AutopilotControlParameters?) { + OchAutopilotAnalytics.triggerStartAutopilotParameters(controlParameters) CallerAutoPilotControlManager.startAutoPilot(controlParameters) } + // 启动自驾底盘反馈信息 + override fun onReceiveReceivedAck(receivedAck: ReceivedAck) { + if (receivedAck.messageType==MessageType.TYPE_SEND_SET_AUTOPILOT_MODE_REQ) { + OchAutopilotAnalytics.triggerStartAutopilotParametersAck(receivedAck.toString(),receivedAck.status==Status.NORMAL) + } + } + + } \ No newline at end of file diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/autopilot/autopilot/OchAutopilotAnalytics.kt b/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/autopilot/autopilot/OchAutopilotAnalytics.kt index af7bc4030d..1bfc643440 100644 --- a/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/autopilot/autopilot/OchAutopilotAnalytics.kt +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/manager/autopilot/autopilot/OchAutopilotAnalytics.kt @@ -5,6 +5,7 @@ import com.mogo.commons.debug.DebugConfig import com.mogo.commons.storage.SharedPrefsMgr import com.mogo.commons.utils.MogoAnalyticUtils import com.mogo.eagle.core.data.app.AppConfigInfo +import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger @@ -36,6 +37,38 @@ abstract class OchAutopilotAnalytics { private const val EVENT_PARAM_START_RESULT = "start_autopilot" // true/false private const val EVENT_PARAM_START_FAILURE_CODE = "start_autopilot_failure_code" // 启动自驾失败code private const val EVENT_PARAM_START_FAILURE_MSG = "start_autopilot_failure_msg" // 启动自驾失败原因 + + private const val EVENT_KEY_START_AUTOPILOT_PARAMETERS = "event_key_och_start_autopilot_parameters" + private const val EVENT_PARAM_START_AUTOPILOT_PARAMETERS= "start_autopilot_parameters" // 启动自驾参数 + + private const val EVENT_KEY_START_AUTOPILOT_ACK = "event_key_och_start_autopilot_ack" + private const val EVENT_PARAM_START_AUTOPILOT_ACK= "start_autopilot_parameters_ack" // 启动自驾参数 + private const val EVENT_PARAM_START_AUTOPILOT_ACK_SUCCESS= "start_autopilot_parameters_ack" // 启动自驾参数 + + + fun triggerStartAutopilotParameters(controlParameters: AutopilotControlParameters?){ + val plateNum = AppConfigInfo.plateNumber + val params = HashMap() + params[EVENT_PARAM_SN] = SharedPrefsMgr.getInstance().sn + params[EVENT_PARAM_PLATE_NUM] = if (TextUtils.isEmpty(plateNum)) "" else plateNum + params[EVENT_PARAM_ENV_ONLINE] = DebugConfig.getNetMode() == DebugConfig.NET_MODE_RELEASE + params[EVENT_PARAM_TIME] = DateTimeUtils.getTimeText(System.currentTimeMillis(),DateTimeUtils.yyyy_MM_dd_HH_mm_ss_SSS) + params[EVENT_PARAM_START_AUTOPILOT_PARAMETERS] = "${controlParameters.toString()}_${controlParameters?.autoPilotLine}_routeID:${controlParameters?.routeID}_routeName:${controlParameters?.routeName}" + params[EVENT_PARAM_AUTOPILOTANALYTICS_GROUP] = EVENT_PARAM_AUTOPILOTANALYTICS_GROUP + MogoAnalyticUtils.track(EVENT_KEY_START_AUTOPILOT_PARAMETERS, params) + } + fun triggerStartAutopilotParametersAck(data:String,isSuccess:Boolean){ + val plateNum = AppConfigInfo.plateNumber + val params = HashMap() + params[EVENT_PARAM_SN] = SharedPrefsMgr.getInstance().sn + params[EVENT_PARAM_PLATE_NUM] = if (TextUtils.isEmpty(plateNum)) "" else plateNum + params[EVENT_PARAM_ENV_ONLINE] = DebugConfig.getNetMode() == DebugConfig.NET_MODE_RELEASE + params[EVENT_PARAM_TIME] = DateTimeUtils.getTimeText(System.currentTimeMillis(),DateTimeUtils.yyyy_MM_dd_HH_mm_ss_SSS) + params[EVENT_PARAM_START_AUTOPILOT_ACK] = data + params[EVENT_PARAM_START_AUTOPILOT_ACK_SUCCESS] = isSuccess + params[EVENT_PARAM_AUTOPILOTANALYTICS_GROUP] = EVENT_PARAM_AUTOPILOTANALYTICS_GROUP + MogoAnalyticUtils.track(EVENT_KEY_START_AUTOPILOT_ACK, params) + } } @@ -160,9 +193,36 @@ abstract class OchAutopilotAnalytics { MogoAnalyticUtils.track(getEventKeyClickStartAutopilot(), params) } - abstract fun getEventKeyStartService(): String + // 无人化taxi event_key_unmanned_taxi_start_service * + // bus event_key_och_bus_start_service * + // shuttle event_key_och_bus_start_service * + // charter event_key_och_charter_start_service + // taxi event_key_och_taxi_start_service * + // 无人化taxiPa event_key_unmanned_taxi_start_service + abstract fun getEventKeyStartService(): String + + // 无人化taxi event_key_unmanned_taxi_restart_autopilot * + // bus event_key_och_bus_restart_autopilot * + // shuttle event_key_och_bus_restart_autopilot * + // charter event_key_och_charter_restart_autopilot + // taxi event_key_och_taxi_restart_autopilot * + // 无人化taxiPa event_key_unmanned_taxi_restart_autopilot abstract fun getEventKeyRestartService(): String + + // 无人化taxi event_key_och_taxi_ap_unable_start_reason * + // bus event_key_och_bus_ap_unable_start_reason * + // shuttle event_key_och_bus_ap_unable_start_reason * + // charter event_key_och_charter_ap_unable_start_reason + // taxi event_key_och_taxi_ap_unable_start_reason * + // 无人化taxiPa event_key_och_taxi_ap_unable_start_reason abstract fun getEventKeyApUnableStartReason(): String + + // 无人化taxi event_key_unmanned_taxi_click_start_autopilot + // bus event_key_och_bus_click_start_autopilot + // shuttle event_key_och_bus_click_start_autopilot + // charter event_key_och_charter_click_start_autopilot + // taxi event_key_och_taxi_click_start_autopilot + // 无人化taxiPa event_key_och_taxi_passenger_click_start_autopilot abstract fun getEventKeyClickStartAutopilot(): String } \ No newline at end of file diff --git a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/model/AutopilotManager.kt b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/model/AutopilotManager.kt index 7e5c4fba8b..02494c6afb 100644 --- a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/model/AutopilotManager.kt +++ b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/model/AutopilotManager.kt @@ -9,10 +9,8 @@ import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager -import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant -import com.mogo.eagle.core.utilcode.util.AppStateManager import com.mogo.eagle.core.utilcode.util.StringUtils import com.mogo.eagle.core.utilcode.util.ToastUtils import com.mogo.och.common.module.network.OchCommonServiceCallback @@ -44,6 +42,9 @@ object AutopilotManager : IOchAutopilotStatusListener { fun startAutopilot():String { + + TaxiPassengerAnalyticsManager.triggerClickStartAutopilotTime(System.currentTimeMillis()) + if (!checkCurrentOCHOrder()) { CallerLogger.e( SceneConstant.M_TAXI_P + TAG, @@ -95,6 +96,7 @@ object AutopilotManager : IOchAutopilotStatusListener { TaxiPassengerAnalyticsManager.triggerUnableStartAPReasonEvent( TaxiPassengerModel.currentOCHOrder!!.startSiteAddr, TaxiPassengerModel.currentOCHOrder!!.endSiteAddr, + TaxiPassengerModel.currentOCHOrder!!.lineId.toString(), TaxiPassengerModel.currentOCHOrder!!.orderNo, OCHAdasAbilityManager.getInstance().autopilotUnAbilityReason ) @@ -122,9 +124,15 @@ object AutopilotManager : IOchAutopilotStatusListener { + " ,startSiteName=" + TaxiPassengerModel.currentOCHOrder!!.startSiteAddr + " ,endSiteName=" + TaxiPassengerModel.currentOCHOrder!!.endSiteAddr ) - TaxiPassengerAnalyticsManager.triggerStartAutopilotEvent(false, false, TaxiPassengerModel.currentOCHOrder!!.startSiteAddr, - TaxiPassengerModel.currentOCHOrder!!.endSiteAddr, TaxiPassengerModel.currentOCHOrder!!.orderNo, - TaxiPassengerModel.currentOCHOrder!!.lineId) + TaxiPassengerAnalyticsManager.triggerStartAutopilotEvent( + false, + false, + TaxiPassengerModel.currentOCHOrder!!.startSiteAddr, + TaxiPassengerModel.currentOCHOrder!!.endSiteAddr, + TaxiPassengerModel.currentOCHOrder!!.orderNo.toInt(), + TaxiPassengerModel.currentOCHOrder!!.lineId.toString(), + System.currentTimeMillis() + ) return "" } @@ -207,8 +215,9 @@ object AutopilotManager : IOchAutopilotStatusListener { true, TaxiPassengerModel.currentOCHOrder!!.startSiteAddr, TaxiPassengerModel.currentOCHOrder!!.endSiteAddr, - TaxiPassengerModel.currentOCHOrder!!.orderNo, - TaxiPassengerModel.currentOCHOrder!!.lineId + TaxiPassengerModel.currentOCHOrder!!.orderNo.toInt(), + TaxiPassengerModel.currentOCHOrder!!.lineId.toString(), + System.currentTimeMillis() ) //startServicePilotDone() } diff --git a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.kt b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.kt index f9388df438..0c41cbf42e 100644 --- a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.kt +++ b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.kt @@ -232,7 +232,7 @@ object TaxiPassengerModel { private val mAdasStartFailureListener: OchAdasStartFailureCallback = object : OchAdasStartFailureCallback { override fun onStartAutopilotFailure(startFailedCode: String, startFailedMessage: String) { - TaxiPassengerAnalyticsManager.triggerStartAutopilotFailureEventByAdas(startFailedCode, startFailedMessage) + TaxiPassengerAnalyticsManager.triggerStartAutopilotFailureEventByAdas(startFailedCode, startFailedMessage,System.currentTimeMillis()) } override fun brakeStatusChanged(isBrakeAvailable: Boolean) { diff --git a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/utils/TaxiPassengerAnalyticsManager.kt b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/utils/TaxiPassengerAnalyticsManager.kt index d6198979ed..8049d7fc68 100644 --- a/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/utils/TaxiPassengerAnalyticsManager.kt +++ b/OCH/taxi/passenger/src/main/java/com/mogo/och/taxi/passenger/utils/TaxiPassengerAnalyticsManager.kt @@ -1,125 +1,33 @@ package com.mogo.och.taxi.passenger.utils -import android.text.TextUtils -import com.mogo.commons.debug.DebugConfig -import com.mogo.commons.storage.SharedPrefsMgr -import com.mogo.commons.utils.MogoAnalyticUtils -import com.mogo.eagle.core.data.app.AppConfigInfo -import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener -import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.e -import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_TAXI_P -import com.mogo.eagle.core.utilcode.util.DateTimeUtils -import com.mogo.och.common.module.manager.autopilot.OCHAdasAbilityManager -import com.mogo.och.common.module.utils.RxUtils +import com.mogo.och.common.module.manager.autopilot.autopilot.OchAutopilotAnalytics import com.mogo.och.taxi.passenger.constant.TaxiPassengerConst -import io.reactivex.disposables.Disposable /** * OCH Taxi埋点工具 * * Created on 2022/3/24 */ -object TaxiPassengerAnalyticsManager { +object TaxiPassengerAnalyticsManager: OchAutopilotAnalytics() { - private var mStartAutopilotKey: String? = null - private val mStartAutopilotParams = HashMap() - - var startAutopiloTimeOut: Disposable? = null - - - fun triggerStartAutopilotFailureEventByAdas(failCode: String, failMsg: String) { - RxUtils.disposeSubscribe(startAutopiloTimeOut) - triggerStartAutopilotFailureEvent(failCode, failMsg) + override fun getEventKeyStartService(): String { + return TaxiPassengerConst.EVENT_KEY_START_SERVICE } - private fun clearStartAutopilotParams() { - mStartAutopilotParams.clear() + override fun getEventKeyRestartService(): String { + return TaxiPassengerConst.EVENT_KEY_RESTART_AUTOPILOT } - /** - * ① 15s超时调用 - * ② 底盘明确给出错误原因 - * 启动自驾失败写日志 - */ - private fun triggerStartAutopilotFailureEvent(failCode: String, failMsg: String) { - if (mStartAutopilotParams.isEmpty()) return - e(M_TAXI_P + "triggerStartAutopilotFailureEvent", failMsg) - if (CallerAutoPilotStatusListenerManager.getState() != IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING) { - mStartAutopilotParams[TaxiPassengerConst.EVENT_PARAM_START_FAILURE_CODE] = failCode - mStartAutopilotParams[TaxiPassengerConst.EVENT_PARAM_START_FAILURE_MSG] = failMsg - } - - mStartAutopilotParams[TaxiPassengerConst.EVENT_PARAM_MAP_ORIGINAL_DATA] = - OCHAdasAbilityManager.getInstance().originalData - mStartAutopilotParams[TaxiPassengerConst.EVENT_PARAM_AUTOPILOT_STATE] = - CallerAutoPilotStatusListenerManager.getState() - mStartAutopilotParams[TaxiPassengerConst.EVENT_PARAM_START_RESULT] = - CallerAutoPilotStatusListenerManager.getState() == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING - - MogoAnalyticUtils.track(mStartAutopilotKey, mStartAutopilotParams) - clearStartAutopilotParams() //清空参数数据,防止误传 + override fun getEventKeyApUnableStartReason(): String { + return TaxiPassengerConst.EVENT_KEY_AP_UNABLE_START_REASON } - /** - * - * ① 自检完成后 启动自驾 - * ② 自驾由其他状态转换到自驾中回调 - * 触发'开启自动驾驶'埋点流程 - * 开启自动驾驶,15s内成功则发送成功埋点,否则发送失败埋点 - * @param restart false(点击'开始服务'启动)/true(接管后点击'自动驾驶'按钮启动) - * @param send 是否直接发送埋点(15s内开启成功则直接发送成功埋点) - */ - fun triggerStartAutopilotEvent(restart: Boolean, send: Boolean, startName: String, endName: String, - orderNo: String, lineId: Long) { - mStartAutopilotKey = if (restart) TaxiPassengerConst.EVENT_KEY_RESTART_AUTOPILOT else TaxiPassengerConst.EVENT_KEY_START_SERVICE - - if (send) { - if (mStartAutopilotParams.isEmpty()) return - // 开启成功,取消失败定时任务 - mStartAutopilotParams[TaxiPassengerConst.EVENT_PARAM_START_FAILURE_CODE] = "" - mStartAutopilotParams[TaxiPassengerConst.EVENT_PARAM_START_FAILURE_MSG] = "" - // 取消15s超时 - RxUtils.disposeSubscribe(startAutopiloTimeOut) - mStartAutopilotParams[TaxiPassengerConst.EVENT_PARAM_START_RESULT] = true - MogoAnalyticUtils.track(mStartAutopilotKey, mStartAutopilotParams) - clearStartAutopilotParams() //清空参数数据,防止误传 - } else { - val plateNum = AppConfigInfo.plateNumber - mStartAutopilotParams[TaxiPassengerConst.EVENT_PARAM_SN] = SharedPrefsMgr.getInstance().sn - mStartAutopilotParams[TaxiPassengerConst.EVENT_PARAM_PLATE_NUM] = if (TextUtils.isEmpty(plateNum)) "" else plateNum - mStartAutopilotParams[TaxiPassengerConst.EVENT_PARAM_ENV_ONLINE] = DebugConfig.getNetMode() == DebugConfig.NET_MODE_RELEASE - mStartAutopilotParams[TaxiPassengerConst.EVENT_PARAM_TIME] = DateTimeUtils.getTimeText(DateTimeUtils.yyyy_MM_dd_HH_mm_ss) - mStartAutopilotParams[TaxiPassengerConst.EVENT_PARAM_START_NAME] = startName - mStartAutopilotParams[TaxiPassengerConst.EVENT_PARAM_END_NAME] = endName - mStartAutopilotParams[TaxiPassengerConst.EVENT_PARAM_ORDER_NUMBER] = orderNo - mStartAutopilotParams[TaxiPassengerConst.EVENT_PARAM_LINE_ID] = lineId - startAutopiloTimeOut = RxUtils.createSubscribeOnOwnThread(TaxiPassengerConst.LOOP_PERIOD_15S) { - // 15s内未开启,上报失败埋点 - triggerStartAutopilotFailureEvent("", "15s后app等待超时") - } - } + override fun getEventKeyClickStartAutopilot(): String { + return "event_key_unmanned_taxi_passenger_click_start_autopilot" } - /** - * 触发"无法开启自驾已知异常"埋点 - * @param startName - * @param endName - * @param orderNo - */ - fun triggerUnableStartAPReasonEvent(startName: String, endName: String, orderNo: String, reason: String) { - val plateNum = AppConfigInfo.plateNumber - val params = HashMap() - params[TaxiPassengerConst.EVENT_PARAM_SN] = SharedPrefsMgr.getInstance().sn - params[TaxiPassengerConst.EVENT_PARAM_PLATE_NUM] = if (TextUtils.isEmpty(plateNum)) "" else plateNum - params[TaxiPassengerConst.EVENT_PARAM_ENV_ONLINE] = DebugConfig.getNetMode() == DebugConfig.NET_MODE_RELEASE - params[TaxiPassengerConst.EVENT_PARAM_TIME] = DateTimeUtils.getTimeText(DateTimeUtils.yyyy_MM_dd_HH_mm_ss) - params[TaxiPassengerConst.EVENT_PARAM_START_NAME] = startName - params[TaxiPassengerConst.EVENT_PARAM_END_NAME] = endName - params[TaxiPassengerConst.EVENT_PARAM_ORDER_NUMBER] = orderNo - params[TaxiPassengerConst.EVENT_PARAM_UNABLE_START_REASON] = reason - MogoAnalyticUtils.track(TaxiPassengerConst.EVENT_KEY_AP_UNABLE_START_REASON, params) - } + + } \ No newline at end of file diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/utils/TaxiAnalyticsManager.java b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/utils/TaxiAnalyticsManager.java index ae3f585f36..80174d3398 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/utils/TaxiAnalyticsManager.java +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/unmanned/taxi/utils/TaxiAnalyticsManager.java @@ -14,7 +14,7 @@ public class TaxiAnalyticsManager extends OchAutopilotAnalytics { // 埋点key:开启自动驾驶前已识别的异常,会导致无法开启自驾 private static final String EVENT_KEY_AP_UNABLE_START_REASON = "event_key_och_taxi_ap_unable_start_reason"; // 埋点key:点击启动自驾 - private static final String EVENT_KEY_CLICK_START_AUTOPILOT = "event_key_och_shuttle_click_start_autopilot"; + private static final String EVENT_KEY_CLICK_START_AUTOPILOT = "event_key_och_unmanned_taxi_click_start_autopilot"; // 埋点key:接管后点击'自动驾驶'按钮启动 private static final String EVENT_KEY_RESTART_AUTOPILOT = "event_key_unmanned_taxi_restart_autopilot"; // 埋点key:开始服务开启自动驾驶(成功/失败) diff --git a/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/unmanned/passenger/model/AutopilotManager.kt b/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/unmanned/passenger/model/AutopilotManager.kt index d7f0dd1487..98c7c67ffb 100644 --- a/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/unmanned/passenger/model/AutopilotManager.kt +++ b/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/unmanned/passenger/model/AutopilotManager.kt @@ -23,7 +23,6 @@ import com.mogo.och.unmanned.passenger.bean.TaxiPassengerBaseRespBean import com.mogo.och.unmanned.passenger.constant.TaxiPassengerConst import com.mogo.och.unmanned.passenger.network.TaxiPassengerServiceManager import com.mogo.och.unmanned.passenger.utils.TaxiPassengerAnalyticsManager -import java.lang.StringBuilder object AutopilotManager : IOchAutopilotStatusListener { @@ -42,6 +41,9 @@ object AutopilotManager : IOchAutopilotStatusListener { fun startAutopilot():String { + + TaxiPassengerAnalyticsManager.triggerClickStartAutopilotTime(System.currentTimeMillis()) + if (!checkCurrentOCHOrder()) { CallerLogger.e( SceneConstant.M_TAXI_P + TAG, @@ -86,6 +88,7 @@ object AutopilotManager : IOchAutopilotStatusListener { TaxiPassengerAnalyticsManager.triggerUnableStartAPReasonEvent( TaxiPassengerModel.currentOCHOrder!!.orderStartSite.siteName, TaxiPassengerModel.currentOCHOrder!!.orderEndSite.siteName, + TaxiPassengerModel.currentOCHOrder!!.orderLine.toString(), TaxiPassengerModel.currentOCHOrder!!.orderNo, OCHAdasAbilityManager.getInstance().autopilotUnAbilityReason ) @@ -112,8 +115,9 @@ object AutopilotManager : IOchAutopilotStatusListener { false, TaxiPassengerModel.currentOCHOrder!!.orderStartSite.siteName, TaxiPassengerModel.currentOCHOrder!!.orderEndSite.siteName, - TaxiPassengerModel.currentOCHOrder!!.orderNo, - TaxiPassengerModel.currentLineId + TaxiPassengerModel.currentOCHOrder!!.orderNo.toInt(), + TaxiPassengerModel.currentLineId.toString(), + System.currentTimeMillis() ) needSpeakByStartAutopilot = true return "" @@ -202,8 +206,9 @@ object AutopilotManager : IOchAutopilotStatusListener { true, TaxiPassengerModel.currentOCHOrder!!.orderStartSite.siteName, TaxiPassengerModel.currentOCHOrder!!.orderEndSite.siteName, - TaxiPassengerModel.currentOCHOrder!!.orderNo, - TaxiPassengerModel.currentLineId + TaxiPassengerModel.currentOCHOrder!!.orderNo.toInt(), + TaxiPassengerModel.currentLineId.toString(), + System.currentTimeMillis() ) if(needSpeakByStartAutopilot) { VoiceNotice.showNotice("坐稳扶好,我们出发咯!", AIAssist.LEVEL2) diff --git a/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/unmanned/passenger/model/TaxiPassengerModel.kt b/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/unmanned/passenger/model/TaxiPassengerModel.kt index 1d956f25ea..b8280ede11 100644 --- a/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/unmanned/passenger/model/TaxiPassengerModel.kt +++ b/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/unmanned/passenger/model/TaxiPassengerModel.kt @@ -345,7 +345,8 @@ object TaxiPassengerModel { ) { TaxiPassengerAnalyticsManager.triggerStartAutopilotFailureEventByAdas( startFailedCode, - startFailedMessage + startFailedMessage, + System.currentTimeMillis() ) } diff --git a/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/unmanned/passenger/utils/TaxiPassengerAnalyticsManager.kt b/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/unmanned/passenger/utils/TaxiPassengerAnalyticsManager.kt index 99d2234f4b..49e534ae97 100644 --- a/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/unmanned/passenger/utils/TaxiPassengerAnalyticsManager.kt +++ b/OCH/taxi/unmanned-passenger/src/main/java/com/mogo/och/unmanned/passenger/utils/TaxiPassengerAnalyticsManager.kt @@ -1,125 +1,29 @@ package com.mogo.och.unmanned.passenger.utils -import android.text.TextUtils -import com.mogo.commons.debug.DebugConfig -import com.mogo.commons.storage.SharedPrefsMgr -import com.mogo.commons.utils.MogoAnalyticUtils -import com.mogo.eagle.core.data.app.AppConfigInfo -import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener -import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.e -import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_TAXI_P -import com.mogo.eagle.core.utilcode.util.DateTimeUtils -import com.mogo.och.common.module.manager.autopilot.OCHAdasAbilityManager -import com.mogo.och.common.module.utils.RxUtils -import com.mogo.och.unmanned.passenger.constant.TaxiPassengerConst -import io.reactivex.disposables.Disposable +import com.mogo.och.common.module.manager.autopilot.autopilot.OchAutopilotAnalytics /** * OCH Taxi埋点工具 * * Created on 2022/3/24 */ -object TaxiPassengerAnalyticsManager { +object TaxiPassengerAnalyticsManager: OchAutopilotAnalytics() { - - private var mStartAutopilotKey: String? = null - private val mStartAutopilotParams = HashMap() - - var startAutopiloTimeOut: Disposable? = null - - - fun triggerStartAutopilotFailureEventByAdas(failCode: String, failMsg: String) { - RxUtils.disposeSubscribe(startAutopiloTimeOut) - triggerStartAutopilotFailureEvent(failCode, failMsg) + override fun getEventKeyStartService(): String { + return "event_key_unmanned_taxi_start_service" } - private fun clearStartAutopilotParams() { - mStartAutopilotParams.clear() + override fun getEventKeyRestartService(): String { + return "event_key_unmanned_taxi_restart_autopilot" } - /** - * ① 15s超时调用 - * ② 底盘明确给出错误原因 - * 启动自驾失败写日志 - */ - private fun triggerStartAutopilotFailureEvent(failCode: String, failMsg: String) { - if (mStartAutopilotParams.isEmpty()) return - e(M_TAXI_P + "triggerStartAutopilotFailureEvent", failMsg) - if (CallerAutoPilotStatusListenerManager.getState() != IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING) { - mStartAutopilotParams[TaxiPassengerConst.EVENT_PARAM_START_FAILURE_CODE] = failCode - mStartAutopilotParams[TaxiPassengerConst.EVENT_PARAM_START_FAILURE_MSG] = failMsg - } - - mStartAutopilotParams[TaxiPassengerConst.EVENT_PARAM_MAP_ORIGINAL_DATA] = - OCHAdasAbilityManager.getInstance().originalData - mStartAutopilotParams[TaxiPassengerConst.EVENT_PARAM_AUTOPILOT_STATE] = - CallerAutoPilotStatusListenerManager.getState() - mStartAutopilotParams[TaxiPassengerConst.EVENT_PARAM_START_RESULT] = - CallerAutoPilotStatusListenerManager.getState() == IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING - - MogoAnalyticUtils.track(mStartAutopilotKey, mStartAutopilotParams) - clearStartAutopilotParams() //清空参数数据,防止误传 + override fun getEventKeyApUnableStartReason(): String { + return "event_key_och_taxi_ap_unable_start_reason" } - /** - * - * ① 自检完成后 启动自驾 - * ② 自驾由其他状态转换到自驾中回调 - * 触发'开启自动驾驶'埋点流程 - * 开启自动驾驶,15s内成功则发送成功埋点,否则发送失败埋点 - * @param restart false(点击'开始服务'启动)/true(接管后点击'自动驾驶'按钮启动) - * @param send 是否直接发送埋点(15s内开启成功则直接发送成功埋点) - */ - fun triggerStartAutopilotEvent(restart: Boolean, send: Boolean, startName: String, endName: String, - orderNo: String, lineId: Long?) { - mStartAutopilotKey = if (restart) TaxiPassengerConst.EVENT_KEY_RESTART_AUTOPILOT else TaxiPassengerConst.EVENT_KEY_START_SERVICE - - if (send) { - if (mStartAutopilotParams.isEmpty()) return - // 开启成功,取消失败定时任务 - mStartAutopilotParams[TaxiPassengerConst.EVENT_PARAM_START_FAILURE_CODE] = "" - mStartAutopilotParams[TaxiPassengerConst.EVENT_PARAM_START_FAILURE_MSG] = "" - // 取消15s超时 - RxUtils.disposeSubscribe(startAutopiloTimeOut) - mStartAutopilotParams[TaxiPassengerConst.EVENT_PARAM_START_RESULT] = true - MogoAnalyticUtils.track(mStartAutopilotKey, mStartAutopilotParams) - clearStartAutopilotParams() //清空参数数据,防止误传 - } else { - val plateNum = AppConfigInfo.plateNumber - mStartAutopilotParams[TaxiPassengerConst.EVENT_PARAM_SN] = SharedPrefsMgr.getInstance().sn - mStartAutopilotParams[TaxiPassengerConst.EVENT_PARAM_PLATE_NUM] = if (TextUtils.isEmpty(plateNum)) "" else plateNum - mStartAutopilotParams[TaxiPassengerConst.EVENT_PARAM_ENV_ONLINE] = DebugConfig.getNetMode() == DebugConfig.NET_MODE_RELEASE - mStartAutopilotParams[TaxiPassengerConst.EVENT_PARAM_TIME] = DateTimeUtils.getTimeText(DateTimeUtils.yyyy_MM_dd_HH_mm_ss) - mStartAutopilotParams[TaxiPassengerConst.EVENT_PARAM_START_NAME] = startName - mStartAutopilotParams[TaxiPassengerConst.EVENT_PARAM_END_NAME] = endName - mStartAutopilotParams[TaxiPassengerConst.EVENT_PARAM_ORDER_NUMBER] = orderNo - mStartAutopilotParams[TaxiPassengerConst.EVENT_PARAM_LINE_ID] = lineId ?: 0 - startAutopiloTimeOut = RxUtils.createSubscribeOnOwnThread(TaxiPassengerConst.LOOP_PERIOD_15S) { - // 15s内未开启,上报失败埋点 - triggerStartAutopilotFailureEvent("", "15s后app等待超时") - } - } + override fun getEventKeyClickStartAutopilot(): String { + return "event_key_och_taxi_passenger_click_start_autopilot" } - /** - * 触发"无法开启自驾已知异常"埋点 - * @param startName - * @param endName - * @param orderNo - */ - fun triggerUnableStartAPReasonEvent(startName: String, endName: String, orderNo: String, reason: String) { - val plateNum = AppConfigInfo.plateNumber - val params = HashMap() - params[TaxiPassengerConst.EVENT_PARAM_SN] = SharedPrefsMgr.getInstance().sn - params[TaxiPassengerConst.EVENT_PARAM_PLATE_NUM] = if (TextUtils.isEmpty(plateNum)) "" else plateNum - params[TaxiPassengerConst.EVENT_PARAM_ENV_ONLINE] = DebugConfig.getNetMode() == DebugConfig.NET_MODE_RELEASE - params[TaxiPassengerConst.EVENT_PARAM_TIME] = DateTimeUtils.getTimeText(DateTimeUtils.yyyy_MM_dd_HH_mm_ss) - params[TaxiPassengerConst.EVENT_PARAM_START_NAME] = startName - params[TaxiPassengerConst.EVENT_PARAM_END_NAME] = endName - params[TaxiPassengerConst.EVENT_PARAM_ORDER_NUMBER] = orderNo - params[TaxiPassengerConst.EVENT_PARAM_UNABLE_START_REASON] = reason - MogoAnalyticUtils.track(TaxiPassengerConst.EVENT_KEY_AP_UNABLE_START_REASON, params) - } } \ No newline at end of file