机构版人力报表 · 取值逻辑说明
数据来源:staff_roster(花名册) · 每日凌晨自动同步 · 前端实时查库
零、数据源与全局规则
数据源
staff_roster 表(全量花名册,含在职+离职)
通过 /api/hr/institution-report?institution=all 返回全部数据,前端 JS 全程内存过滤,无二次请求。
机构筛选
页面顶部下拉框,选项从数据动态提取。选择具体机构后,所有模块同步联动(前端 filter 实现,不影响数据库查询)。
日期范围
起始月 1 日 ~ 结束月最后一天。作用于以下判定:
- 在职判定:以结束日期为时点快照
- 入职判定:entry_date 在区间内
- 离职判定:leave_date 在区间内
岗位序列归一化
normSeq(s) = s.replace('序列','').trim()
数据中原字段 job_sequence 混用"护理"和"护理序列"两种写法,统一去掉"序列"后缀后分组。最终展示 9 个序列:
| 序号 | 序列名 |
|---|---|
| 1 | 管理 |
| 2 | 护理 |
| 3 | 医护 |
| 4 | 行政 |
| 5 | 后勤 |
| 6 | 居家 |
| 7 | 实习 |
| 8 | 职能 |
| 9 | 销售 |
某序列在某筛选维度下三项均为 0 时不显示该行。
一、在岗与流动分析
期末在岗人数判定
在岗条件:entry_date ≤ 结束日期
AND (leave_date 为空 OR leave_date > 结束日期)
AND (leave_date 为空 OR leave_date > 结束日期)
即:在结束日期之前已入职,且尚未离职(或离职日期在结束日期之后)。这是时点快照,不是区间累计。
期间离职人数
leave_date ∈ [起始日期, 结束日期]
期间入职人数
entry_date ∈ [起始日期, 结束日期]
表格结构(6列)
| 列名 | 取值逻辑 | 说明 |
|---|---|---|
| 岗位序列 | 归一化后的 job_sequence,按固定 9 类顺序排列 | 零值隐藏 |
| 在岗人数 | 期末在岗且属于该序列的人数 | 核心指标 |
| 在岗占比 | 序列在岗 ÷ 总在岗 × 100% | 含进度条可视化 |
| 期间离职 | leave_date 在区间且属于该序列 | 零值显示"-" |
| 期间入职 | entry_date 在区间且属于该序列 | 零值显示"-" |
| 离职率 | 序列离职 ÷ (序列在岗 + 序列离职) × 100% | 分母不含无关联序列 |
离职率使用"该序列在岗+该序列离职"作为分母,而非全司在岗+全司离职,确保每个序列的离职率反映该序列自身的流动情况。
二、入职数据分析
数据范围
entry_date ∈ [起始日期, 结束日期] 的全部记录
分组规则
- 按
job_title(岗位名称)分组,非 job_sequence - 照护师始终置顶(排在第一位),其余按入职人数降序排列
留存率计算
留存率 = 期末仍在职人数 ÷ 期间入职人数 × 100%
"仍在职"的判断依据:该条记录的 status = '在职'。
分页
每页 10 条,多于 10 个岗位时出现分页控件。
三、老带新分析
老带新定义
recruit_source = '内部推荐' AND recruit_detail ≠ 空
推荐人提取规则
对 recruit_detail 字段(queId: 208893869)进行文本清洗:
extractName(raw) = raw.replace(/推荐|介绍/g, '').trim()
示例:
- "胡道正推荐" → 推荐人 = 胡道正
- "王文婷介绍" → 推荐人 = 王文婷
- "王淑侠" → 推荐人 = 王淑侠(无后缀直接取值)
⚠️ 注意:recruit_detail 字段映射为 queId=208893869(推荐人),非 208723126(具体来源渠道)。此映射已在 sync_staff_roster.py 中修正。
汇总指标
| 指标 | 计算方式 |
|---|---|
| 在职老带新人数 | 老带新中 status='在职' 的人数 |
| 在职老带新占比 | 在职老带新 ÷ 期末在岗总人数 × 100% |
明细表
列出全部老带新记录(分页 10 条),列:推荐人、被推荐人、入职日期、岗位、机构、状态。在职者优先排序,同状态下按入职日期倒序。
四、离职数据分析
数据范围
leave_date ∈ [起始日期, 结束日期]
分组规则
按 leave_type 字段动态分组。不再将"其他"类合并,而是按实际类型逐一展示,按人数降序排列。
表格结构
| 列名 | 说明 |
|---|---|
| 指标 | 首行为"总离职",其余按 leave_type 实际值 |
| 人数 | 该类型的离职人数 |
| 占离职比例 | 该类型 ÷ 总离职 × 100% |
五、离职率分析
计算公式
总离职率 = 期间总离职人数 ÷ (期末在岗人数 + 期间总离职人数) × 100%
主动离职率 = 期间主动离职人数 ÷ (期末在岗人数 + 期间总离职人数) × 100%
分母统一使用"期末在岗+期间离职",与综合 HR 报表公式一致。主动离职率为同一分母下的子指标。