Skip to content

工时提醒配置

工时提醒是沐霖工时系统 v4.1.0 新增的智能提醒功能,通过定时任务自动提醒未填写工时的员工,有效提升工时数据的完整性和及时性。

功能概述

为什么需要工时提醒?

场景传统方式工时提醒
员工忘记填报项目经理人工催促,效率低系统自动定时提醒
跨天补录月底集中补录,数据不准确每天提醒,及时填报
新入职员工需要老员工口头告知系统自动推送提醒
多项目管理员工可能遗漏某个项目统一提醒,避免遗漏

提醒功能设计

工时提醒配置

核心功能:

  • 定时提醒:每天固定时间发送提醒
  • 📅 灵活日期:可设置工作日(周一至周五)或自定义日期
  • 🔧 启用/禁用:按需开启或关闭提醒功能
  • 🎯 精准推送:仅提醒当天未填写工时的员工
  • 📧 分级通知渠道:社区版支持站内消息,专业版增加邮件,企业版增加企微、钉钉和飞书

配置指南

1. 访问配置页面

路径: 系统管理 → 工时提醒配置

只有系统管理员才能访问此配置页面。

2. 配置项说明

配置项说明示例值
启用状态是否启用提醒功能启用 / 禁用
提醒时间每天发送提醒的时间18:00(下午 6 点)
提醒日期在一周中的哪些天提醒1,2,3,4,5(周一至周五)
通知渠道通过哪些渠道发送system,email(站内+邮件)

3. 详细配置

启用/禁用控制

启用: 系统会按照设定的时间和日期自动发送提醒

禁用: 暂时停止提醒功能,保留配置不丢失

建议:

  • 首次使用时先配置好参数再启用
  • 节假日期间可临时禁用

提醒时间设置

格式: HH:MM(24 小时制)

常用时间:

  • 17:00 - 下午 5 点(下班前提醒)
  • 18:00 - 下午 6 点(下班时间提醒)
  • 09:00 - 上午 9 点(上班后提醒)
  • 12:00 - 中午 12 点(午休前提醒)

最佳实践:

  • 建议在下班前 1 小时设置提醒
  • 避免在深夜或凌晨发送
  • 考虑时区差异(使用服务器时区)

提醒日期设置

格式: 逗号分隔的数字(1-7)

数字星期说明
1周一工作日
2周二工作日
3周三工作日
4周四工作日
5周五工作日
6周六休息日(可选)
7周日休息日(可选)

常用组合:

  • 1,2,3,4,5 - 周一至周五(推荐)
  • 1,2,3,4,5,6 - 周一至周六(单休)
  • 1,2,3,4,5,6,7 - 每天(特殊项目)

通知渠道配置

可用渠道:

  • system - 站内消息(默认启用)
  • email - 邮件通知
  • wechat - 企业微信
  • dingtalk - 钉钉
  • feishu - 飞书

配置方式: 多个渠道用逗号分隔,例如:

  • system - 仅站内消息
  • system,email - 站内 + 邮件
  • system,wechat,dingtalk - 站内 + 企微 + 钉钉

前置条件: 使用外部渠道前,需要先在通知配置中完成对应渠道的配置。

已填判定逻辑

系统通过以下逻辑判断员工是否已填写工时:

判定规则

sql
-- 查询员工当天是否已有工时记录
SELECT COUNT(*) FROM mh_day_hour 
WHERE user_id = ? 
  AND fill_date = ?
  AND is_deleted = 0

判定结果:

  • 有记录 → 不发送提醒(已填写)
  • 无记录 → 发送提醒通知(未填写)

判定范围

检查条件:

  • 用户 ID:当前员工
  • 填报日期:当天日期
  • 删除状态:未删除的记录

说明:

  • 只要当天有任意一条工时记录,就认为已填写
  • 不区分项目,只要有工时就不提醒
  • 不区分工时类型(普通工时/任务工时)

通知内容

站内消息通知

标题: 工时填写提醒

内容:

您好!

您今天(2026-06-05)的工时还未填写,请及时填报。

填报路径:我的工时 → 工时填报

如有疑问,请联系项目经理。

邮件通知

主题: 【工时提醒】您今天的工时还未填写

内容: 包含 HTML 格式的提醒信息,包含快捷链接直达填报页面。

企业微信/钉钉/飞书

消息格式: 文本消息或 Markdown 消息

内容示例:

📋 工时填写提醒

您好!您今天(2026-06-05)的工时还未填写。

请及时登录系统填报工时。

定时任务机制

执行时间

系统在配置的提醒时间自动执行检查任务:

每天 18:00(配置时间)

查询所有员工

筛选未填写工时的员工

发送提醒通知

执行流程

  1. 定时触发:服务器到达配置时间
  2. 获取配置:读取工时提醒配置
  3. 检查状态:查询员工工时填写状态
  4. 筛选目标:找出未填写的员工列表
  5. 发送通知:通过配置的渠道发送提醒
  6. 记录日志:记录本次执行情况

