This commit is contained in:
张成
2026-04-16 14:01:52 +08:00
parent 7ef0c68ad1
commit df0aacc782
10 changed files with 531 additions and 22 deletions

View File

@@ -111,7 +111,7 @@ class DeliverHandler extends BaseHandler {
const recentCompanies = await this.getRecentDeliveredCompanies(sn_code, repeatDeliverDays);
// 10. 过滤 + 评分 + 按 60 分阈值筛(入口在 jobFilterEngine便于阅读
const filteredJobs = await jobFilterEngine.filterAndScoreJobsForDeliver(
const { scored: filteredJobs, skipReasonByJobId } = await jobFilterEngine.filterAndScoreJobsForDeliver(
pendingJobs,
filterConfig,
resume,
@@ -121,7 +121,7 @@ class DeliverHandler extends BaseHandler {
);
// 本轮未进入「可投递」列表的待投递记录,标记为已过滤,避免长期停留在 pending
await this.markFilteredJobsNotPassed(pendingJobs, filteredJobs, sn_code, platform);
await this.markFilteredJobsNotPassed(pendingJobs, filteredJobs, sn_code, platform, skipReasonByJobId);
const jobsToDeliver = filteredJobs.slice(0, actualMaxCount);
@@ -302,7 +302,7 @@ class DeliverHandler extends BaseHandler {
* @param {Array} pendingJobs - 本批拉取的待投递
* @param {Array} filteredJobs - filterAndScoreJobsForDeliver 通过的结果(含 matchScore
*/
async markFilteredJobsNotPassed(pendingJobs, filteredJobs, sn_code, platform) {
async markFilteredJobsNotPassed(pendingJobs, filteredJobs, sn_code, platform, skipReasonByJobId = {}) {
if (!pendingJobs || pendingJobs.length === 0) {
return;
}
@@ -316,20 +316,30 @@ class DeliverHandler extends BaseHandler {
return;
}
const job_postings = db.getModel('job_postings');
const { op } = db.models;
const default_reason = '未通过自动投递筛选';
try {
const [n] = await job_postings.update(
{ applyStatus: 'filtered' },
{
where: {
id: { [op.in]: notPassedIds },
sn_code,
platform,
applyStatus: 'pending'
}
}
await Promise.all(
notPassedIds.map((id) => {
const reason = (skipReasonByJobId && skipReasonByJobId[id]) || default_reason;
const text = String(reason).slice(0, 65000);
return job_postings.update(
{
applyStatus: 'filtered',
is_delivered: false,
deliver_failed_reason: text
},
{
where: {
id,
sn_code,
platform,
applyStatus: 'pending'
}
}
);
})
);
console.log(`[自动投递] 不符合条件已标记 filtered: ${notPassedIds.length} 条(更新行数 ${n}`);
console.log(`[自动投递] 不符合条件已标记 filtered: ${notPassedIds.length} 条(含原因`);
} catch (e) {
console.warn('[自动投递] 标记 filtered 失败:', e.message);
}