Merge remote-tracking branch 'origin/feature/ui' into feature/multi-process

This commit is contained in:
geekgeekrun
2026-02-06 05:45:11 +08:00
6 changed files with 174 additions and 16 deletions
@@ -39,6 +39,9 @@ function combine(arr, min, max) {
// 生成符合"0"限制的组合 // 生成符合"0"限制的组合
function combineWithZero(arr, min, max) { function combineWithZero(arr, min, max) {
let combineResult; let combineResult;
if (!Array.isArray(arr)) {
arr = []
}
if (arr.includes(0)) { if (arr.includes(0)) {
// 如果包含 00不参与组合 // 如果包含 00不参与组合
combineResult = [].concat( combineResult = [].concat(
@@ -612,7 +612,7 @@ async function toRecommendPage (hooks) {
return true return true
} }
return false return false
}).then((res) => { }, { timeout: 120 * 1000 }).then((res) => {
return res.json() return res.json()
}) })
page.goto(recommendJobPageUrl, { timeout: 1 * 1000 }).catch(e => { void e }) page.goto(recommendJobPageUrl, { timeout: 1 * 1000 }).catch(e => { void e })
@@ -635,7 +635,7 @@ async function toRecommendPage (hooks) {
let userInfoResponse = await userInfoPromise let userInfoResponse = await userInfoPromise
await hooks.userInfoResponse?.promise(userInfoResponse) await hooks.userInfoResponse?.promise(userInfoResponse)
if (userInfoResponse.code !== 0) { if (userInfoResponse?.code !== 0) {
autoStartChatEventBus.emit('LOGIN_STATUS_INVALID', { autoStartChatEventBus.emit('LOGIN_STATUS_INVALID', {
userInfoResponse userInfoResponse
}) })
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -117,7 +117,7 @@ export default class SqlitePlugin {
hooks.userInfoResponse.tapPromise( hooks.userInfoResponse.tapPromise(
"SqlitePlugin", "SqlitePlugin",
async (userInfoResponse) => { async (userInfoResponse) => {
if (userInfoResponse.code !== 0) { if (!userInfoResponse || userInfoResponse.code !== 0) {
return; return;
} }
const { zpData: userInfo } = userInfoResponse; const { zpData: userInfo } = userInfoResponse;
@@ -28,7 +28,7 @@ import {
RECHAT_LLM_FALLBACK RECHAT_LLM_FALLBACK
} from '../../../common/enums/auto-start-chat' } from '../../../common/enums/auto-start-chat'
import gtag from '../../utils/gtag' import gtag from '../../utils/gtag'
import { JobHireStatus } from '@geekgeekrun/sqlite-plugin/dist/enums'; import { JobHireStatus } from '@geekgeekrun/sqlite-plugin/dist/enums'
import dayjs from 'dayjs' import dayjs from 'dayjs'
import cheerio from 'cheerio' import cheerio from 'cheerio'
import { connectToDaemon, sendToDaemon } from '../OPEN_SETTING_WINDOW/connect-to-daemon' import { connectToDaemon, sendToDaemon } from '../OPEN_SETTING_WINDOW/connect-to-daemon'
@@ -177,16 +177,24 @@ async function checkJobIsClosed() {
} }
positionNameElHandle.click() positionNameElHandle.click()
try { try {
const targetPage = await waitForPage(pageMapByName.boss!.browser(), async (page) => { const targetPage = await waitForPage(
const url = page.url() pageMapByName.boss!.browser(),
if ( async (page) => {
url.startsWith(`https://www.zhipin.com/job_detail/${encryptJobId}`) && const url = page.url()
(await page.evaluate(() => document.readyState === 'complete')) if (
) { url.startsWith(`https://www.zhipin.com/job_detail/${encryptJobId}`) &&
return true (await page.evaluate(
} () =>
return false !!document.querySelector('#main .job-banner') ||
}) !!document.documentElement.innerText?.includes(`您访问的页面不存在`)
))
) {
return true
}
return false
},
{ timeout: 15 * 1000 }
)
const htmlContent = await targetPage.content() const htmlContent = await targetPage.content()
if (htmlContent) { if (htmlContent) {
const $ = cheerio.load(htmlContent) const $ = cheerio.load(htmlContent)
+1 -1
View File
@@ -2,7 +2,7 @@
<html> <html>
<head> <head>
<meta charset="UTF-8" /> <meta charset="UTF-8" />
<title>GeekBossGo</title> <title>GeekGeekRun 牛人快跑</title>
<!-- https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP --> <!-- https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP -->
<meta <meta
http-equiv="Content-Security-Policy" http-equiv="Content-Security-Policy"