异常处理

场景 1:配置未启用

  • 定时任务跳过执行
  • 不发送任何通知

场景 2:通知渠道配置不完整

  • 已配置的渠道正常发送
  • 未配置的渠道跳过
  • 记录警告日志

场景 3:发送失败

  • 记录错误日志
  • 不影响其他渠道发送
  • 下次定时任务继续执行

使用场景

场景 1:常规工作日提醒

配置:

  • 启用状态:✅ 启用
  • 提醒时间:18:00
  • 提醒日期:1,2,3,4,5
  • 通知渠道:system,email

效果: 每周一至周五下午 6 点,通过站内消息和邮件提醒未填写工时的员工。

场景 2:项目冲刺期

配置:

  • 启用状态:✅ 启用
  • 提醒时间:12:0018:00(需配置两次)
  • 提醒日期:1,2,3,4,5,6
  • 通知渠道:system,wechat

效果: 周一至周六,中午和傍晚各提醒一次,通过站内消息和企业微信推送。

场景 3:节假日暂停

操作: 在节假日期间,临时将"启用状态"切换为"禁用"。

效果: 节假日期间不发送提醒,工作日自动恢复(需手动启用)。

最佳实践

1. 首次配置步骤

  1. ✅ 完成通知渠道配置(邮件、企微等)
  2. ✅ 设置提醒时间(建议下班前 1 小时)
  3. ✅ 选择提醒日期(建议周一至周五)
  4. ✅ 选择通知渠道(建议站内 + 邮件)
  5. ✅ 测试通知配置(发送测试通知)
  6. ✅ 启用提醒功能

2. 时间选择建议

时间段适用场景优点缺点
上午 9:00早提醒员工有整天时间填报可能忘记
中午 12:00午休前提醒及时午休时可能不看
下午 17:00下班前 1 小时最佳时间部分员工已下班
下午 18:00下班时间覆盖更多人可能影响下班

推荐: 下午 17:00 - 18:00 之间

3. 渠道选择建议

渠道到达率实时性推荐度
站内消息⭐⭐⭐⭐
邮件⭐⭐⭐⭐⭐
企业微信⭐⭐⭐⭐⭐
钉钉⭐⭐⭐⭐⭐
飞书⭐⭐⭐⭐

推荐组合: 站内消息 + 企业微信/钉钉

4. 节假日管理

建议流程:

  1. 节前最后一天:禁用提醒
  2. 节后第一天:启用提醒
  3. 或使用定时任务自动管理(需开发)

提醒设置: 在日历中标记禁用/启用日期,避免忘记。

常见问题

Q1: 为什么收不到提醒?

检查清单:

  1. 工时提醒功能是否已启用?
  2. 今天是否在提醒日期范围内?
  3. 当前时间是否已过提醒时间?
  4. 个人通知设置中是否开启了对应渠道?
  5. 通知渠道配置是否完整?

Q2: 能否设置一天多次提醒?

目前系统不支持一天多次提醒。

替代方案:

  • 选择最合适的时间点(推荐下班前 1 小时)
  • 或联系技术支持定制开发

Q3: 已填写工时的员工会收到提醒吗?

不会。系统会先检查员工当天是否已有工时记录,只有未填写的员工才会收到提醒。

Q4: 提醒可以针对特定部门或项目组吗?

目前系统是全员提醒(仅排除已填写的员工)。

后续计划: 增加按部门、项目组筛选的提醒功能。

Q5: 能否自定义提醒内容?

目前提醒内容为系统自动生成,暂不支持自定义。

后续计划: 增加自定义提醒模板功能。

Q6: 定时任务失败了怎么办?

检查方法:

  1. 查看系统日志中的定时任务执行记录
  2. 检查数据库中的提醒发送日志
  3. 联系系统管理员查看服务器日志

解决方案:

  • 如果是配置问题:修改配置后下次自动执行
  • 如果是系统问题:联系技术支持

Q7: 新员工入职后会自动收到提醒吗?

会。只要新员工有工时填报权限,系统会自动将其纳入提醒范围。

无需额外配置。

相关功能

技术说明

数据表

工时提醒配置存储在系统配置表中:

sql
-- 配置表
sys_config
- config_key: 'hour.reminder.enabled'    -- 启用状态
- config_key: 'hour.reminder.time'       -- 提醒时间
- config_key: 'hour.reminder.days'       -- 提醒日期
- config_key: 'hour.reminder.channels'   -- 通知渠道

定时任务

Cron 表达式:0 0 18 * * ?  (每天 18:00 执行)

性能优化

  • 批量查询:一次性查询所有员工的工时状态
  • 异步发送:通知发送不阻塞主流程
  • 缓存配置:配置信息缓存,减少数据库查询
  • 日志记录:详细记录执行情况,便于排查问题

Released under the MIT License.