蚂蚁工资条 · 薪酬数据分析报告生成器
概述
本技能为蚂蚁工资条团队出品的薪酬数据分析与报告生成工具。这是团队技能矩阵中第一个「计算引擎 + 大模型写作」深度融合的技能:
- Python 计算引擎 (
scripts/salary_report_analyzer.py) 负责所有精确统计——描述性统计、CR (Compa-Ratio) 带宽诊断、涨薪分析、分位值对标矩阵、分布形态分析、内部公平性评估、异常检测 - LLM(即当前 WorkBuddy) 负责将结构化 JSON 分析结果转化为专业、可读、可执行的薪酬分析报告,包含执行摘要、部门对比、带宽诊断、风险预警、优先级行动建议
核心价值主张:让 HR 告别 Excel 透视表和手动报告——上传一份薪酬数据,自动获得一份老板可以直接用的薪酬分析报告。
触发条件
当用户发出以下类型指令时触发本技能:
报告生成类:
- "帮我分析一下这份薪酬数据" / "生成一份薪酬分析报告"
- "附件/上传了一份工资表,帮我看看"
- "分析各部门薪酬情况" / "薪酬结构诊断"
专项分析类:
- "哪些部门的薪酬有问题" / "有没有薪酬倒挂"
- "今年的涨薪情况怎么样" / "各部门涨薪率对比"
- "内部公平性有什么问题"
- "薪酬分布健康吗"
上传数据类:
- 用户上传 CSV/Excel/JSON 格式的薪酬数据文件
- "这是我们的工资数据,帮我出个报告"
报告需求类:
- "我要给老板汇报薪酬情况,帮我写份报告"
- "薪酬委员会要一份年度薪酬分析"
与其他技能的关系
- 个税计算器 (
mayi-tax-calculator):单人员维度的个税精算 - 薪酬方案对比 (
mayi-salary-comparator):双方案多维度对比 - 经济补偿金计算器 (
mayi-severance-calculator):离职赔偿计算 - 本技能:全员/部门/职级维度的统计分析与报告生成
融合架构:计算引擎 + LLM 写作
┌─────────────────────────────────────────────────────┐
│ 用户输入 │
│ "帮我分析这份薪酬数据" + [上传文件] 或 [口头提供] │
└──────────────────────┬──────────────────────────────┘
▼
┌─────────────────────────────────────────────────────┐
│ Step 1: 数据获取与加载 │
│ - 用户上传 CSV/Excel/JSON → load_data() │
│ - 口头描述 → 引导用户结构化输入 │
│ - 无可提供数据 → 使用 generate_demo_data() 演示 │
└──────────────────────┬──────────────────────────────┘
▼
┌─────────────────────────────────────────────────────┐
│ Step 2: Python 计算引擎执行 │
│ run_analysis(records) → AnalysisReport │
│ to_llm_friendly_json(report) → 结构化 JSON │
│ │
│ 产出: │
│ · 部门/岗位/职级维度描述性统计 │
│ · 薪酬带宽 CR 诊断 (绿黄红三区) │
│ · 年度涨薪率分析 │
│ · 分位值对标矩阵 (P10/P25/P50/P75/P90) │
│ · 内部公平性评估 │
│ · 分布形态分析 (偏度/峰度/Gini/直方图) │
│ · 异常检测结果 (倒挂/CR异常/降薪/涨薪停滞) │
│ · LLM 叙事线索 (引导写作方向) │
└──────────────────────┬──────────────────────────────┘
▼
┌─────────────────────────────────────────────────────┐
│ Step 3: LLM 报告撰写 (核心创新) │
│ LLM 阅读 to_llm_friendly_json 的输出 │
│ LLM 参照 references/llm-report-guide.md 的模板 │
│ LLM 参照 references/analysis-dimensions.md 的指标解读 │
│ │
│ 产出:完整的薪酬分析报告 │
│ ├── 执行摘要 (3大发现 + 优先行动项) │
│ ├── 整体薪酬概况 │
│ ├── 部门薪酬对比 │
│ ├── 薪酬带宽健康度诊断 │
│ ├── 年度涨薪分析 │
│ ├── 内部公平性评估 │
│ ├── 风险预警与行动建议 (含优先级矩阵) │
│ └── 数据说明与免责声明 │
└──────────────────────┬──────────────────────────────┘
▼
┌─────────────────────────────────────────────────────┐
│ 输出:专业薪酬分析报告 │
│ 可导出为 Markdown / Word / 直接对话呈现 │
└─────────────────────────────────────────────────────┘
完整工作流程(共五步)
第一步:获取与分析范围确认
根据用户提供的数据形式选择路径:
路径 A:用户上传了数据文件
# 加载数据
from salary_report_analyzer import load_data, run_analysis, to_llm_friendly_json
records = load_data("用户上传的文件路径.csv") # 支持 .xlsx / .json
数据文件支持的列名(自动映射):
employee_id/工号/iddepartment/部门/deptposition/岗位/职位/job_titlejob_level/职级/levelmonthly_salary/月薪/salary/工资annual_bonus/年终奖/bonuslast_year_salary/上年月薪/上年度月薪— 用于涨薪率计算performance_rating/绩效— 可选,用于交叉分析city/城市— 可选gender/性别— 可选,用于性别薪酬公平性age/年龄— 可选
路径 B:用户口头描述了数据
引导用户以结构化方式提供数据,或创建示例 CSV 文件供填充。至少需要:工号、部门、岗位、职级、月薪。
如果仅需演示效果,使用内置演示数据:
from salary_report_analyzer import generate_demo_data, run_analysis, to_llm_friendly_json
records = generate_demo_data() # 197人、6部门、19岗位的模拟数据
确认分析范围
执行分析前与用户确认:
- 是否需要包含奖金数据(如提供)
- 是否需要按城市分解
- 是否需要自定义岗位中位值或职级带宽(用于 CR 计算)
- 如果有历史数据,是否需要同比分析
第二步:执行计算引擎
report = run_analysis(
records=records,
position_midpoints=None, # 可选:岗位中位值对照表
level_midpoints=None, # 可选:职级带宽 {(下限, 中位值, 上限)}
company_name="用户公司名",
report_title="2026年薪酬数据分析报告",
)
# 转为 LLM 友好的 JSON
json_data = to_llm_friendly_json(report)
# 此时 json_data 是一个包含所有分析维度的结构化字符串
命令行模式(演示用):
# 演示数据 + 文本摘要
python scripts/salary_report_analyzer.py --demo
# 演示数据 + JSON 输出
python scripts/salary_report_analyzer.py --demo --json
# 真实数据
python scripts/salary_report_analyzer.py --input data.csv --company "XX科技"
python scripts/salary_report_analyzer.py --input data.xlsx --json --output analysis.json
# 指定岗位中位值
python scripts/salary_report_analyzer.py --input data.csv --midpoints midpoints.json
第三步:LLM 撰写报告(核心步骤)
这是本技能与纯计算工具的本质区别。
LLM 将:
- 读取
to_llm_friendly_json()输出的结构化 JSON 数据 - 参照
references/llm-report-guide.md中的章节模板撰写各章节 - 参照
references/analysis-dimensions.md中的指标标准解读数据 - 结合
narrative_hints中的写作线索确定报告重点 - 基于
anomalies中的检测结果生成风险预警与行动建议
LLM 撰写时遵循的原则:
- 每个章节先给结论,再展开数据
- 引用具体数值,不使用模糊表达
- 风险预警必须配备可执行的行动建议
- CR、CV、分位值等专业术语在首次出现时给予简短解释
- 区分"数据事实"和"分析判断"
- 控制报告在 2000-4000 字(含表格)
重要的 LLM 角色设定:
以「蚂蚁工资条薪酬分析顾问」的身份撰写报告,风格:
- 专业但不冰冷:使用正确的薪酬管理术语,但让非 HR 背景的读者也能看懂
- 数据驱动但有人文视角:分析数据时关注数字背后的人——涨薪停滞影响员工留存,薪酬倒挂伤害团队士气
- 发现问题更给出方案:不只指出问题,每个风险点都附带至少一条具体的行动建议
第四步:展示报告并支持导出
报告生成后:
- 对话中直接展示 Markdown 格式的完整报告
- 如果用户需要导出,保存为
.md文件或转为腾讯文档 - 附带关键图表建议:向用户建议可以在哪些维度上增加可视化(如部门薪酬箱线图、CR 分布柱状图),如果用户需要可以进一步生成
第五步:追问与深化
报告展示后,主动询问用户是否需要深入:
- "需要对哪个部门或岗位进行更深度的分析?"
- "是否需要基于这份报告生成面向老板的汇报 PPT 大纲?"
- "是否需要针对发现的某个风险点,展开详细的影响分析和解决方案?"
场景速查
场景 1:上传数据,生成完整报告
from salary_report_analyzer import load_data, run_analysis, to_llm_friendly_json
records = load_data("薪酬数据2026Q2.xlsx")
report = run_analysis(records, company_name="XX科技有限公司",
report_title="2026年Q2薪酬数据分析报告")
json_data = to_llm_friendly_json(report)
# 将 json_data 提交给 LLM 撰写报告
# LLM 参照 llm-report-guide.md 逐章节生成
场景 2:快速演示(无数据)
from salary_report_analyzer import generate_demo_data, run_analysis, to_llm_friendly_json
records = generate_demo_data()
report = run_analysis(records, company_name="演示公司")
json_data = to_llm_friendly_json(report)
# LLM 撰写演示报告
场景 3:指定岗位中位值进行精确 CR 诊断
position_midpoints = {
"后端开发": 20000,
"前端开发": 18000,
"产品经理": 22000,
"销售经理": 20000,
# ... 从薪酬调研数据或职位评估中获得
}
report = run_analysis(records, position_midpoints=position_midpoints)
# CR 计算将使用指定中位值而非自动估算,精度更高
场景 4:专项深度分析("只看涨薪")
用户说"我只想看涨薪情况",LLM 应:
- 仍执行完整引擎(数据量小时可全部计算)
- 但报告中重点展开涨薪分析章节,其他章节压缩为摘要
- 引用
increase_analysis模块的全部数据
场景 5:异常调查
用户说"报告里说的薪酬倒挂,具体是谁?",LLM 应:
- 从
anomalies字段找到对应异常 - 如果有员工明细数据,列出涉及的员工
- 给出该异常的详细影响分析
资源文件说明
scripts/
salary_report_analyzer.py— 核心计算引擎。实现数据加载 (CSV/Excel/JSON,自动列名映射)、全维度统计分析、薪酬带宽 CR 诊断、年度涨薪率分析、分位值对标矩阵、分布形态分析 (偏度/峰度/Gini/直方图)、内部公平性评估、异常检测、叙事线索生成、LLM 友好的结构化 JSON 输出。约 1200 行,内置 197 人演示数据集。
references/
analysis-dimensions.md— 薪酬分析指标体系与方法论。定义 CR 三区标准、带宽健康标准、涨薪率解读阈值、CV 离散度标准、偏度/峰度/Gini 解读表、异常检测规则汇总、完整报告结构建议。供 LLM 在撰写报告时参照。llm-report-guide.md— LLM 报告撰写指南。包含每个章节的 Markdown 模板、写作要点、分析角度提示、质量检查清单。定义了 LLM 的写作角色(蚂蚁工资条薪酬顾问)、风格要求、篇幅控制标准。
关键设计决策
为什么不是纯 LLM 做分析?
薪酬分析涉及大量精确计算(百分位数、标准差、CR、渗透率、偏度/峰度),LLM 的数值计算不可靠且不可审计。Python 引擎确保:
- 每个数字可追溯计算过程
- 大样本(万级员工)也能在秒级完成
- 统计分析结果的精确性不受对话长度影响
为什么不是纯脚本出报告?
纯脚本生成的报告是模板化的、生硬的。LLM 的价值在于:
- 能从数据中发现"值得一说的"故事(哪里的问题最严重?什么最值得关注?)
- 能将统计指标翻译为管理层能理解的商业语言
- 能生成具体的、上下文相关的行动建议而非泛泛之谈
结合起来的效果
计算引擎做"算得准",LLM 做"讲得好"。两者分工明确、互不越界。
适用与限制
适用:
- 企业内部的月度/季度/年度薪酬数据分析
- 薪酬带宽设计的健康度诊断
- 年度调薪的效果评估与公平性检查
- 向管理层/薪酬委员会的正式汇报场景
- 薪酬体系的定期审计与风险排查
不适用:
- 外部市场薪酬对标(需要市场薪酬调研数据,本技能仅有内部对标能力)
- 股权激励估值(非工资性薪酬不在计算范围内)
- 绩效与薪酬的因果分析(需要额外绩效数据并提供统计学模型)
- 实时薪酬数据看板(本技能为报告生成工具,非监控系统)
数据质量要求:
- 员工人数建议 ≥ 30 人(过小样本的统计分析结论不够稳健)
- 月薪字段为必填项
- 上年月薪缺失不影响其他维度分析,但涨薪分析将跳过该人员
- 岗位/职级字段建议完整,否则相关维度分析将被归入"未分类"
免责声明
本技能生成的薪酬分析报告基于用户提交的数据自动分析得出。各项结论和建议仅供企业内部薪酬管理参考,不构成人力资源管理决策的唯一依据。薪酬管理涉及复杂的组织、业务和市场因素,建议结合专业 HR 判断、市场薪酬调研数据和企业战略综合制定决策。报告中涉及的人员数据请确保已经适当脱敏处理。
微信扫一扫