算法、字段与后台改动点
预测式续水只读生产订单库,输出脱敏名单;不改写业务表、不停用既有脚本。
计算公式
预计用水日 = 最近下单日 + 基础间隔 × 季节系数 × 规格系数;提醒日 = 预计用水日 − 1 天。
- 步骤 1:按归户键聚合,取最近 3 次有效订单间隔的中位数作为基础间隔;不足 3 次按同规格默认值。
- 步骤 2:季节系数 5-9 月取 0.85,12-2 月取 1.15,其余月份取 1.0。
- 步骤 3:预计用水日 = 最近下单日 + 基础间隔 × 季节系数 × 规格系数。
- 步骤 4:提醒日 = 预计用水日 - 1 天;09:30 生成待确认名单,17:30 对未响应客户再触达一次。
- 步骤 5:已有周期订水、存在未完成订单、退订与黑名单客户一律排除;同一客户 7 天内不重复触达。
生产表字段映射
| 表 | 字段 | 用途 |
|---|---|---|
| orders | created_at | 订水时间,用于计算间隔 |
| orders | product / qty | 规格与数量,归一到三款自营 SKU |
| orders | phone / name | 归户键,仅在授权后台可见,页面不展示明文 |
| orders | status | 仅纳入已完成订单,未完成与取消订单排除 |
| subscriptions | next_delivery / status | 周期订水客户转入订阅序列,不重复提醒 |
| water_tickets | status / expires_at | 权益未用完或临期时优先提示核销 |
| members | openid / level | 会员标签与触达通道 |
只读查询示例
SELECT o.phone AS customer_key, o.product, o.qty, o.created_at, o.status
FROM orders o
WHERE o.status IN ('done','paid')
AND o.created_at >= date('now','-180 day')
ORDER BY o.phone, o.created_at DESC;
-- subscriptions: skip customers with active plans
SELECT openid, product, qty_per_week, next_delivery, status
FROM subscriptions WHERE status = 'active';
-- water_tickets: prefer redemption notices before expiry
SELECT openid, ticket_no, product, qty, expires_at, status
FROM water_tickets WHERE status = 'active';
示例仅用于说明字段用法;实际执行走本地只读工具,页面不连数据库。
admin 后台改动点
- 订单表补 customer_key 与 sku_norm 归一字段,历史数据回填
- 新增 refill_plan 视图或表:customer_ref、predict_date、sku、confidence、state
- admin 后台增加名单审核、批量确认、退订标记与频控开关
- 触达通道接小程序订阅消息与企业微信官方接口,模板需平台审核
- 经营看板新增提醒触达率、一键确认率、复购间隔缩短天数、退订率
上线前置条件
- 小程序订阅消息模板通过平台审核
- 企业微信客户联系接口授权
- 真实订单样本积累到可统计规模
- 退订与频控开关在后台可配置
- 名单导出文件不含姓名与手机号明文
当前数据状态
现状说明 订单库现有记录以联调与测试品为主,尚未形成可统计的真实复购样本;所有测算均标注为模拟