@joohw/boss-cli 0.1.8 → 0.1.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +25 -25
- package/README.md +34 -19
- package/dist/browser/agent_operating_indicator.d.ts +9 -0
- package/dist/browser/agent_operating_indicator.d.ts.map +1 -0
- package/dist/browser/agent_operating_indicator.js +92 -0
- package/dist/browser/agent_operating_indicator.js.map +1 -0
- package/dist/browser/c_resume_capture.d.ts +11 -0
- package/dist/browser/c_resume_capture.d.ts.map +1 -0
- package/dist/browser/c_resume_capture.js +76 -0
- package/dist/browser/c_resume_capture.js.map +1 -0
- package/dist/browser/chat.d.ts +3 -3
- package/dist/browser/chat.d.ts.map +1 -1
- package/dist/browser/chat.js +20 -4
- package/dist/browser/chat.js.map +1 -1
- package/dist/browser/human_delay.d.ts +5 -0
- package/dist/browser/human_delay.d.ts.map +1 -1
- package/dist/browser/human_delay.js +5 -0
- package/dist/browser/human_delay.js.map +1 -1
- package/dist/browser/index.d.ts +3 -1
- package/dist/browser/index.d.ts.map +1 -1
- package/dist/browser/index.js +3 -1
- package/dist/browser/index.js.map +1 -1
- package/dist/browser/viewport_temp.d.ts +15 -0
- package/dist/browser/viewport_temp.d.ts.map +1 -0
- package/dist/browser/viewport_temp.js +78 -0
- package/dist/browser/viewport_temp.js.map +1 -0
- package/dist/cli/banner.js +1 -1
- package/dist/cli/cliRouter.d.ts.map +1 -1
- package/dist/cli/cliRouter.js +32 -13
- package/dist/cli/cliRouter.js.map +1 -1
- package/dist/common/boss_paywall_popup.d.ts +16 -0
- package/dist/common/boss_paywall_popup.d.ts.map +1 -0
- package/dist/common/boss_paywall_popup.js +140 -0
- package/dist/common/boss_paywall_popup.js.map +1 -0
- package/dist/common/boss_sidebar_nav.d.ts +6 -0
- package/dist/common/boss_sidebar_nav.d.ts.map +1 -0
- package/dist/common/boss_sidebar_nav.js +37 -0
- package/dist/common/boss_sidebar_nav.js.map +1 -0
- package/dist/common/c_resume_capture.d.ts +11 -0
- package/dist/common/c_resume_capture.d.ts.map +1 -0
- package/dist/common/c_resume_capture.js +76 -0
- package/dist/common/c_resume_capture.js.map +1 -0
- package/dist/toolset/action.d.ts +1 -1
- package/dist/toolset/action.d.ts.map +1 -1
- package/dist/toolset/action.js +192 -152
- package/dist/toolset/action.js.map +1 -1
- package/dist/toolset/c_resume_capture.d.ts +11 -0
- package/dist/toolset/c_resume_capture.d.ts.map +1 -0
- package/dist/toolset/c_resume_capture.js +76 -0
- package/dist/toolset/c_resume_capture.js.map +1 -0
- package/dist/toolset/chat.d.ts.map +1 -1
- package/dist/toolset/chat.js +4 -3
- package/dist/toolset/chat.js.map +1 -1
- package/dist/toolset/deep-search.d.ts +24 -0
- package/dist/toolset/deep-search.d.ts.map +1 -0
- package/dist/toolset/deep-search.js +1039 -0
- package/dist/toolset/deep-search.js.map +1 -0
- package/dist/toolset/greet.d.ts.map +1 -1
- package/dist/toolset/greet.js +30 -10
- package/dist/toolset/greet.js.map +1 -1
- package/dist/toolset/index.d.ts +13 -1
- package/dist/toolset/index.d.ts.map +1 -1
- package/dist/toolset/index.js +13 -7
- package/dist/toolset/index.js.map +1 -1
- package/dist/toolset/jd.d.ts.map +1 -1
- package/dist/toolset/jd.js +4 -35
- package/dist/toolset/jd.js.map +1 -1
- package/dist/toolset/list.d.ts +6 -0
- package/dist/toolset/list.d.ts.map +1 -1
- package/dist/toolset/list.js +36 -60
- package/dist/toolset/list.js.map +1 -1
- package/dist/toolset/login.d.ts.map +1 -1
- package/dist/toolset/login.js +2 -5
- package/dist/toolset/login.js.map +1 -1
- package/dist/toolset/recommend.d.ts +12 -0
- package/dist/toolset/recommend.d.ts.map +1 -1
- package/dist/toolset/recommend.js +144 -45
- package/dist/toolset/recommend.js.map +1 -1
- package/dist/toolset/search.d.ts +23 -1
- package/dist/toolset/search.d.ts.map +1 -1
- package/dist/toolset/search.js +556 -48
- package/dist/toolset/search.js.map +1 -1
- package/dist/toolset/send.js +2 -2
- package/dist/toolset/send.js.map +1 -1
- package/package.json +2 -2
package/dist/toolset/action.js
CHANGED
|
@@ -1,41 +1,10 @@
|
|
|
1
1
|
import { join } from 'node:path';
|
|
2
|
-
import {
|
|
2
|
+
import { isBossChatIndexUrl, ONLINE_RESUME_IFRAME_APPEAR_MS, ONLINE_RESUME_IFRAME_SETTLE_MS, ONLINE_RESUME_IFRAME_WAIT_MAX_MS, sleepRandom, snapshotBossPageViewport, } from '../browser/index.js';
|
|
3
|
+
import { closeBossPaywallPopupIfPresent, describeBossPaywallPopupIfPresent, waitForCResumeIframeOrPaywall, } from '../common/boss_paywall_popup.js';
|
|
4
|
+
import { captureCResumeIframeToFile, closeCResumePanel, safeResumeScreenshotFileBase, } from '../common/c_resume_capture.js';
|
|
3
5
|
import { ensureAppDataLayout, RESUME_SCREENSHOTS_DIR } from '../config.js';
|
|
4
6
|
import { isResumeOcrEnabled, ocrResumePngToTextFile } from '../ocr/index.js';
|
|
5
7
|
import { runGetCommunicationHistory } from './chat.js';
|
|
6
|
-
/** 在线简历截图前临时拉高的视口高度(CSS px)。可用 `BOSS_RESUME_SCREENSHOT_VIEWPORT_HEIGHT` 覆盖。 */
|
|
7
|
-
const ONLINE_RESUME_SNAPSHOT_VIEWPORT_HEIGHT_PX = 5000;
|
|
8
|
-
function safeResumeFileBase(name) {
|
|
9
|
-
const t = name.replace(/[/\\?%*:|"<>]/g, '_').trim().slice(0, 64);
|
|
10
|
-
return t.length > 0 ? t : 'candidate';
|
|
11
|
-
}
|
|
12
|
-
function viewportForOnlineResumeSnapshot(prev) {
|
|
13
|
-
const envH = Number.parseInt(process.env.BOSS_RESUME_SCREENSHOT_VIEWPORT_HEIGHT?.trim() ?? '', 10);
|
|
14
|
-
const height = Number.isFinite(envH) && envH > 0 ? envH : ONLINE_RESUME_SNAPSHOT_VIEWPORT_HEIGHT_PX;
|
|
15
|
-
const base = defaultViewportFromEnv();
|
|
16
|
-
return {
|
|
17
|
-
width: prev?.width ?? base.width,
|
|
18
|
-
height,
|
|
19
|
-
deviceScaleFactor: prev?.deviceScaleFactor ?? 1,
|
|
20
|
-
isMobile: prev?.isMobile ?? false,
|
|
21
|
-
hasTouch: prev?.hasTouch ?? false,
|
|
22
|
-
isLandscape: prev?.isLandscape ?? false,
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
function viewportRestoreAfterResumeSnapshot(prev) {
|
|
26
|
-
if (prev) {
|
|
27
|
-
return prev;
|
|
28
|
-
}
|
|
29
|
-
const d = defaultViewportFromEnv();
|
|
30
|
-
return {
|
|
31
|
-
width: d.width,
|
|
32
|
-
height: d.height,
|
|
33
|
-
deviceScaleFactor: 1,
|
|
34
|
-
isMobile: false,
|
|
35
|
-
hasTouch: false,
|
|
36
|
-
isLandscape: false,
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
8
|
function ensureInCandidateChat(page, actionLabel) {
|
|
40
9
|
return (async () => {
|
|
41
10
|
const currentUrl = page.url();
|
|
@@ -49,73 +18,58 @@ function ensureInCandidateChat(page, actionLabel) {
|
|
|
49
18
|
})();
|
|
50
19
|
}
|
|
51
20
|
/**
|
|
52
|
-
*
|
|
53
|
-
* 仅点击入口与底部确认按钮,不选择任何原因。
|
|
21
|
+
* 在聊天页右侧操作区执行「不合适」:该入口依赖 hover 后才响应真实点击,先派发 hover 再点一次。
|
|
54
22
|
*/
|
|
55
23
|
async function markCandidateNotFitWithoutReason(page) {
|
|
56
24
|
await ensureInCandidateChat(page, '不合适');
|
|
57
|
-
const
|
|
25
|
+
const hovered = (await page.evaluate(`(() => {
|
|
58
26
|
const norm = (v) => (v ?? "").replace(/\\s+/g, "").trim();
|
|
27
|
+
function fireHover(el) {
|
|
28
|
+
if (!(el instanceof HTMLElement)) return;
|
|
29
|
+
const r = el.getBoundingClientRect();
|
|
30
|
+
const cx = r.left + r.width / 2;
|
|
31
|
+
const cy = r.top + r.height / 2;
|
|
32
|
+
["mouseover", "mouseenter", "mousemove"].forEach((type) => {
|
|
33
|
+
el.dispatchEvent(
|
|
34
|
+
new MouseEvent(type, { bubbles: true, cancelable: true, clientX: cx, clientY: cy, view: window }),
|
|
35
|
+
);
|
|
36
|
+
});
|
|
37
|
+
}
|
|
59
38
|
const roots = Array.from(document.querySelectorAll(".operate-exchange-right .operate-icon-item, .operate-icon-item"));
|
|
60
39
|
const target = roots.find((el) => {
|
|
61
40
|
const t = norm(el.querySelector(".operate-btn")?.textContent || el.textContent || "");
|
|
62
41
|
return t.includes("不合适");
|
|
63
42
|
});
|
|
64
43
|
if (!target) return false;
|
|
44
|
+
target.scrollIntoView({ block: "center", inline: "nearest" });
|
|
45
|
+
fireHover(target);
|
|
65
46
|
const btn = target.querySelector(".operate-btn");
|
|
66
|
-
|
|
67
|
-
host.scrollIntoView({ block: "center", inline: "nearest" });
|
|
68
|
-
host.click();
|
|
47
|
+
if (btn instanceof HTMLElement) fireHover(btn);
|
|
69
48
|
return true;
|
|
70
49
|
})()`));
|
|
71
|
-
if (!
|
|
50
|
+
if (!hovered) {
|
|
72
51
|
throw new Error('未找到“不合适”按钮,无法执行操作。');
|
|
73
52
|
}
|
|
74
|
-
await sleepRandom(
|
|
75
|
-
const
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
const st = window.getComputedStyle(el);
|
|
82
|
-
if (st.display === "none" || st.visibility === "hidden") return false;
|
|
83
|
-
const r = el.getBoundingClientRect();
|
|
84
|
-
return r.width > 0 && r.height > 0;
|
|
85
|
-
}
|
|
86
|
-
const wrappers = Array.from(document.querySelectorAll(".not-fit-wrap"))
|
|
87
|
-
.filter((el) => isVisible(el) && !!el.querySelector(".main-content"));
|
|
88
|
-
if (wrappers.length === 0) return false;
|
|
89
|
-
const wrapper = wrappers[wrappers.length - 1];
|
|
90
|
-
const candidates = Array.from(
|
|
91
|
-
wrapper.querySelectorAll(
|
|
92
|
-
".boss-btn-primary, .boss-btn, button, .footer .btn, .bottom .btn, .submit-btn, .confirm-btn",
|
|
93
|
-
),
|
|
94
|
-
).filter((el) => isVisible(el));
|
|
95
|
-
if (candidates.length === 0) return false;
|
|
96
|
-
|
|
97
|
-
const preferred = candidates.filter((el) => {
|
|
98
|
-
const t = norm(el.textContent);
|
|
99
|
-
return (
|
|
100
|
-
t.includes("确定") ||
|
|
101
|
-
t.includes("确认") ||
|
|
102
|
-
t.includes("提交") ||
|
|
103
|
-
t.includes("完成") ||
|
|
104
|
-
t.includes("不合适")
|
|
105
|
-
);
|
|
53
|
+
await sleepRandom(200, 450);
|
|
54
|
+
const clicked = (await page.evaluate(`(() => {
|
|
55
|
+
const norm = (v) => (v ?? "").replace(/\\s+/g, "").trim();
|
|
56
|
+
const roots = Array.from(document.querySelectorAll(".operate-exchange-right .operate-icon-item, .operate-icon-item"));
|
|
57
|
+
const target = roots.find((el) => {
|
|
58
|
+
const t = norm(el.querySelector(".operate-btn")?.textContent || el.textContent || "");
|
|
59
|
+
return t.includes("不合适");
|
|
106
60
|
});
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
const
|
|
110
|
-
|
|
111
|
-
|
|
61
|
+
if (!target) return false;
|
|
62
|
+
const btn = target.querySelector(".operate-btn");
|
|
63
|
+
const host = btn instanceof HTMLElement ? btn : target;
|
|
64
|
+
host.scrollIntoView({ block: "center", inline: "nearest" });
|
|
65
|
+
host.click();
|
|
112
66
|
return true;
|
|
113
67
|
})()`));
|
|
114
|
-
if (!
|
|
115
|
-
throw new Error('
|
|
68
|
+
if (!clicked) {
|
|
69
|
+
throw new Error('未找到“不合适”按钮,无法执行点击。');
|
|
116
70
|
}
|
|
117
|
-
await sleepRandom(320,
|
|
118
|
-
return '
|
|
71
|
+
await sleepRandom(320, 780);
|
|
72
|
+
return '已点击「不合适」。';
|
|
119
73
|
}
|
|
120
74
|
/** 在聊天页右侧操作区点击「换微信」。 */
|
|
121
75
|
async function runExchangeWechat(page) {
|
|
@@ -147,7 +101,7 @@ async function runExchangeWechat(page) {
|
|
|
147
101
|
const target = items.find((el) => norm(el.querySelector(".operate-btn")?.textContent).includes("换微信"));
|
|
148
102
|
if (!target) return false;
|
|
149
103
|
const btn = target.querySelector(".operate-btn");
|
|
150
|
-
const host = btn
|
|
104
|
+
const host = btn instanceof HTMLElement ? btn : target;
|
|
151
105
|
host.scrollIntoView({ block: "center", inline: "nearest" });
|
|
152
106
|
host.click();
|
|
153
107
|
return true;
|
|
@@ -155,8 +109,144 @@ async function runExchangeWechat(page) {
|
|
|
155
109
|
if (!clicked) {
|
|
156
110
|
throw new Error('点击“换微信”失败,请确认当前会话是否仍处于可操作状态。');
|
|
157
111
|
}
|
|
158
|
-
await sleepRandom(
|
|
159
|
-
|
|
112
|
+
await sleepRandom(280, 520);
|
|
113
|
+
await page.waitForFunction(`(() => {
|
|
114
|
+
function isVisible(el) {
|
|
115
|
+
if (!(el instanceof HTMLElement)) return false;
|
|
116
|
+
const st = window.getComputedStyle(el);
|
|
117
|
+
if (st.display === "none" || st.visibility === "hidden") return false;
|
|
118
|
+
const r = el.getBoundingClientRect();
|
|
119
|
+
return r.width > 0 && r.height > 0;
|
|
120
|
+
}
|
|
121
|
+
const tips = Array.from(document.querySelectorAll(".exchange-tooltip"));
|
|
122
|
+
for (const tip of tips) {
|
|
123
|
+
if (!isVisible(tip)) continue;
|
|
124
|
+
const raw = (tip.textContent ?? "").replace(/\\s+/g, "");
|
|
125
|
+
if (!raw.includes("交换微信")) continue;
|
|
126
|
+
const primary = tip.querySelector(".btn-box .boss-btn-primary");
|
|
127
|
+
return primary instanceof HTMLElement;
|
|
128
|
+
}
|
|
129
|
+
return false;
|
|
130
|
+
})()`, { timeout: 12_000 });
|
|
131
|
+
const confirmed = (await page.evaluate(`(() => {
|
|
132
|
+
function isVisible(el) {
|
|
133
|
+
if (!(el instanceof HTMLElement)) return false;
|
|
134
|
+
const st = window.getComputedStyle(el);
|
|
135
|
+
if (st.display === "none" || st.visibility === "hidden") return false;
|
|
136
|
+
const r = el.getBoundingClientRect();
|
|
137
|
+
return r.width > 0 && r.height > 0;
|
|
138
|
+
}
|
|
139
|
+
function norm(v) {
|
|
140
|
+
return (v ?? "").replace(/\\s+/g, "").trim();
|
|
141
|
+
}
|
|
142
|
+
const tips = Array.from(document.querySelectorAll(".exchange-tooltip"));
|
|
143
|
+
for (const tip of tips) {
|
|
144
|
+
if (!isVisible(tip)) continue;
|
|
145
|
+
if (!norm(tip.textContent).includes("交换微信")) continue;
|
|
146
|
+
const primary = tip.querySelector(".btn-box .boss-btn-primary.boss-btn, .btn-box .boss-btn-primary");
|
|
147
|
+
if (!(primary instanceof HTMLElement)) continue;
|
|
148
|
+
if (!norm(primary.textContent).includes("确定")) continue;
|
|
149
|
+
primary.scrollIntoView({ block: "center", inline: "nearest" });
|
|
150
|
+
primary.click();
|
|
151
|
+
return true;
|
|
152
|
+
}
|
|
153
|
+
return false;
|
|
154
|
+
})()`));
|
|
155
|
+
if (!confirmed) {
|
|
156
|
+
throw new Error('已弹出交换微信确认框,但未点到「确定」按钮。');
|
|
157
|
+
}
|
|
158
|
+
await sleepRandom(320, 780);
|
|
159
|
+
return '已点击「换微信」并在弹窗中确认。';
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* 在聊天页左侧工具栏点击「求简历」,并在确认弹窗中点「确定」。
|
|
163
|
+
* 平台规则:双方需各至少发送一条消息后该入口才可点;否则按钮为禁用态。
|
|
164
|
+
*/
|
|
165
|
+
async function runRequestAttachmentResume(page) {
|
|
166
|
+
await ensureInCandidateChat(page, '求简历');
|
|
167
|
+
const availability = (await page.evaluate(`(() => {
|
|
168
|
+
const norm = (v) => (v ?? "").replace(/\\s+/g, "");
|
|
169
|
+
const items = Array.from(
|
|
170
|
+
document.querySelectorAll(".operate-exchange-left .operate-icon-item, .operate-icon-item"),
|
|
171
|
+
);
|
|
172
|
+
const target = items.find((el) => norm(el.querySelector(".operate-btn")?.textContent).includes("求简历"));
|
|
173
|
+
if (!target) return { found: false, available: false };
|
|
174
|
+
const btn = target.querySelector(".operate-btn");
|
|
175
|
+
const className = [target.className ?? "", btn?.className ?? ""].join(" ");
|
|
176
|
+
const disabled = /disabled|forbid|ban/i.test(className) || btn?.getAttribute("disabled") !== null;
|
|
177
|
+
return { found: true, available: !disabled };
|
|
178
|
+
})()`));
|
|
179
|
+
if (!availability.found) {
|
|
180
|
+
throw new Error('未找到「求简历」按钮,当前页面可能不支持该操作。');
|
|
181
|
+
}
|
|
182
|
+
if (!availability.available) {
|
|
183
|
+
throw new Error('当前「求简历」不可用。Boss 要求双方各至少发送一条消息后才可以向对方请求附件简历,请先与对方互发消息后再试。');
|
|
184
|
+
}
|
|
185
|
+
await sleepRandom(220, 620);
|
|
186
|
+
const clicked = (await page.evaluate(`(() => {
|
|
187
|
+
const norm = (v) => (v ?? "").replace(/\\s+/g, "");
|
|
188
|
+
const items = Array.from(
|
|
189
|
+
document.querySelectorAll(".operate-exchange-left .operate-icon-item, .operate-icon-item"),
|
|
190
|
+
);
|
|
191
|
+
const target = items.find((el) => norm(el.querySelector(".operate-btn")?.textContent).includes("求简历"));
|
|
192
|
+
if (!target) return false;
|
|
193
|
+
const btn = target.querySelector(".operate-btn");
|
|
194
|
+
const host = btn instanceof HTMLElement ? btn : target;
|
|
195
|
+
host.scrollIntoView({ block: "center", inline: "nearest" });
|
|
196
|
+
host.click();
|
|
197
|
+
return true;
|
|
198
|
+
})()`));
|
|
199
|
+
if (!clicked) {
|
|
200
|
+
throw new Error('点击「求简历」失败,请确认当前会话是否仍处于可操作状态。');
|
|
201
|
+
}
|
|
202
|
+
await sleepRandom(280, 520);
|
|
203
|
+
await page.waitForFunction(`(() => {
|
|
204
|
+
function isVisible(el) {
|
|
205
|
+
if (!(el instanceof HTMLElement)) return false;
|
|
206
|
+
const st = window.getComputedStyle(el);
|
|
207
|
+
if (st.display === "none" || st.visibility === "hidden") return false;
|
|
208
|
+
const r = el.getBoundingClientRect();
|
|
209
|
+
return r.width > 0 && r.height > 0;
|
|
210
|
+
}
|
|
211
|
+
const tips = Array.from(document.querySelectorAll(".exchange-tooltip"));
|
|
212
|
+
for (const tip of tips) {
|
|
213
|
+
if (!isVisible(tip)) continue;
|
|
214
|
+
const raw = (tip.textContent ?? "").replace(/\\s+/g, "");
|
|
215
|
+
if (!raw.includes("请求简历")) continue;
|
|
216
|
+
const primary = tip.querySelector(".btn-box .boss-btn-primary");
|
|
217
|
+
return primary instanceof HTMLElement;
|
|
218
|
+
}
|
|
219
|
+
return false;
|
|
220
|
+
})()`, { timeout: 12_000 });
|
|
221
|
+
const confirmed = (await page.evaluate(`(() => {
|
|
222
|
+
function isVisible(el) {
|
|
223
|
+
if (!(el instanceof HTMLElement)) return false;
|
|
224
|
+
const st = window.getComputedStyle(el);
|
|
225
|
+
if (st.display === "none" || st.visibility === "hidden") return false;
|
|
226
|
+
const r = el.getBoundingClientRect();
|
|
227
|
+
return r.width > 0 && r.height > 0;
|
|
228
|
+
}
|
|
229
|
+
function norm(v) {
|
|
230
|
+
return (v ?? "").replace(/\\s+/g, "").trim();
|
|
231
|
+
}
|
|
232
|
+
const tips = Array.from(document.querySelectorAll(".exchange-tooltip"));
|
|
233
|
+
for (const tip of tips) {
|
|
234
|
+
if (!isVisible(tip)) continue;
|
|
235
|
+
if (!norm(tip.textContent).includes("请求简历")) continue;
|
|
236
|
+
const primary = tip.querySelector(".btn-box .boss-btn-primary.boss-btn, .btn-box .boss-btn-primary");
|
|
237
|
+
if (!(primary instanceof HTMLElement)) continue;
|
|
238
|
+
if (!norm(primary.textContent).includes("确定")) continue;
|
|
239
|
+
primary.scrollIntoView({ block: "center", inline: "nearest" });
|
|
240
|
+
primary.click();
|
|
241
|
+
return true;
|
|
242
|
+
}
|
|
243
|
+
return false;
|
|
244
|
+
})()`));
|
|
245
|
+
if (!confirmed) {
|
|
246
|
+
throw new Error('已弹出求简历确认框,但未点到「确定」按钮。');
|
|
247
|
+
}
|
|
248
|
+
await sleepRandom(320, 780);
|
|
249
|
+
return '已点击「求简历」并在弹窗中确认(将发送默认话术「方便发一份你的简历过来吗?」)。';
|
|
160
250
|
}
|
|
161
251
|
/**
|
|
162
252
|
* 在聊天页通过「更多 -> 备注」更新候选人备注,并点击确认保存。
|
|
@@ -272,36 +362,6 @@ async function updateCandidateRemark(page, remarkText) {
|
|
|
272
362
|
await sleepRandom(220, 580);
|
|
273
363
|
return `已更新备注: ${nextRemark}`;
|
|
274
364
|
}
|
|
275
|
-
async function closeOnlineResumePanel(page) {
|
|
276
|
-
try {
|
|
277
|
-
await page.evaluate(() => {
|
|
278
|
-
const wraps = Array.from(document.querySelectorAll('.boss-popup__wrapper'));
|
|
279
|
-
for (const w of wraps) {
|
|
280
|
-
if (w.querySelector('iframe[src*="c-resume"], iframe[src*="frame/c-resume"]')) {
|
|
281
|
-
const c = w.querySelector('.boss-popup__close');
|
|
282
|
-
if (c) {
|
|
283
|
-
c.click();
|
|
284
|
-
return;
|
|
285
|
-
}
|
|
286
|
-
}
|
|
287
|
-
}
|
|
288
|
-
const iframe = document.querySelector('iframe[src*="c-resume"], iframe[src*="frame/c-resume"]');
|
|
289
|
-
let node = iframe?.parentElement ?? null;
|
|
290
|
-
for (let i = 0; i < 12 && node; i++) {
|
|
291
|
-
const c = node.querySelector('.boss-popup__close, .drawer-close, .icon-close');
|
|
292
|
-
if (c) {
|
|
293
|
-
c.click();
|
|
294
|
-
return;
|
|
295
|
-
}
|
|
296
|
-
node = node.parentElement;
|
|
297
|
-
}
|
|
298
|
-
});
|
|
299
|
-
await sleepRandom(200, 450);
|
|
300
|
-
}
|
|
301
|
-
catch {
|
|
302
|
-
/* ignore */
|
|
303
|
-
}
|
|
304
|
-
}
|
|
305
365
|
/**
|
|
306
366
|
* 对方「附件简历」确认卡片上点击「同意」。
|
|
307
367
|
* 对应按钮 disabled 时视为已处理。
|
|
@@ -377,11 +437,11 @@ async function getCandidateLabelForResumeShot(page) {
|
|
|
377
437
|
* 点击「在线简历」,对 `iframe` 元素整框截图(含视口外部分,见 `captureBeyondViewport`)。
|
|
378
438
|
* 不依赖 `contentFrame()`,与内页是否 canvas / 跨域无关。
|
|
379
439
|
*
|
|
380
|
-
*
|
|
440
|
+
* 进入前记录视口(`snapshotBossPageViewport`,见 {@link captureCResumeIframeToFile})。
|
|
381
441
|
*/
|
|
382
442
|
async function captureOnlineResumeScreenshot(page, candidateLabel) {
|
|
383
443
|
ensureAppDataLayout();
|
|
384
|
-
const savedViewport = await page
|
|
444
|
+
const savedViewport = await snapshotBossPageViewport(page);
|
|
385
445
|
const opened = await page.evaluate(() => {
|
|
386
446
|
const a = document.querySelector('a.resume-btn-online');
|
|
387
447
|
if (!a || a.classList.contains('disabled'))
|
|
@@ -394,46 +454,24 @@ async function captureOnlineResumeScreenshot(page, candidateLabel) {
|
|
|
394
454
|
return null;
|
|
395
455
|
}
|
|
396
456
|
await sleepRandom(ONLINE_RESUME_IFRAME_APPEAR_MS.min, ONLINE_RESUME_IFRAME_APPEAR_MS.max);
|
|
397
|
-
const
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
457
|
+
const outcome = await waitForCResumeIframeOrPaywall(page, ONLINE_RESUME_IFRAME_WAIT_MAX_MS);
|
|
458
|
+
if (outcome !== 'iframe') {
|
|
459
|
+
const paywall = await describeBossPaywallPopupIfPresent(page);
|
|
460
|
+
await closeBossPaywallPopupIfPresent(page);
|
|
461
|
+
if (paywall) {
|
|
462
|
+
throw new Error(paywall);
|
|
463
|
+
}
|
|
401
464
|
return null;
|
|
402
465
|
}
|
|
403
466
|
await sleepRandom(ONLINE_RESUME_IFRAME_SETTLE_MS.min, ONLINE_RESUME_IFRAME_SETTLE_MS.max);
|
|
404
|
-
const fileName = `online-resume-${
|
|
467
|
+
const fileName = `online-resume-${safeResumeScreenshotFileBase(candidateLabel)}-${Date.now()}.png`;
|
|
405
468
|
const absPath = join(RESUME_SCREENSHOTS_DIR, fileName);
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
await
|
|
409
|
-
|
|
410
|
-
if (!iframe) {
|
|
411
|
-
return null;
|
|
412
|
-
}
|
|
413
|
-
await iframe.evaluate((el) => {
|
|
414
|
-
el.scrollIntoView({ block: 'start', inline: 'nearest' });
|
|
415
|
-
});
|
|
416
|
-
const box = await iframe.boundingBox();
|
|
417
|
-
if (!box) {
|
|
418
|
-
await iframe.dispose();
|
|
419
|
-
return null;
|
|
420
|
-
}
|
|
421
|
-
try {
|
|
422
|
-
await iframe.screenshot({
|
|
423
|
-
path: absPath,
|
|
424
|
-
type: 'png',
|
|
425
|
-
captureBeyondViewport: true,
|
|
426
|
-
});
|
|
427
|
-
}
|
|
428
|
-
finally {
|
|
429
|
-
await iframe.dispose();
|
|
430
|
-
}
|
|
431
|
-
await closeOnlineResumePanel(page);
|
|
432
|
-
return absPath;
|
|
433
|
-
}
|
|
434
|
-
finally {
|
|
435
|
-
await page.setViewport(viewportRestoreAfterResumeSnapshot(savedViewport));
|
|
469
|
+
const ok = await captureCResumeIframeToFile(page, savedViewport, absPath);
|
|
470
|
+
if (!ok) {
|
|
471
|
+
await closeCResumePanel(page);
|
|
472
|
+
return null;
|
|
436
473
|
}
|
|
474
|
+
return absPath;
|
|
437
475
|
}
|
|
438
476
|
export async function runChatActionOnCurrentConversation(page, options) {
|
|
439
477
|
const action = options.action;
|
|
@@ -463,6 +501,8 @@ export async function runChatActionOnCurrentConversation(page, options) {
|
|
|
463
501
|
}
|
|
464
502
|
case 'agree-resume':
|
|
465
503
|
return runIncomingResumeCardAction(page, 'agree');
|
|
504
|
+
case 'request-attachment-resume':
|
|
505
|
+
return runRequestAttachmentResume(page);
|
|
466
506
|
case 'exchange-wechat':
|
|
467
507
|
return runExchangeWechat(page);
|
|
468
508
|
case 'history':
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action.js","sourceRoot":"","sources":["../../src/toolset/action.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"action.js","sourceRoot":"","sources":["../../src/toolset/action.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Page } from 'puppeteer-core';
|
|
2
|
+
/** 截图文件名安全段(在线简历 / 推荐预览共用) */
|
|
3
|
+
export declare function safeResumeScreenshotFileBase(name: string): string;
|
|
4
|
+
/** 关闭含 `c-resume` iframe 的弹层(聊天「在线简历」与推荐「预览」共用)。 */
|
|
5
|
+
export declare function closeCResumePanel(page: Page): Promise<void>;
|
|
6
|
+
/**
|
|
7
|
+
* 在已出现 `c-resume` iframe 的页面上,对 iframe 整框截图并关闭弹层。
|
|
8
|
+
* `preOpenViewport` 为打开弹层前 `page.viewport()` 的快照(与在线简历截图一致)。
|
|
9
|
+
*/
|
|
10
|
+
export declare function captureCResumeIframeToFile(page: Page, preOpenViewport: Awaited<ReturnType<Page['viewport']>>, absPath: string): Promise<boolean>;
|
|
11
|
+
//# sourceMappingURL=c_resume_capture.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"c_resume_capture.d.ts","sourceRoot":"","sources":["../../src/toolset/c_resume_capture.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAI3C,8BAA8B;AAC9B,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGjE;AAED,oDAAoD;AACpD,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BjE;AAED;;;GAGG;AACH,wBAAsB,0BAA0B,CAC9C,IAAI,EAAE,IAAI,EACV,eAAe,EAAE,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EACtD,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,OAAO,CAAC,CAmClB"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { sleepRandom } from '../browser/timing.js';
|
|
2
|
+
import { resumeHeight, setTempHeight } from '../browser/viewport_temp.js';
|
|
3
|
+
/** 截图文件名安全段(在线简历 / 推荐预览共用) */
|
|
4
|
+
export function safeResumeScreenshotFileBase(name) {
|
|
5
|
+
const t = name.replace(/[/\\?%*:|"<>]/g, '_').trim().slice(0, 64);
|
|
6
|
+
return t.length > 0 ? t : 'candidate';
|
|
7
|
+
}
|
|
8
|
+
/** 关闭含 `c-resume` iframe 的弹层(聊天「在线简历」与推荐「预览」共用)。 */
|
|
9
|
+
export async function closeCResumePanel(page) {
|
|
10
|
+
try {
|
|
11
|
+
await page.evaluate(() => {
|
|
12
|
+
const wraps = Array.from(document.querySelectorAll('.boss-popup__wrapper'));
|
|
13
|
+
for (const w of wraps) {
|
|
14
|
+
if (w.querySelector('iframe[src*="c-resume"], iframe[src*="frame/c-resume"]')) {
|
|
15
|
+
const c = w.querySelector('.boss-popup__close');
|
|
16
|
+
if (c) {
|
|
17
|
+
c.click();
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
const iframe = document.querySelector('iframe[src*="c-resume"], iframe[src*="frame/c-resume"]');
|
|
23
|
+
let node = iframe?.parentElement ?? null;
|
|
24
|
+
for (let i = 0; i < 12 && node; i++) {
|
|
25
|
+
const c = node.querySelector('.boss-popup__close, .drawer-close, .icon-close');
|
|
26
|
+
if (c) {
|
|
27
|
+
c.click();
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
node = node.parentElement;
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
await sleepRandom(200, 450);
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
/* ignore */
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* 在已出现 `c-resume` iframe 的页面上,对 iframe 整框截图并关闭弹层。
|
|
41
|
+
* `preOpenViewport` 为打开弹层前 `page.viewport()` 的快照(与在线简历截图一致)。
|
|
42
|
+
*/
|
|
43
|
+
export async function captureCResumeIframeToFile(page, preOpenViewport, absPath) {
|
|
44
|
+
try {
|
|
45
|
+
await setTempHeight(page, preOpenViewport);
|
|
46
|
+
await sleepRandom(100, 320);
|
|
47
|
+
const iframe = await page.$('iframe[src*="c-resume"], iframe[src*="frame/c-resume"]');
|
|
48
|
+
if (!iframe) {
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
await iframe.evaluate((el) => {
|
|
52
|
+
el.scrollIntoView({ block: 'start', inline: 'nearest' });
|
|
53
|
+
});
|
|
54
|
+
const box = await iframe.boundingBox();
|
|
55
|
+
if (!box) {
|
|
56
|
+
await iframe.dispose();
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
try {
|
|
60
|
+
await iframe.screenshot({
|
|
61
|
+
path: absPath,
|
|
62
|
+
type: 'png',
|
|
63
|
+
captureBeyondViewport: true,
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
finally {
|
|
67
|
+
await iframe.dispose();
|
|
68
|
+
}
|
|
69
|
+
await closeCResumePanel(page);
|
|
70
|
+
return true;
|
|
71
|
+
}
|
|
72
|
+
finally {
|
|
73
|
+
await resumeHeight(page, preOpenViewport);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=c_resume_capture.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"c_resume_capture.js","sourceRoot":"","sources":["../../src/toolset/c_resume_capture.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../src/toolset/chat.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../src/toolset/chat.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAyI3C,wBAAsB,0BAA0B,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAoB5E;AA6FD,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,IAAI,EACV,aAAa,EAAE,MAAM,EACrB,KAAK,UAAO,GACX,OAAO,CAAC,MAAM,CAAC,CAuPjB"}
|
package/dist/toolset/chat.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { CHAT_HISTORY_DIALOG_WAIT_MS, CHAT_HISTORY_TAB_SWITCH_MS, isBossChatIndexUrl, MOUSE_CLICK_PRESS_MS, OPEN_CHAT_AFTER_ROW_CLICK_MS, OPEN_CHAT_SCROLL_GAP_MS, randomIntInclusive, sleepRandom, } from '../browser/index.js';
|
|
2
|
+
import { ensureChatIndexAllFilter } from './list.js';
|
|
2
3
|
function chatRoleTag(from) {
|
|
3
4
|
switch (from) {
|
|
4
5
|
case 'friend':
|
|
@@ -213,9 +214,9 @@ async function fetchCandidateSummary(page) {
|
|
|
213
214
|
export async function runOpenCandidateChat(page, candidateName, exact = true) {
|
|
214
215
|
const targetName = candidateName.trim();
|
|
215
216
|
try {
|
|
216
|
-
|
|
217
|
-
if (!isBossChatIndexUrl(
|
|
218
|
-
throw new Error('
|
|
217
|
+
await ensureChatIndexAllFilter(page);
|
|
218
|
+
if (!isBossChatIndexUrl(page.url())) {
|
|
219
|
+
throw new Error('当前不在沟通列表页(/web/chat/index),无法打开候选人聊天。');
|
|
219
220
|
}
|
|
220
221
|
const norm = (v) => (v ?? '').replace(/\s+/g, ' ').trim();
|
|
221
222
|
const matcher = (value) => exact ? value === targetName : value.includes(targetName);
|