diff --git a/packages/boss-auto-browse-and-chat/chat-page-processor.mjs b/packages/boss-auto-browse-and-chat/chat-page-processor.mjs index 3cf5963..83e6c51 100644 --- a/packages/boss-auto-browse-and-chat/chat-page-processor.mjs +++ b/packages/boss-auto-browse-and-chat/chat-page-processor.mjs @@ -705,7 +705,8 @@ export default async function startBossChatPageProcess (hooksFromCaller, options result = await evaluateResumeByRubric(resumeText, { knockouts: llmConfig.rubric?.knockouts, dimensions: llmConfig.rubric?.dimensions, - passThreshold: llmConfig.passThreshold ?? 75 + passThreshold: llmConfig.rubric?.passThreshold ?? llmConfig.passThreshold ?? 75, + _scoring_note: llmConfig.rubric?._scoring_note }) pass = result.isPassed filterReason = result.reason || '' diff --git a/packages/boss-auto-browse-and-chat/llm-rubric.mjs b/packages/boss-auto-browse-and-chat/llm-rubric.mjs index 8227d3a..15fa438 100644 --- a/packages/boss-auto-browse-and-chat/llm-rubric.mjs +++ b/packages/boss-auto-browse-and-chat/llm-rubric.mjs @@ -87,7 +87,7 @@ export function getEnabledLlmClient (purpose = 'resume_screening', preferModelId /** * 根据 Rubric 评估简历。 * @param {string} resumeText - 简历全文 - * @param {{ knockouts?: string[], dimensions?: Array<{ name: string, weight: number, criteria: Record }>, passThreshold?: number }} rubricConfig + * @param {{ knockouts?: string[], dimensions?: Array<{ name: string, weight: number, criteria: Record }>, passThreshold?: number, _scoring_note?: string }} rubricConfig * @param {{ modelId?: string | null }} [options] * @returns {Promise<{ isPassed: boolean, totalScore: number, reason: string }>} 失败时默认通过 */ @@ -100,6 +100,7 @@ export async function evaluateResumeByRubric (resumeText, rubricConfig, options const knockouts = Array.isArray(rubricConfig?.knockouts) ? rubricConfig.knockouts : [] const dimensions = Array.isArray(rubricConfig?.dimensions) ? rubricConfig.dimensions : [] const passThreshold = typeof rubricConfig?.passThreshold === 'number' ? rubricConfig.passThreshold : 75 + const scoringNote = typeof rubricConfig?._scoring_note === 'string' ? rubricConfig._scoring_note : null if (dimensions.length === 0) { return { isPassed: true, totalScore: 100, reason: '无评分维度,默认通过' } @@ -132,6 +133,10 @@ ${dimensionsDesc} "reasoning": "简要判断理由" }` + if (scoringNote) { + systemContent += `\n\n【评分说明】\n${scoringNote}` + } + try { logInfo(LOG, 'evaluateResumeByRubric start', { model: client.model,