📌 业务目的
当月补贴率低于目标时,自动对爆款品种进行无货补贴。通过转化率模型计算最佳补贴比例,在保证ROI的前提下提升补贴率。
📤 输出产物
① 调用后台接口设置补贴(单个/批量)
② 取消低效补贴(ROI不足/重复补贴)
③ 生成补贴明细Excel备份
④ 企微群发送补贴看板
📝 3个阶段并行执行
· 爆款一期(drug_type=1):主要爆款品种,含KA补贴
· 爆款二期(drug_type=2):次要爆款品种
· 爆款针剂(drug_type=3):针剂品种
3个阶段使用线程池并行执行,每阶段有独立的配置参数
📝 核心函数逻辑
1. get_target_drug()
· 从 ts_zh_drug_info 获取 active=1 的品种
· 计算当月补贴率:sum(sub_money) / sum(single)
· 如果当月补贴率 ≥ 目标值,返回空(不补贴)
· 获取本周找货任务的锁定量、已售量、剩余锁定量
· 返回:无锁品种、有锁品种、当月补贴率
2. get_target_ws()
· 查询在售活动(夜间/周末/包销/通补/全天拼)
· 筛选:库存≥起订量×配置值、覆盖率>30%、效期>配置值
· 排除:控销品、推广活动、医械城、新客户专享
· 4类品种识别:无货/高价无货/有锁/有锁掉价
3. cal_conversion_rate()
· 使用 Drug_model 类(转化率模型)
· 计算:转化率、弹性系数、ROI最高补贴、最高ROI
4. subsidy_set()
· 对比现有补贴:新补贴价格 < 现有最低价才补贴
· ROI要求:高补贴模式ROI≥15,低补贴模式ROI≥8
· 取消低效补贴:已有更低价格的补贴则取消
· 自营省内关联:自动匹配自营省外活动的省内关联活动
· 设置补贴:调用 YsbAdmin().set_subsidy_new()
🗄️ SQL 筛选条件详解
① 获取找货任务
时间:当前在售活动
排除:topic_name NOT REGEXP '测试|连锁'
计算:锁定量、已售量、剩余锁定量
② 获取补贴活动
活动端口:配置项 target_port(夜间/周末/包销/通补/全天拼)
过滤端口:配置项 unfilter_port(摇钱树/生成端口/整件购)
库存要求:库存 ≥ 起订量 × 配置值
覆盖率要求:商圈覆盖率 > 30%
效期要求:效期剩余 > 配置值
排除:控销品(restrict_group_id=11111除外)、推广活动、医械城、新客户专享
③ 取消同品种其他补贴
查询同品种的其他补贴活动
如果有更低价的其他活动,取消当前补贴
④ 模式重置
每天20点重置 high_mode 和 low_mode 为0
▼ 运行流程
读取3阶段配置参数
目标端口、补贴要求、ROI等
⬇
检查当月补贴率
是否低于目标触发补贴
⬇
获取找货任务
锁定量、已售量、剩余量
⬇
获取补贴活动
4类品种识别(无货/高价无货/有锁/有锁掉价)
⬇
转化率模型计算
最佳补贴价格、ROI、转化率
⬇
生成补贴方案
对比现有补贴、判断ROI
⬇
取消低效补贴
ROI不足/重复补贴/同品种更低价
⬇
自营省内关联
自动匹配自营省外活动的省内关联
⬇
设置新补贴
调用后台接口
⬇
企微群发送看板
3阶段结果合并+补贴品详情