enhance gtag name and args

This commit is contained in:
geekgeekrun
2025-04-22 00:18:45 +08:00
parent 011c22e0fe
commit 954553d8d8
14 changed files with 55 additions and 53 deletions

View File

@@ -209,7 +209,7 @@ export const sendGptContent = async (page: Page, chatRecords) => {
rawMarkdownText.replace(/^```json/m, '').replace(/```$/m, '')
)?.response
} catch (err) {
gtag('encounter_error_when_parse_llm_respond_text', {
gtag('encounter_error_when_parse_llm_text', {
err,
model: llmConfig?.model,
providerCompleteApiUrl: llmConfig?.providerCompleteApiUrl

View File

@@ -297,16 +297,16 @@ const mainLoop = async () => {
.filter((it) => it.bizType !== 101 && it.isSelf)
.slice(-recentMessageQuantityForLlm)
await sendGptContent(pageMapByName.boss!, messageListForGpt)
gtag('read_no_reply_reminder_llm_content_sent')
gtag('rnrr_llm_content_sent')
} catch (err) {
console.log(err)
if (rechatLlmFallback === RECHAT_LLM_FALLBACK.SEND_LOOK_FORWARD_EMOTION) {
await sendLookForwardReplyEmotion(pageMapByName.boss!)
gtag('read_no_reply_reminder_look_forward_reply_emotion_sent', {
gtag('rnrr_look_forward_reply_emotion_sent', {
fallback: true
})
} else {
gtag('read_no_reply_reminder_encounter_error', {
gtag('rnrr_encounter_error', {
error: err
})
throw err
@@ -314,7 +314,7 @@ const mainLoop = async () => {
}
} else {
await sendLookForwardReplyEmotion(pageMapByName.boss!)
gtag('read_no_reply_reminder_look_forward_reply_emotion_sent')
gtag('rnrr_look_forward_reply_emotion_sent')
}
} else {
cursorToContinueFind += 1

View File

@@ -1,4 +1,5 @@
import buildInfo from '../../../common/build-info.json'
import os from 'node:os'
type LowercaseLetter =
| 'a'
@@ -55,6 +56,7 @@ function getCommonParams() {
return {
app_version: buildInfo.version,
app_build_hash: buildInfo.buildHash,
os_info: `${os.type()} | ${os.release()} | ${os.arch()}`,
t: Number(new Date())
}
}

View File

@@ -27,7 +27,7 @@
<el-tooltip
content="待对比条目少于2个"
:disabled="tableProps.length > 1"
@show="gtagRenderer('tooltip_shown_about_compare_item_no_enough')"
@show="gtagRenderer('tooltip_show_about_lake_of_compare_item')"
>
<el-radio v-model="diffPivot" :label="item.value" :disabled="tableProps.length <= 1">作为diff基准</el-radio>
</el-tooltip>

View File

@@ -67,7 +67,7 @@ const processTasks = async () => {
})
await p
} catch {
gtagRenderer('encounter_error_when_downloading_dependencies')
gtagRenderer('encounter_error_when_download_deps')
await ElMessageBox.confirm('需要重试吗?', '核心组件下载失败', {
closeOnClickModal: false,
closeOnPressEscape: false,
@@ -76,11 +76,11 @@ const processTasks = async () => {
cancelButtonText: '退出程序'
})
.then(() => {
gtagRenderer('start_retry_download_dependencies')
gtagRenderer('start_retry_download_deps')
processTasks()
})
.catch(() => {
gtagRenderer('cancel_download_dependencies_and_exit')
gtagRenderer('cancel_download_deps_and_exit')
promiseList.length = 0
electron.ipcRenderer.invoke('exit-app-immediately')
})

View File

@@ -87,7 +87,7 @@
font-size-inherit
@click="
() => {
gtagRenderer('replace_inputted_cookie_by_collected_cookie')
gtagRenderer('replace_inputted_cookie_by_collected')
fillCollectedCookie()
}
"
@@ -144,13 +144,13 @@ const formRules = {
`JSON格式无效 - 存在语法错误: ${err.message}建议使用EditThisCookie扩展程序进行复制。`
)
)
gtagRenderer('wrong_cookie_format_for_json_syntax-error')
gtagRenderer('wrong_cookie_format_json_syntax_error')
return
}
if (!checkCookieListFormat(JSON.parse(formContent.value.collectedCookies))) {
cb(new Error(`Cookie格式无效 - 部分字段缺失建议使用EditThisCookie扩展程序进行复制。`))
gtagRenderer('wrong_cookie_format_for_field_loss')
gtagRenderer('wrong_cookie_format_field_loss')
return
}
cb()
@@ -168,7 +168,7 @@ const handleCookieCollected = (_, payload) => {
fillCollectedCookie()
gtagRenderer('cookie_collected_and_auto_filled')
} else {
gtagRenderer('cookie_collected_but_user_has_changed_input')
gtagRenderer('cookie_collected_after_changed_input')
}
}
const fillCollectedCookie = () => {

View File

@@ -24,19 +24,19 @@ const { ipcRenderer } = electron
const router = useRouter()
const handleStopButtonClick = async () => {
gtagRenderer('geek_auto_start_chat_with_boss_stop_button_clicked')
gtagRenderer('gascwb_stop_button_clicked')
ipcRenderer.invoke('stop-geek-auto-start-chat-with-boss')
}
const isStopping = ref(false)
const handleStopping = () => {
gtagRenderer('geek_auto_start_chat_with_boss_become_stopping')
gtagRenderer('gascwb_become_stopping')
isStopping.value = true
}
ipcRenderer.once('geek-auto-start-chat-with-boss-stopping', handleStopping)
const handleStopped = () => {
gtagRenderer('geek_auto_start_chat_with_boss_become_stopped')
gtagRenderer('gascwb_become_stopped')
router.replace('/main-layout/GeekAutoStartChatWithBoss')
}
ipcRenderer.once('geek-auto-start-chat-with-boss-stopped', handleStopped)
@@ -51,14 +51,14 @@ onMounted(async () => {
await electron.ipcRenderer.invoke('run-geek-auto-start-chat-with-boss')
} catch (err) {
if (err instanceof Error && err.message.includes('NEED_TO_CHECK_RUNTIME_DEPENDENCIES')) {
gtagRenderer('geek_auto_start_chat_with_boss_cannot_run_due_to_corrupt')
gtagRenderer('gascwb_cannot_run_for_corrupt')
ElMessage.error({
message: `核心组件损坏,正在尝试修复`
})
router.replace('/')
}
console.error(err)
gtagRenderer('geek_auto_start_chat_with_boss_cannot_run_due_to_unknown_error', { err })
gtagRenderer('gascwb_cannot_run_for_unknown_error', { err })
}
})
</script>

View File

@@ -22,19 +22,19 @@ const { ipcRenderer } = electron
const router = useRouter()
const handleStopButtonClick = async () => {
gtagRenderer('read_no_reply_reminder_stop_button_clicked')
gtagRenderer('rnrr_stop_button_clicked')
ipcRenderer.invoke('stop-geek-auto-start-chat-with-boss')
}
const isStopping = ref(false)
const handleStopping = () => {
gtagRenderer('read_no_reply_reminder_become_stopping')
gtagRenderer('rnrr_become_stopping')
isStopping.value = true
}
ipcRenderer.once('geek-auto-start-chat-with-boss-stopping', handleStopping)
const handleStopped = () => {
gtagRenderer('read_no_reply_reminder_become_stopped')
gtagRenderer('rnrr_become_stopped')
router.replace('/main-layout/ReadNoReplyReminder')
}
ipcRenderer.once('geek-auto-start-chat-with-boss-stopped', handleStopped)
@@ -49,14 +49,14 @@ onMounted(async () => {
await electron.ipcRenderer.invoke('run-read-no-reply-auto-reminder')
} catch (err) {
if (err instanceof Error && err.message.includes('NEED_TO_CHECK_RUNTIME_DEPENDENCIES')) {
gtagRenderer('read_no_reply_reminder_cannot_run_due_to_corrupt')
gtagRenderer('rnrr_cannot_run_for_corrupt')
ElMessage.error({
message: `核心组件损坏,正在尝试修复`
})
router.replace('/')
}
console.error(err)
gtagRenderer('read_no_reply_reminder_cannot_run_due_to_unknown_error', { err })
gtagRenderer('rnrr_cannot_run_for_unknown_error', { err })
}
})
</script>

View File

@@ -24,7 +24,7 @@
期望公司以逗号分隔不区分大小写<el-tooltip
effect="light"
placement="bottom-start"
@show="gtagRenderer('tooltip_shown_about_expect_company_figure')"
@show="gtagRenderer('tooltip_show_about_expect_company_figure')"
>
<template #content>
<img block h-270px src="./resources/intro-of-job-entry.png" />
@@ -52,7 +52,7 @@
<el-tooltip
effect="light"
placement="bottom"
@show="gtagRenderer('tooltip_shown_about_expect_job_info_figure')"
@show="gtagRenderer('tooltip_show_about_expect_job_info_figure')"
>
<template #content>
<img block h-270px src="./resources/intro-of-job-info.png" />
@@ -64,7 +64,7 @@
<el-tooltip
effect="light"
placement="bottom-start"
@show="gtagRenderer('tooltip_shown_about_mark_not_suit_intro')"
@show="gtagRenderer('tooltip_show_about_mark_not_suit_intro')"
>
<template #content>
<ol m0 line-height-1.5em w-400px pl2em>
@@ -80,7 +80,7 @@
style="color: var(--el-color-primary)"
@click.prevent="
() => {
gtagRenderer('click_view_mark_as_not_suit_record_from_boss_b_tooltip')
gtagRenderer('click_view_mansr_from_boss_b_tooltip')
$router.push('/main-layout/MarkAsNotSuitRecord')
}
"
@@ -286,7 +286,7 @@ const handleSubmit = async () => {
path: '/geekAutoStartChatWithBoss/prepareRun',
query: { flow: 'geek-auto-start-chat-with-boss' }
})
gtagRenderer('config_saved_and_will_launch_auto_start_chat', {
gtagRenderer('config_saved_and_launch_auto_start_chat', {
has_dingtalk_robot_token: !!formContent.value?.dingtalkRobotAccessToken
})
}

View File

@@ -77,7 +77,7 @@
size="small"
@click="
() => {
gtagRenderer('mark_as_not_suit_record_refresh_clicked')
gtagRenderer('mansr_refresh_clicked')
getMarkAsNotSuitRecord()
}
"
@@ -104,7 +104,7 @@
scene="markAsNotSuitRecord"
@closed="
() => {
gtagRenderer('mark_as_not_suit_record_closed')
gtagRenderer('mansr_closed')
selectedJobInfoForViewSnapshot = null
}
"
@@ -137,7 +137,7 @@ const tableRef = ref<InstanceType<typeof ElTable>>()
const isTableLoading = ref(false)
async function getMarkAsNotSuitRecord() {
try {
gtagRenderer('mark_as_not_suit_record_request_sent', {
gtagRenderer('mansr_request_sent', {
page_no: pagination.value.pageNo,
page_size: pagination.value.pageSize,
})
@@ -152,12 +152,12 @@ async function getMarkAsNotSuitRecord() {
pageNo: res.pageNo,
pageSize: pagination.value.pageSize
}
gtagRenderer('mark_as_not_suit_record_request_success', {
gtagRenderer('mansr_request_success', {
page_no: pagination.value.pageNo,
page_size: pagination.value.pageSize,
})
} catch (err) {
gtagRenderer('mark_as_not_suit_record_request_error', {
gtagRenderer('mansr_request_error', {
err,
page_no: pagination.value.pageNo,
page_size: pagination.value.pageSize,

View File

@@ -18,7 +18,7 @@
effect="light"
placement="right"
:enterable="false"
@show="gtagRenderer('tooltip_shown_about_look_forward_reply_emotion_figure')"
@show="gtagRenderer('tooltip_show_about_lfr_emotion_figure')"
>
<template #content>
<img block h-100px src="./resources/look-forward-reply-emotion.gif" />
@@ -271,21 +271,21 @@ const handleSubmit = async () => {
RECHAT_CONTENT_SOURCE.GEMINI_WITH_CHAT_CONTEXT
) {
if (!(await electron.ipcRenderer.invoke('check-is-resume-content-valid'))) {
gtagRenderer('cannot_launch_due_to_invalid_resume_content_dialog_show')
gtagRenderer('cannot_launch_for_invalid_rc_dialog_show')
try {
await ElMessageBox.confirm(`简历内容无效;您需要编辑一下您的简历`, {
cancelButtonText: '取消',
confirmButtonText: '好的,去编辑我的简历',
dangerouslyUseHTMLString: true
})
gtagRenderer('cannot_launch_due_to_invalid_resume_content_dialog_click_confirm')
gtagRenderer('invalid_rc_dialog_click_confirm')
try {
await electron.ipcRenderer.invoke('resume-edit')
} catch (err) {
console.log(err)
}
} catch {
gtagRenderer('cannot_launch_due_to_invalid_resume_content_dialog_click_cancel')
gtagRenderer('invalid_rc_dialog_click_cancel')
}
return
}
@@ -293,7 +293,7 @@ const handleSubmit = async () => {
await electron.ipcRenderer.invoke('check-if-llm-config-list-valid')
} catch (err) {
if (err?.message?.includes(`CANNOT_FIND_VALID_CONFIG`)) {
gtagRenderer('cannot_launch_due_to_invalid_llm_config')
gtagRenderer('cannot_launch_for_invalid_llm_config')
console.log(`大模型配置无效`, err)
ElMessageBox.confirm(
'大模型配置不存在或者包含无效配置<br />您是否希望查看并修正当前大模型配置?',
@@ -307,7 +307,7 @@ const handleSubmit = async () => {
}
)
.then(async () => {
gtagRenderer('view_llm_config_clicked_in_invalid_tip_dialog')
gtagRenderer('invalid_llm_config_tip_dialog_confirm')
try {
await electron.ipcRenderer.invoke('llm-config')
} catch (err) {
@@ -315,10 +315,10 @@ const handleSubmit = async () => {
}
})
.catch(() => {
gtagRenderer('close_invalid_llm_config_tip_dialog')
gtagRenderer('invalid_llm_config_tip_dialog_cancel')
})
} else {
gtagRenderer('cannot_launch_due_to_unknown_error_when_check_llm_config', { err })
gtagRenderer('cannot_launch_for_check_llm_config_error', { err })
ElMessage({
type: 'error',
message: '大模型配置检查未通过,请重试'
@@ -330,7 +330,7 @@ const handleSubmit = async () => {
await electron.ipcRenderer.invoke('check-if-auto-remind-prompt-valid')
} catch (err) {
if (err?.message?.includes(`RESUME_PLACEHOLDER_NOT_EXIST`)) {
gtagRenderer('cannot_launch_due_to_resume_placeholder_not_exist')
gtagRenderer('cannot_launch_for_no_resume_placehold')
console.log(`提示词模板无效`, err)
ElMessageBox.confirm(
'提示词模板缺少简历内容占位符:<br /><b>__REPLACE_REAL_RESUME_HERE__</b><br /><br />您是否希望还原默认的提示词模板?',
@@ -344,14 +344,14 @@ const handleSubmit = async () => {
}
)
.then(async () => {
gtagRenderer('reset_template_clicked_in_invalid_tip_dialog')
gtagRenderer('confirm_invalid_rt_tip_dialog')
await restoreDefaultTemplate()
})
.catch(() => {
gtagRenderer('close_invalid_resume_template_tip_dialog')
gtagRenderer('close_invalid_rt_tip_dialog')
})
} else {
gtagRenderer('cannot_launch_due_to_unknown_error_when_check_prompt', { err })
gtagRenderer('cannot_launch_for_check_prompt_error', { err })
ElMessage({
type: 'error',
message: '用于生成自动提醒消息的提示词检查未通过,请重试'
@@ -360,7 +360,7 @@ const handleSubmit = async () => {
return
}
if (!(await electron.ipcRenderer.invoke('resume-content-enough-detect'))) {
gtagRenderer('resume_content_not_enough_dialog_show')
gtagRenderer('rc_not_enough_dialog_show')
try {
await ElMessageBox.confirm(
`简历内容可能不够充足(各个部分内容长度相加 <800 字)<br />后续大模型根据简历生成的内容将可能不符合预期(例如相同内容重复生成、生成预期之外的内容)<br /><br />要继续运行吗?`,
@@ -370,9 +370,9 @@ const handleSubmit = async () => {
dangerouslyUseHTMLString: true
}
)
gtagRenderer('resume_content_not_enough_dialog_click_confirm')
gtagRenderer('rc_not_enough_dialog_click_confirm')
} catch {
gtagRenderer('resume_content_not_enough_dialog_click_cancel')
gtagRenderer('rc_not_enough_dialog_click_cancel')
return
}
}

View File

@@ -7,7 +7,7 @@
<el-tooltip
placement="right"
:enterable="false"
@show="gtagRenderer('tooltip_shown_for_nav_boss_b_entry')"
@show="gtagRenderer('tooltip_show_for_nav_boss_b_entry')"
>
<template #content>
<div w-480px>
@@ -56,7 +56,7 @@
<el-tooltip
placement="right"
:enterable="false"
@show="gtagRenderer('tooltip_shown_for_read_no_reply_reminder_entry')"
@show="gtagRenderer('tooltip_show_for_rnrr_entry')"
>
<template #content>
<div w-480px>

View File

@@ -408,7 +408,7 @@ const handleSubmit = async () => {
})
) {
try {
gtagRenderer('resume_content_not_enough_dialog_show')
gtagRenderer('rc_not_enough_dialog_show')
await ElMessageBox.confirm(
`简历内容可能不够充足(各个部分内容长度相加 <800 字)<br />后续大模型根据简历生成的内容将可能不符合预期(例如相同内容重复生成、生成预期之外的内容)<br /><br />要继续保存吗?`,
{

View File

@@ -4,8 +4,8 @@ export function gtagRenderer(name, params: any = null) {
name,
params: {
...(params ?? {}),
user_agent: navigator.userAgent,
current_href: location.href,
page_location: location.href,
page_title: document.title,
screen_w: window.screen?.width ?? null,
screen_h: window.screen?.height ?? null,
screen_dpr: window.devicePixelRatio