@joohw/boss-cli 0.3.5 → 0.4.1

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.
Files changed (113) hide show
  1. package/README.md +11 -14
  2. package/dist/browser/agent_operating_indicator.js +51 -51
  3. package/dist/browser/human_delay.d.ts +2 -0
  4. package/dist/browser/human_delay.d.ts.map +1 -1
  5. package/dist/browser/human_delay.js +4 -0
  6. package/dist/browser/human_delay.js.map +1 -1
  7. package/dist/cli/cliRouter.js +10 -10
  8. package/dist/cli/cliRouter.js.map +1 -1
  9. package/dist/common/auth.js +49 -49
  10. package/dist/common/boss_paywall_popup.js +87 -87
  11. package/dist/common/boss_session_lock.d.ts +2 -0
  12. package/dist/common/boss_session_lock.d.ts.map +1 -0
  13. package/dist/common/boss_session_lock.js +127 -0
  14. package/dist/common/boss_session_lock.js.map +1 -0
  15. package/dist/common/boss_session_page.d.ts +2 -2
  16. package/dist/common/boss_session_page.d.ts.map +1 -1
  17. package/dist/common/boss_session_page.js +66 -74
  18. package/dist/common/boss_session_page.js.map +1 -1
  19. package/dist/common/boss_sidebar_nav.js +25 -26
  20. package/dist/common/boss_sidebar_nav.js.map +1 -1
  21. package/dist/common/c_resume_capture.d.ts +1 -0
  22. package/dist/common/c_resume_capture.d.ts.map +1 -1
  23. package/dist/common/c_resume_capture.js +69 -32
  24. package/dist/common/c_resume_capture.js.map +1 -1
  25. package/dist/ocr/resume_ocr.d.ts.map +1 -1
  26. package/dist/ocr/resume_ocr.js +4 -1
  27. package/dist/ocr/resume_ocr.js.map +1 -1
  28. package/dist/toolset/action.d.ts.map +1 -1
  29. package/dist/toolset/action.js +11 -7
  30. package/dist/toolset/action.js.map +1 -1
  31. package/dist/toolset/chat.d.ts.map +1 -1
  32. package/dist/toolset/chat.js +246 -230
  33. package/dist/toolset/chat.js.map +1 -1
  34. package/dist/toolset/deep-search.d.ts +1 -1
  35. package/dist/toolset/deep-search.d.ts.map +1 -1
  36. package/dist/toolset/deep-search.js +291 -281
  37. package/dist/toolset/deep-search.js.map +1 -1
  38. package/dist/toolset/greet.d.ts.map +1 -1
  39. package/dist/toolset/greet.js +2 -7
  40. package/dist/toolset/greet.js.map +1 -1
  41. package/dist/toolset/jd.d.ts.map +1 -1
  42. package/dist/toolset/jd.js +134 -142
  43. package/dist/toolset/jd.js.map +1 -1
  44. package/dist/toolset/list.d.ts.map +1 -1
  45. package/dist/toolset/list.js +52 -45
  46. package/dist/toolset/list.js.map +1 -1
  47. package/dist/toolset/preview.d.ts.map +1 -1
  48. package/dist/toolset/preview.js +7 -9
  49. package/dist/toolset/preview.js.map +1 -1
  50. package/dist/toolset/recommend.d.ts +1 -1
  51. package/dist/toolset/recommend.d.ts.map +1 -1
  52. package/dist/toolset/recommend.js +223 -210
  53. package/dist/toolset/recommend.js.map +1 -1
  54. package/dist/toolset/send.d.ts.map +1 -1
  55. package/dist/toolset/send.js +6 -9
  56. package/dist/toolset/send.js.map +1 -1
  57. package/package.json +65 -63
  58. package/dist/browser/auth.d.ts +0 -33
  59. package/dist/browser/auth.d.ts.map +0 -1
  60. package/dist/browser/auth.js +0 -137
  61. package/dist/browser/auth.js.map +0 -1
  62. package/dist/browser/c_resume_capture.d.ts +0 -11
  63. package/dist/browser/c_resume_capture.d.ts.map +0 -1
  64. package/dist/browser/c_resume_capture.js +0 -76
  65. package/dist/browser/c_resume_capture.js.map +0 -1
  66. package/dist/browser/chat.d.ts +0 -7
  67. package/dist/browser/chat.d.ts.map +0 -1
  68. package/dist/browser/chat.js +0 -155
  69. package/dist/browser/chat.js.map +0 -1
  70. package/dist/browser/withLoggedInPage.d.ts +0 -7
  71. package/dist/browser/withLoggedInPage.d.ts.map +0 -1
  72. package/dist/browser/withLoggedInPage.js +0 -19
  73. package/dist/browser/withLoggedInPage.js.map +0 -1
  74. package/dist/facebook-cli/index.d.ts +0 -2
  75. package/dist/facebook-cli/index.d.ts.map +0 -1
  76. package/dist/facebook-cli/index.js +0 -2
  77. package/dist/facebook-cli/index.js.map +0 -1
  78. package/dist/toolset/c_resume_capture.d.ts +0 -11
  79. package/dist/toolset/c_resume_capture.d.ts.map +0 -1
  80. package/dist/toolset/c_resume_capture.js +0 -76
  81. package/dist/toolset/c_resume_capture.js.map +0 -1
  82. package/dist/toolset/chat_action.d.ts +0 -7
  83. package/dist/toolset/chat_action.d.ts.map +0 -1
  84. package/dist/toolset/chat_action.js +0 -355
  85. package/dist/toolset/chat_action.js.map +0 -1
  86. package/dist/toolset/list_candidates.d.ts +0 -4
  87. package/dist/toolset/list_candidates.d.ts.map +0 -1
  88. package/dist/toolset/list_candidates.js +0 -120
  89. package/dist/toolset/list_candidates.js.map +0 -1
  90. package/dist/toolset/list_positions.d.ts +0 -9
  91. package/dist/toolset/list_positions.d.ts.map +0 -1
  92. package/dist/toolset/list_positions.js +0 -41
  93. package/dist/toolset/list_positions.js.map +0 -1
  94. package/dist/toolset/open_chat.d.ts +0 -3
  95. package/dist/toolset/open_chat.d.ts.map +0 -1
  96. package/dist/toolset/open_chat.js +0 -423
  97. package/dist/toolset/open_chat.js.map +0 -1
  98. package/dist/toolset/recommend_greet.d.ts +0 -2
  99. package/dist/toolset/recommend_greet.d.ts.map +0 -1
  100. package/dist/toolset/recommend_greet.js +0 -27
  101. package/dist/toolset/recommend_greet.js.map +0 -1
  102. package/dist/toolset/search.d.ts +0 -24
  103. package/dist/toolset/search.d.ts.map +0 -1
  104. package/dist/toolset/search.js +0 -682
  105. package/dist/toolset/search.js.map +0 -1
  106. package/dist/toolset/send_message.d.ts +0 -12
  107. package/dist/toolset/send_message.d.ts.map +0 -1
  108. package/dist/toolset/send_message.js +0 -214
  109. package/dist/toolset/send_message.js.map +0 -1
  110. package/dist/toolset/skill.d.ts +0 -13
  111. package/dist/toolset/skill.d.ts.map +0 -1
  112. package/dist/toolset/skill.js +0 -85
  113. package/dist/toolset/skill.js.map +0 -1
