推送通知运营分析
推送相关业务流程分析与整改方案(2025-11-11)
1. 现有业务组件速览
- 商家短信套餐(
sms_shop)
- 购买入口:商户后台 ShopAction::sms(PC)、会员后台 Members/SmsAction。
- 数据落地:sms_shop 表,字段 type=shop、shop_id、num、status。
- 发送时机:SmsModel::sendSms(短信宝通道)和 SmsModel::DySms(阿里云通道)读取并扣减。
- 微信推送套餐(同表复用)
- 历史版本支持 type=weixin 记录,但未统一扣减;现已在 PushService 中补齐可选扣减。
- 商家粉丝 / 会员关注(
shop_favorites)
- 字段:is_sms、is_weixin、is_msg 分别控制订阅开关。
- 入口:PC/WAP 多处收藏/关注按钮;推送收件人的主要数据来源。
- 生活信息订阅(
life_subscribe)
- 字段:cate_id、user_id,按分类订阅。
- 入口:WAP 生活频道的订阅按钮;配合 PushService::pushLife。
- 模板管理
- 短信模板:sms 表(自建模板) + dayu 表(阿里云模板映射)。
- 邮件模板:email 表。
- 微信模板:weixin_tmpl、Wxmesg 静态封装。
- 后台审核/查看
- 运营后台存在 Tuisongduanxin / Tuisongweixin / Tuisongemail 模块,可用于监控历史推送(待与新日志对齐)。
2. 存在的问题
- 额度扣减不一致:阿里云短信以前未扣减套餐;微信推送欠缺套餐约束。
- 日志缺失:运营后台无法快速追踪推送行为,也无法核对失败原因。
- 模板信息不足:生活信息短信/邮件内容过于简短,对分类、价格等关键信息展示不足。
- 商家购买流程分散:PC/会员后台各一套页面,缺乏统一入口与额度统计概览;购买后未回显剩余条数。
- 会员订阅触达范围不明:
shop_favorites与life_subscribe无可视化统计,导致推送效果难评估。 - 告警与失败补偿缺位:短信/微信接口失败后仅写入日志,缺乏自动重试或人工告警机制。
3. 已实施整改
PushService接入短信/微信额度校验;短信不足立即阻断,微信在存在套餐记录时扣减。SmsModel::DySms在阿里云短信成功后同步扣减套餐,保持与短信宝逻辑一致。- 推送日志统一写入
Runtime/Logs/push/push_YYYYMMDD.log,包含渠道、成功/失败/跳过数量及内容链接。 - 生活信息短信优先调用
sms_life_push模板,参数包括标题、分类、价格、落地页链接;邮件文案增加分类、时间与摘要。
4. 后续整改建议
- 套餐管理后台化
- 在运营后台新增额度总览页面,汇总各商家短信/微信剩余条数;支持导出、筛选预警(低于阈值高亮)。
- 统一购买入口,复用 SmsshopModel::buy,提供订单流水与发票管理。
- 推送日志可视化
- 将 Runtime/Logs/push 数据接入数据库或 ELK,提供按日期/频道/商家筛选的后台界面;
- 增加失败原因统计图表,便于发现模板、接口异常。
- 订阅人群洞察
- 对 shop_favorites、life_subscribe 新增定期统计任务(订阅人数、活跃度);
- 在推送前显示预计触达人数与渠道分布,辅助运营决策。
- 失败重试与告警
- 设计推送任务表(例如 push_jobs),记录任务状态,支持失败重试与人工补发;
- 对短信/微信接口返回码进行分级处理(余额不足、模板错误、频率限制等),同步推送至运维告警渠道。
- 模板治理
- 统一管理短信/邮件模板变量定义,整理成文档供运营/客服使用;
- 增加模板灰度发布机制,确保信息合规。
- 自动订阅触发(延期需求)
- 基于 PushService 事件化接口,在资讯/生活发布审核通过后自动触发相应推送,结合任务队列削峰。
5. 落地优先级建议
| 优先级 | 项目 | 说明 |
|---|---|---|
| P0 | 套餐剩余告警 & 后台视图 | 直接影响推送可用性,需优先上线 |
| P0 | 推送日志后台化 | 解决取证困难问题,联调成本低 |
| P1 | 失败重试 & 告警 | 在日志稳定后实施,确保稳定性 |
| P1 | 订阅人群统计 | 支持运营评估投放效果 |
| P2 | 模板治理/灰度 | 与运营协同实施 |
| P2 | 自动订阅推送 | 待手工流程稳定后再排期 |
维护人:推送整改专项 / GPT-5 Codex
