const EVENT_LABELS: Record = { screen_view: "打开页面", voice_clone_entry_tap: "进入音色克隆", avatar_selected: "选择数字人形象", call_page_opened: "进入陪伴通话", base_config_download_started: "开始准备基础资源", base_config_download_completed: "基础资源准备完成", base_config_download_failed: "基础资源准备失败", avatar_download_started: "开始准备数字人资源", avatar_download_completed: "数字人资源准备完成", avatar_download_failed: "数字人资源准备失败", clone_avatar_selected: "选择克隆形象", voice_sample_discarded: "删除录音样本", voice_rerecord_requested: "重新录音", voice_record_started: "开始录音", voice_record_start_failed: "录音启动失败", voice_record_too_short: "录音时长过短", voice_record_finished: "录音完成", voice_record_stop_failed: "录音结束失败", voice_clone_create_started: "开始创建专属音色", voice_clone_create_succeeded: "专属音色创建成功", voice_clone_create_failed: "专属音色创建失败", voice_clone_chat_started: "开始体验专属音色", call_activity_opened: "打开通话页面", ai_conversation_unavailable: "陪伴通话暂不可用", clone_voice_unavailable: "专属音色暂不可用", ai_conversation_connecting: "陪伴通话连接中", ai_conversation_connected: "陪伴通话已连接", ai_conversation_disconnected: "陪伴通话已断开", ai_conversation_error: "陪伴通话异常", user_transcript_received: "收到用户语音文本", assistant_transcript_completed: "陪伴回复已生成", assistant_response_done: "陪伴回复结束", ai_conversation_stopped: "陪伴通话已结束", clone_tts_started: "开始播放专属音色", clone_tts_finished: "专属音色播放完成", clone_tts_error: "专属音色播放失败", camera_enabled: "打开摄像头", camera_disabled: "关闭摄像头", camera_capture_error: "摄像头采集失败", }; const PATH_LABELS: Record = { "/android/main": "首页", "/android/call": "陪伴通话", "/android/voice-clone-setup": "音色克隆", "(未标记页面)": "未标记功能", }; function humanizeFallback(value: string) { const normalized = value.trim().replace(/[_-]+/g, " "); return normalized || "未命名记录"; } export function describeAnalyticsEventName(name: string) { return EVENT_LABELS[name] ?? humanizeFallback(name); } export function describeAnalyticsPath(pathname: string | null | undefined) { if (!pathname) { return "未标记功能"; } if (PATH_LABELS[pathname]) { return PATH_LABELS[pathname]; } if (pathname.startsWith("/android/")) { const label = pathname.replace("/android/", "").replace(/-/g, " ").trim(); return label ? `Android 功能 ${label}` : "Android 功能"; } return pathname; } export function describeAnalyticsType(type: string) { switch (type.toLowerCase()) { case "navigation": return "页面浏览"; case "interaction": return "操作记录"; case "error": return "异常提醒"; default: return humanizeFallback(type); } }