@@ -1,9 +1,6 @@
1
- import { sleepRandom } from '../browser/index.js';
2
- import { createWaitManualLoginRequiredText } from '../common/auth.js';
3
1
  import { withBossSessionPage } from '../common/boss_session_page.js';
4
2
  import { clickBossSidebarMenuToPath } from '../common/boss_sidebar_nav.js';
5
3
  const BOSS_CHAT_RECOMMEND_URL = 'https://www.zhipin.com/web/chat/recommend';
6
- const RECOMMEND_SETTLE_MS = { min: 1400, max: 2400 };
7
4
  /** 会话内记录:通过 greet 新出现的推荐卡片(以 geekId 识别) */
8
5
  const sessionGreetProducedGeekIds = new Set();
9
6
  /**
@@ -44,77 +41,109 @@ async function getRecommendFrame(page) {
44
41
  throw new Error('已检测到推荐 iframe,但无法获取其页面上下文(recommendFrame)。');
45
42
  }
46
43
  async function ensureRecommendFrameReady(frame) {
47
- await frame.waitForFunction(`(() => {
48
- const sel = ${JSON.stringify(RECOMMEND_CARD_ROOT_SELECTOR)};
49
- if (document.querySelector(sel)) return true;
50
- const root = document.querySelector(".card-list, .geek-list-wrap .geek-list");
51
- return !!root;
44
+ await frame.waitForFunction(`(() => {
45
+ const sel = ${JSON.stringify(RECOMMEND_CARD_ROOT_SELECTOR)};
46
+ if (document.querySelector(sel)) return true;
47
+ const root = document.querySelector(".card-list, .geek-list-wrap .geek-list");
48
+ return !!root;
52
49
  })()`, { timeout: 15_000 });
53
50
  }
54
51
  async function readCurrentRecommendJobLabel(frame) {
55
- return (await frame.evaluate(`(() => {
56
- const norm = (v) => (v ?? "").replace(/\\s+/g, " ").trim();
57
- return norm(document.querySelector(".job-selecter-wrap .ui-dropmenu-label")?.textContent);
52
+ return (await frame.evaluate(`(() => {
53
+ const norm = (v) => (v ?? "").replace(/\\s+/g, " ").trim();
54
+ return norm(document.querySelector(".job-selecter-wrap .ui-dropmenu-label")?.textContent);
58
55
  })()`));
59
56
  }
57
+ async function waitForRecommendJobDropdownReady(frame) {
58
+ await frame.waitForFunction(`(() => {
59
+ const options = document.querySelector(".job-selecter-options");
60
+ if (!(options instanceof HTMLElement)) return false;
61
+ const rect = options.getBoundingClientRect();
62
+ const style = window.getComputedStyle(options);
63
+ if (rect.width <= 0 || rect.height <= 0 || style.display === "none" || style.visibility === "hidden") {
64
+ return false;
65
+ }
66
+ return !!options.querySelector(".top-chat-search .chat-job-search");
67
+ })()`, { timeout: 6_000 });
68
+ }
69
+ async function waitForRecommendJobSearchResults(frame, keyword) {
70
+ await frame.waitForFunction(`((kw) => {
71
+ const norm = (v) => (v ?? "").replace(/\\s+/g, "").trim().toLowerCase();
72
+ const rows = Array.from(document.querySelectorAll(".job-selecter-options .job-list .job-item"));
73
+ if (rows.length === 0) return false;
74
+ if (!kw) return true;
75
+ return rows.some((el) => {
76
+ const label = norm(el.querySelector(".label")?.textContent || el.textContent || "");
77
+ return label.includes(norm(kw));
78
+ });
79
+ })`, { timeout: 8_000 }, keyword);
80
+ }
81
+ async function waitForRecommendJobSelected(frame, expectedLabel) {
82
+ await frame.waitForFunction(`((label) => {
83
+ const norm = (v) => (v ?? "").replace(/\\s+/g, " ").trim();
84
+ const current = norm(document.querySelector(".job-selecter-wrap .ui-dropmenu-label")?.textContent);
85
+ return !!current && current === label;
86
+ })`, { timeout: 8_000 }, expectedLabel);
87
+ await ensureRecommendFrameReady(frame);
88
+ }
60
89
  export async function selectRecommendJob(frame, keyword) {
61
90
  const kw = keyword.trim();
62
91
  if (!kw) {
63
92
  return readCurrentRecommendJobLabel(frame);
64
93
  }
65
94
  const kwLiteral = JSON.stringify(kw);
66
- const opened = (await frame.evaluate(`(() => {
67
- const host = document.querySelector(".job-selecter-wrap .ui-dropmenu-label");
68
- if (!(host instanceof HTMLElement)) return false;
69
- host.scrollIntoView({ block: "center", inline: "nearest" });
70
- host.click();
71
- return true;
95
+ const opened = (await frame.evaluate(`(() => {
96
+ const host = document.querySelector(".job-selecter-wrap .ui-dropmenu-label");
97
+ if (!(host instanceof HTMLElement)) return false;
98
+ host.scrollIntoView({ block: "center", inline: "nearest" });
99
+ host.click();
100
+ return true;
72
101
  })()`));
73
102
  if (!opened) {
74
103
  throw new Error('未找到岗位下拉入口(.job-selecter-wrap .ui-dropmenu-label)。');
75
104
  }
76
- await sleepRandom(380, 820);
77
- const searched = (await frame.evaluate(`(() => {
78
- const kw = ${kwLiteral};
79
- const input = document.querySelector(".job-selecter-options .top-chat-search .chat-job-search");
80
- if (!(input instanceof HTMLInputElement)) return false;
81
- input.focus();
82
- input.value = kw;
83
- input.dispatchEvent(new Event("input", { bubbles: true }));
84
- input.dispatchEvent(new Event("change", { bubbles: true }));
85
- return true;
105
+ await waitForRecommendJobDropdownReady(frame);
106
+ const searched = (await frame.evaluate(`(() => {
107
+ const kw = ${kwLiteral};
108
+ const input = document.querySelector(".job-selecter-options .top-chat-search .chat-job-search");
109
+ if (!(input instanceof HTMLInputElement)) return false;
110
+ input.focus();
111
+ input.value = kw;
112
+ input.dispatchEvent(new Event("input", { bubbles: true }));
113
+ input.dispatchEvent(new Event("change", { bubbles: true }));
114
+ return true;
86
115
  })()`));
87
116
  if (!searched) {
88
117
  throw new Error('已打开岗位下拉,但未找到职位搜索框(.chat-job-search)。');
89
118
  }
90
- await sleepRandom(520, 1080);
91
- const picked = (await frame.evaluate(`(() => {
92
- const kw = ${kwLiteral};
93
- const norm = (v) => (v ?? "").replace(/\\s+/g, "").trim().toLowerCase();
94
- const rows = Array.from(document.querySelectorAll(".job-selecter-options .job-list .job-item"));
95
- if (rows.length === 0) return { ok: false, reason: "empty" };
96
- const target = rows.find((el) => {
97
- const label = norm(el.querySelector(".label")?.textContent || el.textContent || "");
98
- return label.includes(norm(kw));
99
- });
100
- if (!(target instanceof HTMLElement)) return { ok: false, reason: "not_found" };
101
- const label = (target.querySelector(".label")?.textContent ?? target.textContent ?? "")
102
- .replace(/\\s+/g, " ")
103
- .trim();
104
- target.scrollIntoView({ block: "center", inline: "nearest" });
105
- target.click();
106
- return { ok: true, label };
119
+ await waitForRecommendJobSearchResults(frame, kw);
120
+ const picked = (await frame.evaluate(`(() => {
121
+ const kw = ${kwLiteral};
122
+ const norm = (v) => (v ?? "").replace(/\\s+/g, "").trim().toLowerCase();
123
+ const rows = Array.from(document.querySelectorAll(".job-selecter-options .job-list .job-item"));
124
+ if (rows.length === 0) return { ok: false, reason: "empty" };
125
+ const target = rows.find((el) => {
126
+ const label = norm(el.querySelector(".label")?.textContent || el.textContent || "");
127
+ return label.includes(norm(kw));
128
+ });
129
+ if (!(target instanceof HTMLElement)) return { ok: false, reason: "not_found" };
130
+ const label = (target.querySelector(".label")?.textContent ?? target.textContent ?? "")
131
+ .replace(/\\s+/g, " ")
132
+ .trim();
133
+ target.scrollIntoView({ block: "center", inline: "nearest" });
134
+ target.click();
135
+ return { ok: true, label };
107
136
  })()`));
108
137
  if (!picked.ok) {
109
138
  throw new Error(`未找到匹配岗位“${kw}”。`);
110
139
  }
111
- await sleepRandom(900, 1500);
112
- return picked.label ?? kw;
140
+ const label = picked.label ?? kw;
141
+ await waitForRecommendJobSelected(frame, label);
142
+ return label;
113
143
  }
114
144
  export async function ensureInRecommendPage(page) {
115
145
  if (!isBossChatRecommendUrl(page.url())) {
116
146
  await clickBossSidebarMenuToPath(page, '推荐', '/web/chat/recommend');
117
- await sleepRandom(RECOMMEND_SETTLE_MS.min, RECOMMEND_SETTLE_MS.max);
118
147
  }
119
148
  if (!isBossChatRecommendUrl(page.url())) {
120
149
  throw new Error('通过侧边栏“推荐”进入页面失败,请确认已登录并可访问 /web/chat/recommend。');
@@ -135,71 +164,71 @@ export async function assertRecommendPageReadyForPreview(page) {
135
164
  return frame;
136
165
  }
137
166
  export async function readRecommendList(frame) {
138
- return (await frame.evaluate(`(() => {
139
- const norm = (v) => (v ?? "").replace(/\\s+/g, " ").trim();
140
- const cardSel = ${JSON.stringify(RECOMMEND_CARD_ROOT_SELECTOR)};
141
- const cards = Array.from(document.querySelectorAll(cardSel));
142
- return cards.map((item) => {
143
- const inner = item.querySelector(".card-inner") || item;
144
- const wrap = item.matches(".candidate-card-wrap")
145
- ? item
146
- : item.querySelector(".candidate-card-wrap");
147
- const hasViewed = Boolean(
148
- (wrap && wrap.classList.contains("has-viewed")) ||
149
- (inner && inner.classList.contains("has-viewed")),
150
- );
151
- const geekId =
152
- inner?.getAttribute("data-geekid") ??
153
- inner?.getAttribute("data-geek") ??
154
- "";
155
- const name =
156
- norm(item.querySelector(".name-wrap .name")?.textContent) ||
157
- norm(item.querySelector(".name")?.textContent);
158
- const salary = norm(item.querySelector(".salary-wrap span")?.textContent);
159
- const baseInfo = Array.from(item.querySelectorAll(".base-info span"))
160
- .map((el) => norm(el.textContent))
161
- .filter(Boolean)
162
- .join(" / ");
163
- const expect =
164
- norm(item.querySelector(".expect-wrap .content")?.textContent) ||
165
- norm(item.querySelector(".expect-wrap .join-text-wrap")?.textContent);
166
- const experience = norm(item.querySelector(".experience-wrap .join-text-wrap")?.textContent);
167
- const advantage = norm(item.querySelector(".geek-desc .content")?.textContent);
168
- const highlightLabels = [
169
- ...Array.from(item.querySelectorAll(".operate .labels .label")),
170
- ...Array.from(item.querySelectorAll(".tags-wrap .tag-item")),
171
- ]
172
- .map((el) => norm(el.textContent))
173
- .filter(Boolean);
174
- const highlights = [...new Set(highlightLabels)];
175
- const greetBtn = item.querySelector(".button-chat-wrap .btn.btn-greet");
176
- const btnCls = greetBtn?.className ?? "";
177
- const disabled =
178
- !greetBtn ||
179
- /disabled|forbid|ban/i.test(btnCls) ||
180
- greetBtn.getAttribute("disabled") !== null;
181
- const hasHistoryChat = (() => {
182
- if (item.querySelector(".tooltip-wrap.chat-history .icon-chat-history")) return true;
183
- const uses = Array.from(item.querySelectorAll("use"));
184
- return uses.some((u) => {
185
- const href = u.getAttribute("href") ?? u.getAttributeNS("http://www.w3.org/1999/xlink", "href") ?? "";
186
- return href.includes("icon-chat-history");
187
- });
188
- })();
189
- return {
190
- geekId,
191
- name,
192
- salary,
193
- baseInfo,
194
- expect,
195
- experience,
196
- advantage,
197
- highlights,
198
- canGreet: !disabled,
199
- hasHistoryChat,
200
- hasViewed,
201
- };
202
- }).filter((x) => x.name);
167
+ return (await frame.evaluate(`(() => {
168
+ const norm = (v) => (v ?? "").replace(/\\s+/g, " ").trim();
169
+ const cardSel = ${JSON.stringify(RECOMMEND_CARD_ROOT_SELECTOR)};
170
+ const cards = Array.from(document.querySelectorAll(cardSel));
171
+ return cards.map((item) => {
172
+ const inner = item.querySelector(".card-inner") || item;
173
+ const wrap = item.matches(".candidate-card-wrap")
174
+ ? item
175
+ : item.querySelector(".candidate-card-wrap");
176
+ const hasViewed = Boolean(
177
+ (wrap && wrap.classList.contains("has-viewed")) ||
178
+ (inner && inner.classList.contains("has-viewed")),
179
+ );
180
+ const geekId =
181
+ inner?.getAttribute("data-geekid") ??
182
+ inner?.getAttribute("data-geek") ??
183
+ "";
184
+ const name =
185
+ norm(item.querySelector(".name-wrap .name")?.textContent) ||
186
+ norm(item.querySelector(".name")?.textContent);
187
+ const salary = norm(item.querySelector(".salary-wrap span")?.textContent);
188
+ const baseInfo = Array.from(item.querySelectorAll(".base-info span"))
189
+ .map((el) => norm(el.textContent))
190
+ .filter(Boolean)
191
+ .join(" / ");
192
+ const expect =
193
+ norm(item.querySelector(".expect-wrap .content")?.textContent) ||
194
+ norm(item.querySelector(".expect-wrap .join-text-wrap")?.textContent);
195
+ const experience = norm(item.querySelector(".experience-wrap .join-text-wrap")?.textContent);
196
+ const advantage = norm(item.querySelector(".geek-desc .content")?.textContent);
197
+ const highlightLabels = [
198
+ ...Array.from(item.querySelectorAll(".operate .labels .label")),
199
+ ...Array.from(item.querySelectorAll(".tags-wrap .tag-item")),
200
+ ]
201
+ .map((el) => norm(el.textContent))
202
+ .filter(Boolean);
203
+ const highlights = [...new Set(highlightLabels)];
204
+ const greetBtn = item.querySelector(".button-chat-wrap .btn.btn-greet");
205
+ const btnCls = greetBtn?.className ?? "";
206
+ const disabled =
207
+ !greetBtn ||
208
+ /disabled|forbid|ban/i.test(btnCls) ||
209
+ greetBtn.getAttribute("disabled") !== null;
210
+ const hasHistoryChat = (() => {
211
+ if (item.querySelector(".tooltip-wrap.chat-history .icon-chat-history")) return true;
212
+ const uses = Array.from(item.querySelectorAll("use"));
213
+ return uses.some((u) => {
214
+ const href = u.getAttribute("href") ?? u.getAttributeNS("http://www.w3.org/1999/xlink", "href") ?? "";
215
+ return href.includes("icon-chat-history");
216
+ });
217
+ })();
218
+ return {
219
+ geekId,
220
+ name,
221
+ salary,
222
+ baseInfo,
223
+ expect,
224
+ experience,
225
+ advantage,
226
+ highlights,
227
+ canGreet: !disabled,
228
+ hasHistoryChat,
229
+ hasViewed,
230
+ };
231
+ }).filter((x) => x.name);
203
232
  })()`));
204
233
  }
205
234
  export function renderRecommendList(candidates) {
@@ -252,51 +281,44 @@ export function renderRecommendList(candidates) {
252
281
  }
253
282
  export async function clickGreet(frame, target) {
254
283
  const targetLiteral = JSON.stringify(target.trim());
255
- const result = (await frame.evaluate(`(() => {
256
- const raw = ${targetLiteral};
257
- const norm = (v) => (v ?? "").replace(/\\s+/g, " ").trim();
258
- const cardSel = ${JSON.stringify(RECOMMEND_CARD_ROOT_SELECTOR)};
259
- const cards = Array.from(document.querySelectorAll(cardSel));
260
- if (cards.length === 0) {
261
- return { kind: "empty" };
262
- }
263
-
264
- const idxNum = Number.parseInt(raw, 10);
265
- let targetCard = null;
266
- if (Number.isFinite(idxNum) && idxNum >= 1 && idxNum <= cards.length) {
267
- targetCard = cards[idxNum - 1];
268
- } else {
269
- targetCard = cards.find((item) => {
270
- const name =
271
- norm(item.querySelector(".name-wrap .name")?.textContent) ||
272
- norm(item.querySelector(".name")?.textContent);
273
- return name === raw || name.includes(raw);
274
- }) ?? null;
275
- }
276
- if (!targetCard) {
277
- return { kind: "not_found", target: raw };
278
- }
279
-
280
- const name =
281
- norm(targetCard.querySelector(".name-wrap .name")?.textContent) ||
282
- norm(targetCard.querySelector(".name")?.textContent);
283
- const inner = targetCard.querySelector(".card-inner") || targetCard;
284
- const geekId =
285
- inner?.getAttribute("data-geekid") ??
286
- inner?.getAttribute("data-geek") ??
287
- "";
288
- const btn = targetCard.querySelector(".button-chat-wrap .btn.btn-greet");
289
- if (!(btn instanceof HTMLElement)) {
290
- return { kind: "no_btn", name };
291
- }
292
- const cls = btn.className ?? "";
293
- const disabled = /disabled|forbid|ban/i.test(cls) || btn.getAttribute("disabled") !== null;
294
- if (disabled) {
295
- return { kind: "disabled", name };
296
- }
297
- btn.scrollIntoView({ block: "center", inline: "nearest" });
298
- btn.click();
299
- return { kind: "clicked", name, geekId };
284
+ const result = (await frame.evaluate(`(() => {
285
+ const raw = ${targetLiteral};
286
+ const norm = (v) => (v ?? "").replace(/\\s+/g, " ").trim();
287
+ const cardSel = ${JSON.stringify(RECOMMEND_CARD_ROOT_SELECTOR)};
288
+ const cards = Array.from(document.querySelectorAll(cardSel));
289
+ if (cards.length === 0) {
290
+ return { kind: "empty" };
291
+ }
292
+ const targetCard = cards.find((item) => {
293
+ const name =
294
+ norm(item.querySelector(".name-wrap .name")?.textContent) ||
295
+ norm(item.querySelector(".name")?.textContent);
296
+ return name === raw || name.includes(raw);
297
+ }) ?? null;
298
+ if (!targetCard) {
299
+ return { kind: "not_found", target: raw };
300
+ }
301
+
302
+ const name =
303
+ norm(targetCard.querySelector(".name-wrap .name")?.textContent) ||
304
+ norm(targetCard.querySelector(".name")?.textContent);
305
+ const inner = targetCard.querySelector(".card-inner") || targetCard;
306
+ const geekId =
307
+ inner?.getAttribute("data-geekid") ??
308
+ inner?.getAttribute("data-geek") ??
309
+ "";
310
+ const btn = targetCard.querySelector(".button-chat-wrap .btn.btn-greet");
311
+ if (!(btn instanceof HTMLElement)) {
312
+ return { kind: "no_btn", name };
313
+ }
314
+ const cls = btn.className ?? "";
315
+ const disabled = /disabled|forbid|ban/i.test(cls) || btn.getAttribute("disabled") !== null;
316
+ if (disabled) {
317
+ return { kind: "disabled", name };
318
+ }
319
+ btn.scrollIntoView({ block: "center", inline: "nearest" });
320
+ btn.click();
321
+ return { kind: "clicked", name, geekId };
300
322
  })()`));
301
323
  switch (result.kind) {
302
324
  case 'empty':
@@ -326,61 +348,55 @@ export function markGreetProduced(before, after) {
326
348
  });
327
349
  }
328
350
  /**
329
- * 在推荐 iframe 内根据姓名或序号打开在线简历预览:点击候选人卡片主体 `.card-inner`(与侧栏「打招呼」分离)。
351
+ * 在推荐 iframe 内根据姓名打开在线简历预览:点击候选人卡片主体 `.card-inner`(与侧栏「打招呼」分离)。
330
352
  * 父页随后出现 `c-resume` iframe(如 `source=recommend`)。旧版仅有「在线简历」链接时仍尝试点击链接。
331
353
  */
