变更日期:2026-10-16 模块:HRM → 考勤管理 → 考勤规则配置
| 项 | 变更前 | 变更后 |
|---|---|---|
| 部门与规则的关系 | 一个部门只能配置一条规则,新增/编辑时若该部门已有规则,报错「该部门已配置考勤规则」 | 一个部门可以配置多条规则,用于多班次;新增/编辑不再报该错 |
| 规则名称 | 全局唯一(hrm_attendance_rule.name 不允许重复) |
不变,仍然全局唯一,请用「早班规则 / 夜班规则」这类可区分的名称 |
| 打卡/导入时用哪条规则 | 该部门启用规则中的任意一条(按数据库返回顺序) | 按打卡时间匹配班次,见下表 |
| 未配置部门规则时 | 回退到全局规则(dept_id 为空) |
不变 |
| 场景 | 取哪条规则 |
|---|---|
| 打卡时间落在某条规则的 [上班时间, 下班时间] 内 | 取这条 |
| 打卡时间不在任何班次窗口内(如提前 2 小时到岗) | 取班次窗口离打卡时间最近的那条 |
| 有多条都符合(并列) | 按上班时间早的优先,再按规则编号,结果稳定不漂移 |
| 跨天班次(如 22:00-06:00,即下班时间 ≤ 上班时间) | 凌晨的打卡(00:00-06:00)判给该跨天班次 |
| 不关心班次(内部调用未传打卡时间) | 取上班时间最早的一条 |
匹配只在该部门启用的规则中进行;若该部门一条启用规则都没有,仍回退到全局规则(同样按上述规则匹配)。
接口路径、请求参数、响应结构**均无变化**:
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /hrm/attendance-rule/create | 新增考勤规则(不再因部门重复而失败) |
| PUT | /hrm/attendance-rule/update | 修改考勤规则(不再因部门重复而失败) |
| POST | /hrm/attendance-clock/clock-in | 上班打卡(按打卡时间匹配班次判迟到) |
| POST | /hrm/attendance-clock/clock-out | 下班打卡(按打卡时间匹配班次判早退、算加班) |
错误码 1_030_004_007「该部门已配置考勤规则」 已不再有触发点,前端无需再针对它做特殊处理(若有按错误码写死的文案,可删除)。
无。前端的部门下拉本来就是拉取全量部门、不做「已配置则禁用」的过滤;该提示来自后端异常,后端不再返回即可。
hrm_attendance_rule.dept_id 本来就是普通索引(idx_dept_id),不存在唯一索引。