This commit is contained in:
张成
2025-12-17 16:35:03 +08:00
parent 9701c87241
commit 663a5f7fa6
2 changed files with 232 additions and 184 deletions

View File

@@ -1069,10 +1069,46 @@ class TaskQueue {
runningCount: 0
};
// 辅助函数:从任务参数中提取职位和公司信息
const extractJobInfo = (taskData) => {
let jobTitle = null;
let companyName = null;
// 尝试从 taskParams 中提取
if (taskData.taskParams) {
let params = null;
try {
params = typeof taskData.taskParams === 'string'
? JSON.parse(taskData.taskParams)
: taskData.taskParams;
} catch (e) {
// 解析失败,忽略
}
if (params) {
jobTitle = params.jobTitle || params.job_title || null;
companyName = params.companyName || params.company_name || params.brandName || params.brand_name || null;
}
}
// 如果 taskName 中包含职位信息(格式:投递简历 - 职位名 @ 公司名)
if (!jobTitle || !companyName) {
const taskName = taskData.taskName || taskData.task_name || '';
const match = taskName.match(/投递简历[:]\s*(.+?)\s*@\s*(.+?)(?:\s*\(|$)/);
if (match) {
if (!jobTitle) jobTitle = match[1].trim();
if (!companyName) companyName = match[2].trim();
}
}
return { jobTitle, companyName };
};
// 获取当前执行的任务(优先从内存状态获取,如果没有则从数据库查询)
let currentTask = null;
if (status.currentTask) {
const taskData = status.currentTask;
const { jobTitle, companyName } = extractJobInfo(taskData);
currentTask = {
taskId: taskData.id,
taskName: taskData.taskName || taskData.task_name || taskData.taskType || taskData.task_type || '未知任务',
@@ -1080,7 +1116,9 @@ class TaskQueue {
status: 'running',
progress: taskData.progress || 0,
currentStep: taskData.currentStep || taskData.current_step || '',
startTime: taskData.startTime || taskData.start_time || taskData.created_time
startTime: taskData.startTime || taskData.start_time || taskData.created_time,
jobTitle: jobTitle,
companyName: companyName
};
} else {
// 如果内存中没有,从数据库查询当前运行的任务
@@ -1096,6 +1134,11 @@ class TaskQueue {
if (runningTask) {
const taskData = runningTask.toJSON();
// 确保 taskParams 字段名正确(可能是 taskParams 或 task_params
if (!taskData.taskParams && taskData.task_params) {
taskData.taskParams = taskData.task_params;
}
const { jobTitle, companyName } = extractJobInfo(taskData);
currentTask = {
taskId: taskData.id,
taskName: taskData.taskName || taskData.task_name || taskData.taskType || taskData.task_type || '未知任务',
@@ -1103,7 +1146,9 @@ class TaskQueue {
status: 'running',
progress: taskData.progress || 0,
currentStep: taskData.currentStep || taskData.current_step || '',
startTime: taskData.startTime || taskData.start_time || taskData.created_time
startTime: taskData.startTime || taskData.start_time || taskData.created_time,
jobTitle: jobTitle,
companyName: companyName
};
}
} catch (error) {
@@ -1241,6 +1286,28 @@ class TaskQueue {
// 改进日志输出,显示更详细的任务信息
if (summary.currentTask) {
const task = summary.currentTask;
// 构建任务标识信息
let taskIdentifier = task.taskName || task.taskType || '未知任务';
// 如果是投递简历任务,显示具体的职位和公司信息
if (task.jobTitle || task.companyName) {
const jobInfo = [];
if (task.jobTitle) {
jobInfo.push(task.jobTitle);
}
if (task.companyName) {
// 截断过长的公司名称
const companyName = task.companyName.length > 20
? task.companyName.substring(0, 20) + '...'
: task.companyName;
jobInfo.push(companyName);
}
if (jobInfo.length > 0) {
taskIdentifier = `投递职位: ${jobInfo.join(' @ ')}`;
}
}
const progressInfo = task.progress !== null && task.progress !== undefined
? `进度: ${task.progress}%`
: '';
@@ -1249,9 +1316,10 @@ class TaskQueue {
: '';
const detailInfo = [progressInfo, stepInfo].filter(Boolean).join(', ');
const detailStr = detailInfo ? ` (${detailInfo})` : '';
// 使用总待执行数(包括当前任务的剩余步骤)
const totalCount = summary.totalPendingCount !== undefined ? summary.totalPendingCount : summary.pendingCount;
console.log(`[任务队列] 已发送任务状态摘要到 ${sn_code}: 当前任务=${task.taskName || task.taskType || '未知任务'}${detailStr}, 待执行=${totalCount}`);
console.log(`[任务队列] 已发送任务状态摘要到 ${sn_code}: 当前任务=${taskIdentifier}${detailStr}, 待执行=${totalCount}`);
} else {
console.log(`[任务队列] 已发送任务状态摘要到 ${sn_code}: 当前任务=无, 待执行=${summary.pendingCount}`);
}