You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

269 lines
8.8 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 考勤相关功能
> 模块编码attendance
> 端侧:微信小程序
> 关联文档01-模块划分.mdv4.0、02-功能清单-小程序端.md§5、03-业务流转逻辑-小程序端.md§5、05-接口规范.md§9、06-项目技术要求.md
## 功能概览
| 项目 | 说明 |
|------|------|
| 菜单名称 | 考勤打卡 |
| 子菜单 | 上班打卡 / 下班打卡 / 打卡记录 / 异常申诉 / 考勤日历 / 考勤审核 |
| 功能编号 | MP-AT-01 ~ MP-AT-06 |
| 权限编码 | attendance:record:*、attendance:appeal:*、attendance:supplement:* |
## 页面清单
### 页面1上班打卡
- **页面路径**`/pages/attendance/clock-in`
- **适用角色**:全部
- **页面元素**
- 当前时间显示(大字时钟)
- 打卡状态指示(未打卡/已打卡)
- 蓝牙扫描状态指示器
- 当前打卡点名称
- 蓝牙信号强度显示
- 打卡按钮
- 补录/申诉入口
- **查询条件**:无
- **列表字段**:无
- **界面布局**
- 顶部:当前时间大字显示
- 中部:打卡点信息 + 蓝牙状态
- 底部:打卡按钮(圆形大按钮)
- **操作按钮**
- 「上班打卡」→ 记录上班打卡权限attendance:record:create
- 「异常申诉」→ 跳转异常申诉页(蓝牙未检测到时显示)
**蓝牙策略判断逻辑**
- 调用 `GET /system/bluetooth-policy → attendance_check`
- 策略=REQUIRED必须连接指定打卡点蓝牙Beacon后才可打卡
- 验证Beacon属于本人班组打卡点
- 打卡成功记录 `check_method=BLUETOOTH`
- 策略=OPTIONAL可选蓝牙打卡或手动打卡
- 手动打卡:`check_method=MANUAL`
**需求追溯**
| 功能点编号 | 功能名称 | 文档来源 | 后续服务 | 关联功能 |
|------------|----------|----------|----------|----------|
| MP-AT-01 | 上班打卡 | 02-小程序端 §5 | 记录操作日志 | 考勤记录、打卡点管理 |
---
### 页面2下班打卡
- **页面路径**`/pages/attendance/clock-out`
- **适用角色**:全部
- **页面元素**
- 当前时间显示(大字时钟)
- 打卡状态指示(未打卡/已打卡)
- 上班打卡时间显示
- 蓝牙扫描状态指示器
- 当前打卡点名称
- 打卡按钮
- 补录/申诉入口
- **查询条件**:无
- **列表字段**:无
- **界面布局**
- 顶部:当前时间 + 上班打卡时间
- 中部:打卡点信息 + 蓝牙状态
- 底部:打卡按钮(圆形大按钮)
- **操作按钮**
- 「下班打卡」→ 记录下班打卡权限attendance:record:create
- 「异常申诉」→ 跳转异常申诉页
**需求追溯**
| 功能点编号 | 功能名称 | 文档来源 | 后续服务 | 关联功能 |
|------------|----------|----------|----------|----------|
| MP-AT-02 | 下班打卡 | 02-小程序端 §5 | 记录操作日志 | 考勤记录 |
---
### 页面3打卡记录
- **页面路径**`/pages/attendance/records`
- **适用角色**:全部
- **页面元素**
- 月份选择器
- 统计信息卡片(出勤天数/迟到/早退/缺卡)
- 打卡记录列表
- 记录详情弹窗
- **查询条件**
- 月份筛选
- 状态筛选(全部/正常/迟到/早退/缺卡/补录)
- **列表字段**
| 字段 | 类型 | 说明 |
|------|------|------|
| 日期 | 日期 | 打卡日期 |
| 上班时间 | 时间 | 上班打卡时间 |
| 下班时间 | 时间 | 下班打卡时间 |
| 打卡方式 | 标签 | 蓝牙/手动/补录 |
| 状态 | 标签 | 正常/迟到/早退/缺卡 |
- **界面布局**
- 顶部:月份选择器 + 统计数字横向排列
- 中部:按日期分组的打卡记录列表
- 底部:无操作栏
- **操作按钮**
- 「查看详情」→ 查看打卡详情(含打卡点、蓝牙信息等)
- 「异常申诉」→ 对异常记录发起申诉
**需求追溯**
| 功能点编号 | 功能名称 | 文档来源 | 后续服务 | 关联功能 |
|------------|----------|----------|----------|----------|
| MP-AT-03 | 打卡记录 | 02-小程序端 §5 | 无 | 考勤日历 |
---
### 页面4异常申诉
- **页面路径**`/pages/attendance/appeal`
- **适用角色**:全部(蓝牙失灵/系统宕机时)
- **页面元素**
- 异常日期选择
- 异常类型选择(上班/下班/全天)
- 异常原因选择(蓝牙故障/手机异常/系统异常/忘记打卡/其他)
- 补充说明输入框(多行文本)
- 照片上传区补充证据≤9张
- 提交按钮
- **查询条件**:无
- **列表字段**:无
- **界面布局**
- 顶部:申诉模式提示
- 中部:原因选择 + 说明填写 + 照片上传
- 底部:提交按钮
- **操作按钮**
- 「提交申诉」→ 提交打卡异常申诉权限attendance:appeal:create
- 申诉提交后等待主管审核Web/小程序均可审核)
**需求追溯**
| 功能点编号 | 功能名称 | 文档来源 | 后续服务 | 关联功能 |
|------------|----------|----------|----------|----------|
| MP-AT-04 | 异常申诉 | 02-小程序端 §5 | 主管审核 | 考勤审核 |
---
### 页面5考勤日历
- **页面路径**`/pages/attendance/calendar`
- **适用角色**:全部
- **页面元素**
- 月历视图(日历格子)
- 每日状态标记(颜色点)
- 点击日期显示详情弹窗
- 图例说明
- **查询条件**
- 月份切换(左右滑动)
- **列表字段**:无(日历模式)
- **界面布局**
- 顶部:月份切换 + 统计信息
- 中部:月历网格,每日格子中用颜色点标记状态
- 绿色:正常
- 黄色:迟到/早退
- 红色:缺卡
- 蓝色:补录
- 灰色:休息日
- 底部:图例说明
- **操作按钮**
- 「点击日期」→ 显示当日打卡详情弹窗
**需求追溯**
| 功能点编号 | 功能名称 | 文档来源 | 后续服务 | 关联功能 |
|------------|----------|----------|----------|----------|
| MP-AT-05 | 考勤日历 | 02-小程序端 §5 | 无 | 打卡记录 |
---
### 页面6考勤审核
- **页面路径**`/pages/attendance/review`
- **适用角色**:主管
- **页面元素**
- 待审核申诉列表
- 申诉详情查看
- 审核操作区(通过/驳回)
- 驳回原因输入框
- **查询条件**
- 状态筛选(待审核/已通过/已驳回)
- 日期筛选
- 人员筛选
- **列表字段**
| 字段 | 类型 | 说明 |
|------|------|------|
| 申诉人 | 文本 | 员工姓名 |
| 申诉日期 | 日期 | 异常打卡日期 |
| 异常类型 | 标签 | 上班/下班/全天 |
| 申诉原因 | 文本 | 原因摘要 |
| 提交时间 | 时间 | 申诉提交时间 |
| 审核状态 | 标签 | 待审核/已通过/已驳回 |
- **界面布局**
- 顶部:筛选条件
- 中部:申诉卡片列表
- 底部:审核操作按钮(通过/驳回)
- **操作按钮**
- 「通过」→ 系统自动补录打卡记录,标注"补录"权限attendance:appeal:approve
- 「驳回」→ 填写驳回原因,通知员工
**审核流程**
```
员工提交异常申诉(小程序端)
主管审核Web+小程序均可)
┌─审核通过─┐ ┌─审核驳回─┐
系统自动补录 通知员工
打卡记录 申诉未通过
标注"补录" 记录审核日志
记录审核日志
```
**需求追溯**
| 功能点编号 | 功能名称 | 文档来源 | 后续服务 | 关联功能 |
|------------|----------|----------|----------|----------|
| MP-AT-06 | 考勤审核 | 02-小程序端 §5 | 补录打卡记录 | 操作日志、考勤管理Web端 |
---
## 业务规则
1. **蓝牙策略**:考勤打卡受蓝牙策略控制(`GET /system/bluetooth-policy → attendance_check`
2. **蓝牙强制打卡**:策略=REQUIRED时必须在指定打卡点连接蓝牙Beacon后才可打卡
- 验证Beacon属于本人班组打卡点
- 打卡成功记录 `check_method=BLUETOOTH` + Beacon标识
3. **非强制蓝牙**:策略=OPTIONAL时可选蓝牙打卡或手动打卡`check_method=MANUAL`
4. **打卡点验证**蓝牙打卡时验证Beacon属于本人班组绑定的打卡点
5. **打卡时间**:自动记录精确到秒
6. **异常申诉审核**主管在Web端或小程序端均可审核
7. **补录标记**:审核通过后系统自动补录打卡记录,标记 `is_supplement=true`
8. **操作日志**:所有打卡操作记录审计日志
9. **双端审批**打卡异常申诉支持Web+小程序双端审核
## 状态流转
### 打卡状态
```
未打卡 → 已打卡(正常/迟到/早退)
缺卡 → 异常申诉 → 审核通过 → 补录打卡(标记补录)
→ 审核驳回 → 保持缺卡
```
### 申诉审核状态
```
待审核 → 审核通过 → 系统补录打卡记录
→ 审核驳回 → 通知员工
```