你现在的位置:首页 > 软件开发 > OA办公系统 > 正文

OA 消息推送机制开发:审批待办实时短信提醒

发布时间:2026-08-27    来源:     作者:    阅读:


一、需求背景与问题分析

在协同办公体系的日常运转中,各类审批流程(如申请、审核、会签、归档等)贯穿业务始终。审批链路能否高效流转,很大程度上取决于相关处理人员能否在第一时间获知待办任务。传统的处理方式存在明显的时滞:待办信息停留在系统内部,用户只有主动登录、进入待办列表才能看到;一旦处理人长时间未登录,流程便会卡顿在某个节点,整体办理时长被不断拉长。

要解决这一问题,核心在于建立一套完整的"消息推送机制",并针对关键待办提供"实时短信提醒"的兜底触达能力。推送机制的价值不止于"通知",更在于打通系统与处理人之间的信息隔阂,把被动等待变为主动触达,从而提升审批时效、降低流程滞留风险。

本文从工程实现角度,围绕待办感知、通道设计、短信触达、可靠性保障、限流防打扰、安全合规与运维监控几个层面,梳理一套可落地的实现思路。

二、总体架构设计

整套机制在逻辑上可以拆分为五个层次:

  1. 触发层:审批引擎在流程状态发生变化(新任务产生、节点流转、任务被重新分配、临近超时)时,对外发出统一的待办变更事件。

  2. 感知层:负责接收、解析并归一化待办事件,将其转换为结构化的"待办通知体",包含处理人标识、流程标识、待办类型、紧急程度、触发时间等字段。

  3. 决策层:根据通知体中的信息,结合用户偏好、时段规则、去重策略与限流策略,决定是否推送、通过哪些通道推送、按何种优先级推送。

  4. 执行层:对接站内消息、应用内推送、短信通道等多个触达组件,完成实际的发送动作,并记录每一次触达的状态。

  5. 补偿与监控层:负责失败重试、结果回执、超时升级以及全链路的日志与指标采集。

各层之间通过消息队列解耦,触发层不关心下游如何消费,执行层不关心事件从何而来。解耦带来的直接收益是:任何一层出现性能波动,都不会拖垮整体审批主链路;后续若要新增触达通道,只需扩展执行层,而无需改动上游逻辑。

三、审批待办的实时感知

实时短信提醒的前提是"实时感知"到待办。实现上常见两种思路。

方案一:事件驱动(推荐)。审批引擎在流程实例推进的每个关键动作处抛出领域事件。例如:任务创建、任务转交、任务催办、任务超时、流程撤回后重新指派等。事件中携带足够的上下文,便于下游直接构造通知内容,无需再反向查询主库。这种方式延迟最低,通常可在毫秒级完成事件产生与投递,且天然具备可扩展性。

方案二:定时扫描。通过定时任务周期性扫描待办表,找出"已产生但未通知"或"即将超时"的记录并触发提醒。这种方式实现简单、对现有系统侵入小,但实时性受扫描周期限制,且在高并发下容易造成对数据库的重复扫描压力,通常作为事件驱动的兜底补充,用于处理因异常导致的事件丢失场景。

实际项目中建议以事件驱动为主、定时扫描兜底,两者配合可兼顾实时性与最终一致性。

四、消息推送通道设计

针对不同场景,应设计多级通道的组合触达策略:

  • 站内消息:作为基础通道,所有待办统一落一条站内记录,用户登录即可见,适合作为完整留痕。

  • 应用内实时推送:适用于桌面端或移动端在线场景,可做到秒级到达,提升交互体验。

  • 短信提醒:作为强触达通道,用于高优先级待办、长时间未处理待办或用户长时间离线的场景。短信具有普适性,不依赖客户端常驻,是"实时提醒"兜底的关键一环。

  • 邮件提醒:可作为短信的补充,承载更完整的说明信息,但触达及时性弱于短信,适合非紧急类汇总通知。

通道选择的决策逻辑可以概括为:先按紧急程度分级,再按用户在线状态与偏好组合。例如普通待办仅走站内与应用内推送;重要待办在站内推送后若一段时间未被处理,则升级为短信提醒;紧急且临近超时的待办则立即触发短信。

五、短信提醒的核心实现

短信通道的实现主要包含以下几个环节:

模板管理。短信内容应基于模板化方式组装,避免在代码中拼接大段文案。模板需支持占位符替换,并针对不同待办类型提供差异化话术,同时保留足够的信息要素(待办事项摘要、截止时间、处理入口指引等),让接收者无需登录即可判断事项轻重。

