From 23c820d4af90760aabb22ea99a8d54bfe1087dd4 Mon Sep 17 00:00:00 2001 From: "@Ginkgo0110" Date: Thu, 2 Apr 2026 12:06:26 +0800 Subject: [PATCH] =?UTF-8?q?fix(boss):=20=E4=BF=AE=E5=A4=8D=E6=B2=9F?= =?UTF-8?q?=E9=80=9A=E9=A1=B5=E6=B2=BB=E7=90=86=E5=85=AC=E5=91=8A=E5=BC=B9?= =?UTF-8?q?=E7=AA=97=E6=9C=AA=E5=85=B3=E9=97=AD=E5=8F=8A=E6=96=B0=E6=8B=9B?= =?UTF-8?q?=E5=91=BC=20tab=20=E9=80=89=E6=8B=A9=E5=99=A8=E5=A4=B1=E6=95=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit BOSS_CHAT_PAGE_MAIN 有独立的浏览器启动逻辑,未调用 dismissGovernanceNoticeDialog, 导致弹窗一直阻挡后续所有操作;现将其导出并在 page.goto 完成后显式调用。 新招呼 tab 的 title 含动态未读数(如"新招呼(1312)"),精确匹配 [title="新招呼"] 永远失败,改为前缀匹配 [title^="新招呼"]。 Co-Authored-By: Claude Sonnet 4.6 --- packages/boss-auto-browse-and-chat/constant.mjs | 2 +- packages/boss-auto-browse-and-chat/index.mjs | 2 +- packages/ui/src/main/flow/BOSS_CHAT_PAGE_MAIN/index.ts | 6 +++++- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/packages/boss-auto-browse-and-chat/constant.mjs b/packages/boss-auto-browse-and-chat/constant.mjs index ddbd89d..cc395b1 100644 --- a/packages/boss-auto-browse-and-chat/constant.mjs +++ b/packages/boss-auto-browse-and-chat/constant.mjs @@ -239,4 +239,4 @@ export const GOVERNANCE_NOTICE_DIALOG_CONFIRM_BTN_SELECTOR = '.dialog-uninstall- * 每次开始处理前须先点击此 tab,确保只扫描新招呼消息,避免遍历其他类型会话。 * HTML: div.chat-label-item[title="新招呼"],选中态有 class selected。 */ -export const CHAT_PAGE_TAB_NEW_GREET_SELECTOR = '.chat-label-item[title="新招呼"]' +export const CHAT_PAGE_TAB_NEW_GREET_SELECTOR = '.chat-label-item[title^="新招呼"]' diff --git a/packages/boss-auto-browse-and-chat/index.mjs b/packages/boss-auto-browse-and-chat/index.mjs index 48fa5d2..53ea74f 100644 --- a/packages/boss-auto-browse-and-chat/index.mjs +++ b/packages/boss-auto-browse-and-chat/index.mjs @@ -67,7 +67,7 @@ export async function initPuppeteer () { * 该弹窗在每次登录后必现,不处理会导致后续自动化操作卡死超时。 * @param {import('puppeteer').Page} page */ -async function dismissGovernanceNoticeDialog (page) { +export async function dismissGovernanceNoticeDialog (page) { try { const confirmBtn = await page .waitForSelector(GOVERNANCE_NOTICE_DIALOG_CONFIRM_BTN_SELECTOR, { timeout: 10000 }) diff --git a/packages/ui/src/main/flow/BOSS_CHAT_PAGE_MAIN/index.ts b/packages/ui/src/main/flow/BOSS_CHAT_PAGE_MAIN/index.ts index aec5875..047c03b 100644 --- a/packages/ui/src/main/flow/BOSS_CHAT_PAGE_MAIN/index.ts +++ b/packages/ui/src/main/flow/BOSS_CHAT_PAGE_MAIN/index.ts @@ -146,10 +146,12 @@ const runChatPage = async () => { processContext?: { currentCandidate: any } | null; }) => Promise initPuppeteer: () => Promise<{ puppeteer: any }> + dismissGovernanceNoticeDialog: (page: any) => Promise } const { startBossChatPageProcess, - initPuppeteer + initPuppeteer, + dismissGovernanceNoticeDialog } = (await import('@geekgeekrun/boss-auto-browse-and-chat/index.mjs')) as unknown as BossAutoBrowseModule const { setupCanvasTextHook } = (await import('@geekgeekrun/boss-auto-browse-and-chat/resume-extractor.mjs')) as any log('boss package import 完成,初始化 puppeteer...') @@ -252,6 +254,8 @@ const runChatPage = async () => { await setDomainLocalStorage(browser, localStoragePageUrl, bossLocalStorage || {}) await page.goto(BOSS_CHAT_PAGE_URL, { timeout: 60 * 1000 }) await page.waitForFunction(() => document.readyState === 'complete', { timeout: 120 * 1000 }) + await new Promise(r => setTimeout(r, 1500)) + await dismissGovernanceNoticeDialog(page) sendToDaemon({ type: 'worker-to-gui-message',