332
354
  export async function openRecommendResumePreview(frame, target) {
333
355
  const raw = target.trim();
334
356
  const targetLiteral = JSON.stringify(raw);
335
- return (await frame.evaluate(`(() => {
336
- const raw = ${targetLiteral};
337
- const norm = (v) => (v ?? "").replace(/\\s+/g, " ").trim();
338
- const cardSel = ${JSON.stringify(RECOMMEND_CARD_ROOT_SELECTOR)};
339
- const cards = Array.from(document.querySelectorAll(cardSel));
340
- if (cards.length === 0) return false;
341
- const idxNum = Number.parseInt(raw, 10);
342
- let targetCard = null;
343
- if (Number.isFinite(idxNum) && idxNum >= 1 && idxNum <= cards.length) {
344
- targetCard = cards[idxNum - 1];
345
- } else {
346
- targetCard = cards.find((item) => {
347
- const name =
348
- norm(item.querySelector(".name-wrap .name")?.textContent) ||
349
- norm(item.querySelector(".name")?.textContent);
350
- return name === raw || name.includes(raw);
351
- }) ?? null;
352
- }
353
- if (!targetCard) return false;
354
-
355
- function tryOpen(el) {
356
- if (!(el instanceof HTMLElement)) return false;
357
- if (el.classList.contains("disabled")) return false;
358
- const st = window.getComputedStyle(el);
359
- if (st.pointerEvents === "none" || Number(st.opacity) < 0.3) return false;
360
- el.scrollIntoView({ block: "center", inline: "nearest" });
361
- el.click();
362
- return true;
363
- }
364
-
365
- const inner = targetCard.querySelector(".card-inner");
366
- if (inner instanceof HTMLElement) {
367
- inner.scrollIntoView({ block: "center", inline: "nearest" });
368
- inner.click();
369
- return true;
370
- }
371
-
372
- const resumeOnline = targetCard.querySelector("a.resume-btn-online");
373
- if (tryOpen(resumeOnline)) return true;
374
- const hrefResume = targetCard.querySelector('a[href*="c-resume"], a[href*="frame/c-resume"]');
375
- if (tryOpen(hrefResume)) return true;
376
-
377
- const links = Array.from(targetCard.querySelectorAll("a, button, .btn")).filter((node) => {
378
- const t = norm(node.textContent);
379
- return /在线简历|查看简历|简历预览|预览/.test(t);
380
- });
381
- if (links.length > 0 && tryOpen(links[0])) return true;
382
-
383
- return false;
357
+ return (await frame.evaluate(`(() => {
358
+ const raw = ${targetLiteral};
359
+ const norm = (v) => (v ?? "").replace(/\\s+/g, " ").trim();
360
+ const cardSel = ${JSON.stringify(RECOMMEND_CARD_ROOT_SELECTOR)};
361
+ const cards = Array.from(document.querySelectorAll(cardSel));
362
+ if (cards.length === 0) return false;
363
+ const targetCard = cards.find((item) => {
364
+ const name =
365
+ norm(item.querySelector(".name-wrap .name")?.textContent) ||
366
+ norm(item.querySelector(".name")?.textContent);
367
+ return name === raw || name.includes(raw);
368
+ }) ?? null;
369
+ if (!targetCard) return false;
370
+
371
+ function tryOpen(el) {
372
+ if (!(el instanceof HTMLElement)) return false;
373
+ if (el.classList.contains("disabled")) return false;
374
+ const st = window.getComputedStyle(el);
375
+ if (st.pointerEvents === "none" || Number(st.opacity) < 0.3) return false;
376
+ el.scrollIntoView({ block: "center", inline: "nearest" });
377
+ el.click();
378
+ return true;
379
+ }
380
+
381
+ const inner = targetCard.querySelector(".card-inner");
382
+ if (inner instanceof HTMLElement) {
383
+ inner.scrollIntoView({ block: "center", inline: "nearest" });
384
+ inner.click();
385
+ return true;
386
+ }
387
+
388
+ const resumeOnline = targetCard.querySelector("a.resume-btn-online");
389
+ if (tryOpen(resumeOnline)) return true;
390
+ const hrefResume = targetCard.querySelector('a[href*="c-resume"], a[href*="frame/c-resume"]');
391
+ if (tryOpen(hrefResume)) return true;
392
+
393
+ const links = Array.from(targetCard.querySelectorAll("a, button, .btn")).filter((node) => {
394
+ const t = norm(node.textContent);
395
+ return /在线简历|查看简历|简历预览|预览/.test(t);
396
+ });
397
+ if (links.length > 0 && tryOpen(links[0])) return true;
398
+
399
+ return false;
384
400
  })()`));
385
401
  }
386
402
  export async function runRecommend(jobKeyword) {
@@ -395,9 +411,6 @@ export async function runRecommend(jobKeyword) {
395
411
  }
396
412
  catch (e) {
397
413
  const message = e instanceof Error ? e.message : String(e);
398
- if (e instanceof Error && e.message.includes('浏览器会话尚未初始化')) {
399
- throw new Error(createWaitManualLoginRequiredText('查看推荐列表'));
400
- }
401
414
  throw new Error(`读取推荐列表失败:${message}`);
402
415
  }
403
416
  }
@@ -1 +1 @@
1
- {"version":3,"file":"recommend.js","sourceRoot":"","sources":["../../src/toolset/recommend.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recommend.js","sourceRoot":"","sources":["../../src/toolset/recommend.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"send.d.ts","sourceRoot":"","sources":["../../src/toolset/send.ts"],"names":[],"mappings":"AAYA,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,CAAC;AAEF,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,MAAM,CAAC,CA4DzF"}
1
+ {"version":3,"file":"send.d.ts","sourceRoot":"","sources":["../../src/toolset/send.ts"],"names":[],"mappings":"AAaA,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,CAAC;AAEF,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,MAAM,CAAC,CAyDzF"}
@@ -1,5 +1,5 @@
1
- import { randomIntInclusive, SEND_AFTER_ENTER_MS, SEND_INPUT_CLICK_MS, SEND_TYPING_GAP_MS, sleepRandom, typeTextWithRandomKeyDelay, } from '../browser/index.js';
2
- import { createWaitManualLoginRequiredText, isBossChatIndexUrl } from '../common/auth.js';
1
+ import { randomIntInclusive, selectAllModifierKey, SEND_AFTER_ENTER_MS, SEND_INPUT_CLICK_MS, SEND_TYPING_GAP_MS, sleepRandom, typeTextWithRandomKeyDelay, } from '../browser/index.js';
2
+ import { isBossChatIndexUrl } from '../common/auth.js';
3
3
  import { withBossSessionPage } from '../common/boss_session_page.js';
4
4
  import { runRequestAttachmentResume } from './action.js';
5
5
  export async function runSendChatMessage(options) {
@@ -23,9 +23,10 @@ export async function runSendChatMessage(options) {
23
23
  delay: randomIntInclusive(SEND_INPUT_CLICK_MS.min, SEND_INPUT_CLICK_MS.max),
24
24
  });
25
25
  await sleepRandom(60, 220, signal);
26
- await page.keyboard.down('Control');
26
+ const selectAllMod = selectAllModifierKey();
27
+ await page.keyboard.down(selectAllMod);
27
28
  await page.keyboard.press('KeyA');
28
- await page.keyboard.up('Control');
29
+ await page.keyboard.up(selectAllMod);
29
30
  await sleepRandom(45, 180, signal);
30
31
  await page.keyboard.press('Backspace');
31
32
  await sleepRandom(80, 260, signal);
@@ -42,14 +43,10 @@ export async function runSendChatMessage(options) {
42
43
  });
43
44
  }
44
45
  catch (e) {
45
- const message = e instanceof Error ? e.message : String(e);
46
46
  if (e instanceof Error) {
47
- if (e.message.includes('浏览器会话尚未初始化')) {
48
- throw new Error(createWaitManualLoginRequiredText('发送消息'));
49
- }
50
47
  throw e;
51
48
  }
52
- throw new Error(`发送消息失败:${message}`);
49
+ throw new Error(`发送消息失败:${String(e)}`);
53
50
  }
54
51
  }
55
52
  //# sourceMappingURL=send.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"send.js","sourceRoot":"","sources":["../../src/toolset/send.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"send.js","sourceRoot":"","sources":["../../src/toolset/send.ts"],"names":[],"mappings":"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"}