[fea]
添加启动自驾埋点
添加启动自驾底盘反馈埋点
taxi乘客屏启动自驾埋点收拢
This commit is contained in:
yakunyang
2024-06-12 15:23:46 +08:00
parent 33aecf33f7
commit 26f8349cb9
9 changed files with 129 additions and 228 deletions

View File

@@ -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)
}
}
}

View File

@@ -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<String, Any>()
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<String, Any>()
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
}

View File

@@ -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()
}

View File

@@ -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) {

View File

@@ -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<String, Any>()
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<String, Any>()
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)
}
}

View File

@@ -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开始服务开启自动驾驶成功/失败)

View File

@@ -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)

View File

@@ -345,7 +345,8 @@ object TaxiPassengerModel {
) {
TaxiPassengerAnalyticsManager.triggerStartAutopilotFailureEventByAdas(
startFailedCode,
startFailedMessage
startFailedMessage,
System.currentTimeMillis()
)
}

View File

@@ -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<String, Any>()
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<String, Any>()
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)
}
}