发送服务封装。将短信供应商的接口统一封装为可插拔的服务层,上层业务只依赖抽象接口,不直接依赖具体渠道。这样既便于切换供应商,也便于在本地环境使用模拟实现进行联调,降低对真实短信成本与依赖的消耗。

异步投递。短信发送应放入异步任务队列执行,避免同步阻塞审批主流程。同时为每次发送记录唯一业务编号,作为后续对账、重试与查证的基础。

发送频控。单用户在一定时间窗内的短信条数必须受到严格限制,防止因系统异常或事件重复触发造成对同一用户的短信轰炸,既保护用户体验,也控制成本。

内容合规与长度控制。短信有严格的长度限制,需在模板设计阶段就考虑字符数与分条发送的边界;同时所有文案需符合内容规范要求,不得包含敏感或违规信息。

六、可靠性与失败补偿

推送机制作为辅助系统,其自身故障不能影响主业务,但仍需尽力保证"该提醒的一定要提醒到"。因此可靠性设计尤为关键:

  • 持久化:每一条待办通知在发送前先落库,记录其生命周期状态(待发送、发送中、发送成功、发送失败、已补偿)。

  • 重试机制:对发送失败的消息采用指数退避重试,重试次数与间隔需可配置,避免高频无效重试。

  • 死信处理:超过最大重试次数的消息进入死信队列,由人工或定时任务介入处理,确保不静默丢失。

  • 幂等设计:消费端对同一业务编号的消息进行去重,保证消息重投不会产生重复短信。

  • 最终一致性:短信送达回执(如供应商的回执状态)需要回写,并与本地记录做对账,形成"发送—确认—对账"的闭环。

七、限流与防打扰

实时提醒是一把双刃剑,若不加约束,频繁的短信反而会成为负担。防打扰设计应从几个维度展开:

  • 时段控制:在休息时段(如夜间)降低推送等级,非紧急待办推迟到次日再提醒。

  • 静默偏好:支持用户自行配置提醒偏好,包括是否接收短信、每日接收上限、可接收时段等。

  • 合并汇总:对同一用户短时间内产生的多条同类型待办进行合并,发送一条汇总短信,而非逐条轰炸。

  • 全局配额:设定系统级每日短信总量配额,超出后自动降级为站内推送,并发出告警提示容量接近上限。

八、安全与合规

涉及通知的内容往往包含业务敏感信息,必须从源头做好防护:

  • 最小化原则:短信内容只展示必要信息,敏感字段(如完整单据明细、内部编号等)应做脱敏或省略,详情引导用户登录系统查看。

  • 权限校验:通知体在生成与投递环节都应校验处理人身份与数据权限,防止越权触达。

  • 传输与存储安全:通道调用使用加密传输,日志与存储中的消息内容进行脱敏处理,密钥等敏感配置集中管理、定期轮换。

  • 合规留痕:所有触达动作保留操作日志,满足内部审计要求,避免因通知机制引入新的合规风险。

九、监控与运维

推送机制的可观测性决定了它能否长期稳定运行:

  • 指标采集:覆盖消息产生量、各通道发送量、成功率、平均延迟、失败分布、重试占比、短信配额使用率等核心指标。

  • 告警规则:对成功率下降、延迟突增、配额逼近上限、死信堆积等异常设定阈值并自动告警。

  • 链路追踪:为每条通知建立贯穿"事件产生—决策—投递—回执"的追踪标识,出现问题时能快速定位环节。

  • 灰度与回滚:短信通道上线与策略调整建议支持灰度开关,便于发现问题后快速回退,降低变更风险。

十、后续优化方向

机制落地后仍可持续演进:一方面,可引入更精细的用户画像,基于历史处理习惯优化提醒时机与通道组合;另一方面,可探索将催办逻辑与流程效率分析结合,从数据层面识别易滞留节点并主动干预。此外,随着接入的业务类型增多,通道编排的通用化、模板资产的标准化,以及容量规划的自动化,都是值得持续推进的方向。


整体而言,一套成熟的 OA 审批待办实时短信提醒机制,本质上是对"事件感知—策略决策—多通道触达—可靠补偿—安全合规—持续观测"这一完整链条的工程化落地。当每个环节都被设计得足够健壮,审批流程的时效性才能获得真正稳定、可信的提升。

关键词:
分享到: