Install
openclaw skills install @suql82/suql-interview-report-generatoropenclaw skills install @suql82/suql-interview-report-generator当需要生成面试分析报告时调用此 Skill。适用于批量岗位面试后的候选人评估报告生成。
面试分析报告是用于正式评估面试候选人的专业文档,必须遵循以下原则:
生成面试分析报告需要以下五份材料,所有材料均为必含项,如某项缺失需在报告中标注"待补充"。
| 序号 | 材料名称 | 格式要求 | 说明 | 核心作用 |
|---|---|---|---|---|
| 1 | 岗位职责和任职要求 | .docx/.pdf/.md/.txt | 岗位JD文件 | 作为评估基准 |
| 2 | 简历 | .docx/.pdf/.jpg/.png | 候选人简历 | 提取基本信息 |
| 3 | 简历分析报告 | .docx/.pdf | 简历结构化分析(如有) | 提取已有分析内容 |
| 4 | 应聘登记表 | .docx/.pdf | 个人信息、期望薪资 | 提取薪资期望 |
| 5 | 面试记录 | .docx/.pdf/.jpg/.png | 面试问答记录 | 提取面试表现 |
{姓名}/
├── 01_岗位要求.docx / .pdf / .md
├── 02_简历.docx / .pdf / .jpg
├── 03_简历分析报告.docx / .pdf(如有)
├── 04_应聘登记表.docx / .pdf(如有)
├── 05_面试记录.docx / .pdf / .jpg
└── 其他辅助材料(如有)
{姓名}面试分析报告
使用精炼的文字描述,便于快速掌握候选人概况:
候选人[姓名],[性别],[年龄]岁,[学校] [专业] [时间] [学位],工作年限[X]年,当前在[公司名称]担任[职位名称],期望薪资[XX]万元/年,应聘岗位为[岗位名称]。
示例:候选人王凯,男,35岁,北京交通大学计算机科学与技术专业本科(2011-2015)和计算机技术专业硕士(2011-2017),工作年限9年,当前在北京玄戒技术有限公司担任AI Compiler架构师兼技术负责人,期望薪资180万元/年,应聘岗位为GPGPU软件高级架构师。
本章节必须明确阐述岗位的核心职责和任职资格要求,作为后续评估的基准。
[用简洁语言概括岗位JD的核心职责,控制在50字以内]。
[学历与经验要求],[专业技术要求],[加分项]。
[候选人姓名]的教育背景为[学校] [专业] [时间] [学位]。[第一句为总结性描述时用bold_first=True]该学历背景与岗位JD中"学历要求"[是否匹配],[具体分析,如:专业对口性、学校层次、学历层次是否符合岗位硬性要求等]。
每段工作经历为一个自然段,内部职责和成果用"负责……;主导……;参与……"的句式紧密串联。分析时必须对照岗位JD的职责要求。
候选人在[公司名称]任职[职位名称]期间([开始时间]至[结束时间]),主要职责包括[职责1]、[职责2]等,在[关键项目]中承担[角色]职责,取得的成果包括[量化指标]。[第一句为总结性描述时用bold_first=True]该段经历与应聘岗位的第X条核心职责"[对应岗位JD原文]"高度匹配,因为[对照分析]。综合分析来看,该候选人的工作经历与岗位要求[高度匹配/基本匹配/不太匹配]。
每类技能为一个自然段。分析时必须对照岗位JD中的专业技能要求。
候选人在[技能类别1]方面具备[年限]年以上的实践经验,熟悉[具体技术栈]等核心工具,该技能直接对应岗位JD中要求的"[具体技术要求]"。在[技能类别2]方面,候选人掌握[具体技能],能够[应用场景],符合岗位要求的[具体能力]。
技能综合评价:[★★★★★~★☆☆☆☆]。
本章节的评估维度必须直接对应岗位JD的核心职责要求,每个评估维度需明确说明对应岗位JD中的哪条要求。
6.1 [评估维度名称](对应岗位JD第X条职责"[职责原文]"):[证据引用],候选人对此的回答[表现描述],面试官评价[评价内容]。
6.2 [评估维度名称](对应岗位JD第X条职责"[职责原文]"):[证据引用],候选人对此的回答[表现描述],面试官评价[评价内容]。
6.3 [评估维度名称](对应岗位JD第X条职责"[职责原文]"):[证据引用],候选人对此的回答[表现描述],面试官评价[评价内容]。
综合评价:[整体表现概述]。
每条优势为一个独立自然段,各段落之间紧密衔接。每个要点对照岗位JD具体要求,语言流畅专业。
优势一:[具体说明,结合面试证据],该优势直接满足岗位JD第X条职责"[职责原文]"的要求。
优势二:[具体说明,结合面试证据],该优势对应岗位JD第X条"[具体要求]"。
优势三:[具体说明,结合面试证据],该优势符合岗位JD第X条"[具体要求]"。
优势四:[具体说明,结合面试证据],该优势匹配岗位JD的加分项"[加分项原文]"。
每个风险为一个独立自然段,各段落之间紧密衔接。分析不足时必须对照岗位JD的任职要求,语言专业客观。
风险一:[具体说明,结合面试表现],该风险可能导致无法完全满足岗位JD第X条"[具体要求]"。
风险二:[具体说明,结合面试表现],对应岗位JD第X条"[硬性要求]"存在差距。
风险三:[具体说明,结合面试表现],可能影响岗位要求的[特定场景/经验]能力。
四个评价维度各为一个独立自然段,段落之间紧密衔接。评价基于岗位JD的任职要求,用词专业严谨。
综合能力:[★★★★★~★☆☆☆☆],候选人在[领域]展现出[强/较强/一般]的综合实力。
岗位匹配度:[★★★★★~★☆☆☆☆],与岗位核心需求的匹配程度为[高/中/低],候选人能够胜任岗位JD中的核心职责包括[职责1]、[职责2]等,但在[特定要求]方面[匹配/存在差距]。
稳定性:[★★★★★~★☆☆☆☆],候选人的离职意愿和职业稳定性[高/中/低],需关注[潜在风险]。
性价比:[★★★★★~★☆☆☆☆](如适用),[具体说明]。
综合结论与建议:[结论与具体建议]。
每个调查维度为一个独立自然段,建议明确具体,具有可操作性。
工作经历真实性方面,需核实候选人在[公司名称]的任职时间、职位名称和离职原因是否与简历一致。
业绩核实方面,建议联系[证明人],核实关键项目中的实际参与程度、贡献和成果量化指标。
关系人评价方面,可向前同事或上级了解候选人的团队协作表现和职业素养。
风险核实方面,了解离职原因、是否存在竞业限制或保密协议。
根据岗位要求建立多维度评估体系,必须包含评估表格。
| 评估维度 | 权重 | 对应岗位要求 | 评分 | 评估要点 |
|---|---|---|---|---|
| 专业技能深度 | 25% | 对应JD"[具体要求]" | ★★★★★ | 评估结论(20字以内) |
| 项目经验与成果 | 25% | 对应JD"[具体要求]" | ★★★★☆ | 评估结论(20字以内) |
| 软硬件协同能力 | 20% | 对应JD"[具体要求]" | ★★★★☆ | 评估结论(20字以内) |
| 架构设计能力 | 15% | 对应JD"[具体要求]" | ★★★★☆ | 评估结论(20字以内) |
| 性能优化能力 | 10% | 对应JD"[具体要求]" | ★★★☆☆ | 评估结论(20字以内) |
| 团队领导力 | 5% | 对应JD"[具体要求]" | ★★★☆☆ | 评估结论(20字以内) |
评估表格填充规则:
本章节以文字描述形式呈现薪酬建议和试用期建议,便于决策者快速把握关键信息。
候选人期望薪资:XX万元/年
市场薪酬定位:根据候选人能力评估和市场行情,建议薪酬定位为市场中位至中高位(50-75分位)。
薪酬方案建议:
说明:[候选人期望与市场行情的对比分析,候选人能力与薪酬的匹配度,谈判空间等]
试用期时长:建议3-6个月,具体根据岗位级别和候选人情况确定。
试用期核心目标:
转正标准:
风险关注:[候选人试用期可能存在的风险点,如稳定性风险、技能匹配风险等]
| 项目 | 要求 |
|---|---|
| 题目 | 字体:黑体;字号:2号;段后间距:2行;对齐:居中 |
| 一级标题(一~十二) | 字体:黑体;三号;左对齐 |
| 二级标题(X.1/X.2/X.3) | 字体:黑体;三号;左对齐 |
| 正文 | 字体:方正仿宋_GB2312;三号;左对齐 |
| 项目 | 要求 |
|---|---|
| 字体 | 方正仿宋_GB2312 |
| 字号 | 三号(16pt) |
| 页边距 | 上下2.54cm、左右3.18cm |
| 行距 | 固定值30磅行距(line_spacing=Pt(30)) |
| 首行缩进 | 正文段落首行必须缩进2字符(0.85cm) |
| 段落间距 | 段前间距0行,段后间距0行 |
| 表格 | 所有单元格垂直居中和水平居中 |
from docx.shared import Pt, Cm
from docx.enum.text import WD_LINE_SPACING, WD_ALIGN_PARAGRAPH
def add_body_para(doc, text, bold_first=False):
"""添加正文段落,如果bold_first为True,则第一句加粗"""
p = doc.add_paragraph()
if bold_first and '。' in text:
# 找到第一个句号的位置,分割第一句和后续内容
first_period_idx = text.find('。')
first_sentence = text[:first_period_idx + 1]
rest_text = text[first_period_idx + 1:]
# 第一句加粗
run1 = p.add_run(first_sentence)
run1.font.name = '方正仿宋_GB2312'
run1.font.size = Pt(16)
run1.font.bold = True
run1._element.rPr.rFonts.set(qn('w:eastAsia'), '方正仿宋_GB2312')
# 后续内容不加粗
if rest_text:
run2 = p.add_run(rest_text)
run2.font.name = '方正仿宋_GB2312'
run2.font.size = Pt(16)
run2.font.bold = False
run2._element.rPr.rFonts.set(qn('w:eastAsia'), '方正仿宋_GB2312')
else:
run = p.add_run(text)
run.font.name = '方正仿宋_GB2312'
run.font.size = Pt(16)
run.font.bold = False
run._element.rPr.rFonts.set(qn('w:eastAsia'), '方正仿宋_GB2312')
p.paragraph_format.line_spacing = Pt(30)
p.paragraph_format.space_before = Pt(0)
p.paragraph_format.space_after = Pt(0)
p.paragraph_format.first_line_indent = Cm(0.85)
return p
def add_section_heading(doc, text):
"""添加章节标题"""
p = doc.add_paragraph()
run = p.add_run(text)
run.font.name = '黑体'
run.font.size = Pt(16)
run.font.bold = True
run._element.rPr.rFonts.set(qn('w:eastAsia'), '黑体')
p.paragraph_format.line_spacing = Pt(30)
p.paragraph_format.space_before = Pt(12)
p.paragraph_format.space_after = Pt(6)
return p
def add_sub_heading(doc, text):
"""添加二级标题"""
p = doc.add_paragraph()
run = p.add_run(text)
run.font.name = '黑体'
run.font.size = Pt(16)
run.font.bold = True
run._element.rPr.rFonts.set(qn('w:eastAsia'), '黑体')
p.paragraph_format.line_spacing = Pt(30)
p.paragraph_format.space_before = Pt(6)
p.paragraph_format.space_after = Pt(3)
return p
def add_title(doc, text):
"""添加文档标题"""
p = doc.add_paragraph()
run = p.add_run(text)
run.font.name = '黑体'
run.font.size = Pt(22)
run.font.bold = True
run._element.rPr.rFonts.set(qn('w:eastAsia'), '黑体')
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
p.paragraph_format.line_spacing = Pt(30)
p.paragraph_format.space_after = Pt(24)
return p
def set_table_cell_center(cell, font_size=12):
"""设置表格单元格垂直居中和水平居中"""
for para in cell.paragraphs:
para.alignment = WD_ALIGN_PARAGRAPH.CENTER
para.paragraph_format.line_spacing = Pt(18)
for run in para.runs:
run.font.name = '方正仿宋_GB2312'
run.font.size = Pt(font_size)
run._element.rPr.rFonts.set(qn('w:eastAsia'), '方正仿宋_GB2312')
智能加粗逻辑说明:
bold_first=True 参数add_body_para(doc, "候选人具备9年AI芯片编译器领域的持续深耕经历。", bold_first=True)全文统一使用"候选人"作为主语,禁止使用"本人"、"该候选人"等其他主语表述。
| 文件格式 | 解析方式 |
|---|---|
| .docx | python-docx库 |
| pdfplumber/pdftotext/PyMuPDF | |
| .jpg/.png等图片 | pytesseract OCR或云端OCR API |
| .md/.txt | 直接读取文本 |
根据岗位JD建立11章结构的面试分析报告,评估维度直接对应岗位JD的核心能力要求。
按11章结构生成报告,以段落叙述为主,关键信息适当使用表格展示。
{序号}_{姓名}-面试分析报告.docx{序号}_{姓名}-面试分析报告.docx| 问题 | 原因 | 解决方案 |
|---|---|---|
| 每页只有一行 | line_spacing 使用了数值而非 Pt() 包装 | 必须使用 p.paragraph_format.line_spacing = Pt(30) |
| 段落间距过大 | space_before 或 space_after 设置了非零值 | 正文段落必须设置 space_before = Pt(0) 和 space_after = Pt(0) |
| 首行缩进不生效 | 使用了Twips或其他单位 | 必须使用 Cm(0.85) |
| 表格单元格未居中 | 未单独设置单元格对齐方式 | 必须对每个单元格调用 set_table_cell_center() |
当用户提供候选人文件夹路径和应聘岗位时,直接执行完整生成流程。