薪资管理
概念说明
薪资管理由两部分组成:薪资结构和薪资记录。
薪资结构(SalaryStructure)
薪资结构定义了一个员工的薪资组成,每个员工有且仅有一个薪资结构。
| 字段 | 说明 |
|---|---|
| 基本工资(base_salary) | 员工的固定月薪,与岗位等级挂钩,不随月度表现波动 |
| 岗位津贴(position_allowance) | 因岗位特殊性额外发放的固定补贴,如交通补贴、通讯补贴、住房补贴等。没有则填 0 |
| 绩效系数(performance_factor) | 月度绩效考核的调节系数,默认 1.0,含义见下方详细说明 |
薪资记录(SalaryRecord)
每月为员工生成一条薪资记录,记录当月的薪资明细和实发金额。
计算公式:
实际薪资 = (基本工资 + 岗位津贴) × 绩效系数
薪资记录会快照生成时的薪资结构值(通过 structure_id 关联),后续修改薪资结构不会影响已生成的历史记录。
薪资记录状态
薪资记录有完整的生命周期:
draft(草稿) → pending(待审核) → approved(已审核) → paid(已发放)
↘ rejected(已驳回) ↗
| 状态 | 说明 | 可执行操作 |
|---|---|---|
| draft | 刚生成,可修改绩效系数等 | 修改、提交审核 |
| pending | 已提交审核,不可修改 | 审核通过、审核驳回 |
| approved | 审核通过,等待发放 | 确认发放 |
| rejected | 审核驳回 | 修改后重新提交 |
| paid | 已发放,不可修改 | 无 |
绩效系数详解
绩效系数是一个乘数,作用于"基本工资 + 岗位津贴"的合计,用来反映员工当月的工作表现。
取值含义
| 绩效系数 | 含义 | 说明 |
|---|---|---|
| 1.0 | 正常 | 完成本职工作,无特殊奖惩 |
| > 1.0 | 奖励 | 表现优秀,如加班突出贡献、项目超额完成等 |
| < 1.0 且 > 0 | 扣减 | 表现不达标,如迟到早退、工作质量问题等 |
| 0 | 全扣 | 极端情况,当月薪资为 0 |
实际例子
员工张伟,薪资结构:基本工资 10000 元,岗位津贴 2000 元。
| 月份 | 绩效系数 | 场景 | 计算过程 | 实发薪资 |
|---|---|---|---|---|
| 2026-01 | 1.0 | 正常出勤,完成本职工作 | (10000 + 2000) × 1.0 | 12000 元 |
| 2026-02 | 1.2 | 主导项目提前交付,获评月度优秀 | (10000 + 2000) × 1.2 | 14400 元 |
| 2026-03 | 0.8 | 多次迟到,季度考核不达标 | (10000 + 2000) × 0.8 | 9600 元 |
| 2026-04 | 1.5 | 关键技术突破,特殊贡献奖 | (10000 + 2000) × 1.5 | 18000 元 |
| 2026-05 | 0.5 | 长期请假,部分工作由他人代管 | (10000 + 2000) × 0.5 | 6000 元 |
员工李娜,薪资结构:基本工资 8000 元,岗位津贴 0 元(无津贴)。
| 月份 | 绩效系数 | 场景 | 计算过程 | 实发薪资 |
|---|---|---|---|---|
| 2026-01 | 1.0 | 正常 | (8000 + 0) × 1.0 | 8000 元 |
| 2026-02 | 1.1 | 加班赶工 | (8000 + 0) × 1.1 | 8800 元 |
绩效系数的设置时机
- 薪资结构中设置默认值:创建薪资结构时指定的
performance_factor是默认系数,通常为 1.0 - 生成月度记录时覆盖:生成薪资记录时可以指定当月的绩效系数,不指定则使用薪资结构中的默认值
- 草稿状态修改:薪资记录在 draft 或 rejected 状态时,可以修改绩效系数,修改时自动重算实发金额
这意味着:大多数月份直接用默认系数 1.0 生成记录即可,只在有奖惩的月份手动指定不同系数。
操作流程
1. 员工入职 → 创建薪资结构(设定基本工资、岗位津贴、默认绩效系数)
2. 每月末 → 生成月度薪资记录(单个或批量,可指定当月绩效系数)
3. 修改记录 → 在草稿/驳回状态下修改绩效系数(自动重算)
4. 提交审核 → draft/rejected → pending
5. 审核通过 → pending → approved(或驳回 → rejected)
6. 确认发放 → approved → paid(仅 admin)
7. 调薪时 → 更新薪资结构(后续月份按新结构生成,历史记录不受影响)
批量生成
每月生成记录时支持三种方式:
- 指定员工 ID 列表:
POST /salaries/records/batch传employee_ids - 按部门生成:传
dept_id,为该部门下有薪资结构的在职员工生成 - 全员生成:不传
employee_ids和dept_id,为所有有薪资结构的在职员工生成
已存在的记录自动跳过。