From 7b5ff9951b879c14984f5d2064ba16c7f010559e Mon Sep 17 00:00:00 2001 From: geekgeekrun Date: Sun, 13 Apr 2025 23:47:25 +0800 Subject: [PATCH] add logic to check if resume content rich enough --- ...t-resume-json-to-markdown.ts => resume.ts} | 28 +++++++++++ .../flow/OPEN_SETTING_WINDOW/ipc/index.ts | 5 ++ .../boss-operation.ts | 2 +- .../page/MainLayout/ReadNoReplyReminder.vue | 15 ++++++ .../renderer/src/page/ResumeEditor/index.vue | 46 +++++++++---------- 5 files changed, 70 insertions(+), 26 deletions(-) rename packages/ui/src/common/utils/{format-resume-json-to-markdown.ts => resume.ts} (72%) diff --git a/packages/ui/src/common/utils/format-resume-json-to-markdown.ts b/packages/ui/src/common/utils/resume.ts similarity index 72% rename from packages/ui/src/common/utils/format-resume-json-to-markdown.ts rename to packages/ui/src/common/utils/resume.ts index b972112..247166d 100644 --- a/packages/ui/src/common/utils/format-resume-json-to-markdown.ts +++ b/packages/ui/src/common/utils/resume.ts @@ -1,3 +1,27 @@ +export interface ResumeContent { + name: string + workYearDesc: string + expectJob: string + userDescription: string + geekWorkExpList: Array<{ + company: string + positionName: string + startYearMon: string | null + endYearMon: string | null + performance: string + workDescription: string + }> + geekProjExpList: Array<{ + name: string + startYearMon: string + endYearMon: string + roleName: string + projectDescription: string + performance: string + }> + expectSalary: [string, string] +} + export function formatResumeJsonToMarkdown(resume) { const basicInfoText = [ ['# 姓名', resume.content.name], @@ -53,3 +77,7 @@ export function formatResumeJsonToMarkdown(resume) { return result } + +export function resumeContentEnoughDetect(resumeItem: { content: ResumeContent }) { + return formatResumeJsonToMarkdown(resumeItem)?.length > 800 +} diff --git a/packages/ui/src/main/flow/OPEN_SETTING_WINDOW/ipc/index.ts b/packages/ui/src/main/flow/OPEN_SETTING_WINDOW/ipc/index.ts index 008b34e..de4875a 100644 --- a/packages/ui/src/main/flow/OPEN_SETTING_WINDOW/ipc/index.ts +++ b/packages/ui/src/main/flow/OPEN_SETTING_WINDOW/ipc/index.ts @@ -38,6 +38,7 @@ import { autoReminderPromptTemplateFileName, writeDefaultAutoRemindPrompt } from '../../READ_NO_REPLY_AUTO_REMINDER/boss-operation' +import { resumeContentEnoughDetect } from '../../../../common/utils/resume' export default function initIpc() { ipcMain.handle('fetch-config-file-content', async () => { @@ -502,6 +503,10 @@ export default function initIpc() { ipcMain.handle('check-if-auto-remind-prompt-valid', async () => { await getValidTemplate() }) + ipcMain.handle('resume-content-enough-detect', async () => { + const res = (await readConfigFile('resumes.json'))?.[0] + return resumeContentEnoughDetect(res) + }) ipcMain.handle('overwrite-auto-remind-prompt-with-default', async () => { await writeDefaultAutoRemindPrompt() }) diff --git a/packages/ui/src/main/flow/READ_NO_REPLY_AUTO_REMINDER/boss-operation.ts b/packages/ui/src/main/flow/READ_NO_REPLY_AUTO_REMINDER/boss-operation.ts index d7411da..a0dc5f1 100644 --- a/packages/ui/src/main/flow/READ_NO_REPLY_AUTO_REMINDER/boss-operation.ts +++ b/packages/ui/src/main/flow/READ_NO_REPLY_AUTO_REMINDER/boss-operation.ts @@ -6,7 +6,7 @@ import { readStorageFile, writeStorageFile } from '@geekgeekrun/geek-auto-start-chat-with-boss/runtime-file-utils.mjs' -import { formatResumeJsonToMarkdown } from '../../../common/utils/format-resume-json-to-markdown' +import { formatResumeJsonToMarkdown } from '../../../common/utils/resume' import { SINGLE_ITEM_DEFAULT_SERVE_WEIGHT } from '../../../common/constant' export const sendLookForwardReplyEmotion = async (page: Page) => { diff --git a/packages/ui/src/renderer/src/page/MainLayout/ReadNoReplyReminder.vue b/packages/ui/src/renderer/src/page/MainLayout/ReadNoReplyReminder.vue index 8bdd133..3176529 100644 --- a/packages/ui/src/renderer/src/page/MainLayout/ReadNoReplyReminder.vue +++ b/packages/ui/src/renderer/src/page/MainLayout/ReadNoReplyReminder.vue @@ -268,6 +268,21 @@ const handleSubmit = async () => { } return } + if (!(await electron.ipcRenderer.invoke('resume-content-enough-detect'))) { + gtagRenderer('resume_content_not_enough_dialog_show') + try { + await ElMessageBox.confirm( + `简历内容可能不够充足(各个部分内容长度相加 <800 字)
后续大模型根据简历生成的内容将可能不够随机

要继续运行吗?`, + { + cancelButtonText: '不,我再看看', + confirmButtonText: '是的,继续运行', + dangerouslyUseHTMLString: true + } + ) + } catch { + return + } + } gtagRenderer('reminder_launched') router.replace({ path: '/geekAutoStartChatWithBoss/prepareRun', diff --git a/packages/ui/src/renderer/src/page/ResumeEditor/index.vue b/packages/ui/src/renderer/src/page/ResumeEditor/index.vue index ad41ad3..4e9b8b9 100644 --- a/packages/ui/src/renderer/src/page/ResumeEditor/index.vue +++ b/packages/ui/src/renderer/src/page/ResumeEditor/index.vue @@ -310,34 +310,11 @@