insights_generator_service.py 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. """
  2. 策略建议生成模块
  3. """
  4. def generate_stage_insights(stage_statistics, current_stage, is_complete):
  5. """根据各生命周期阶段的统计数据生成现状分析和策略建议"""
  6. insights = {
  7. 'current_status': [],
  8. 'recommendations': [],
  9. 'stage_analysis': {}
  10. }
  11. # 分析各阶段表现
  12. for stage_name, stats in stage_statistics.items():
  13. stage_insight = {
  14. 'stage': stage_name,
  15. 'performance': '',
  16. 'issues': [],
  17. 'opportunities': []
  18. }
  19. duration = stats.get('durationDays', 0)
  20. avg_revenue = stats.get('avgDailyRevenue', 0)
  21. revenue_pct = stats.get('revenuePercentage', 0)
  22. # 引入期分析
  23. if '引入期' in stage_name:
  24. if duration < 30:
  25. stage_insight['issues'].append('引入期时间过短,市场认知度可能不足')
  26. stage_insight['opportunities'].append('加大初期市场推广投入,延长引入期以积累用户')
  27. elif duration > 90:
  28. stage_insight['issues'].append('引入期过长,市场接受度较慢')
  29. stage_insight['opportunities'].append('优化产品定位或价格策略,加速进入成长期')
  30. else:
  31. stage_insight['performance'] = '引入期表现正常'
  32. if avg_revenue < 100:
  33. stage_insight['opportunities'].append('初期销售较弱,建议通过试用活动或小规模促销提升认知')
  34. # 成长期分析
  35. elif '成长期' in stage_name:
  36. if duration < 45:
  37. stage_insight['issues'].append('成长期时间较短,增长势头可能不够强劲')
  38. stage_insight['opportunities'].append('加大广告投放和渠道拓展,延长成长期红利')
  39. elif duration > 120:
  40. stage_insight['performance'] = '成长期持续时间长,市场表现优秀'
  41. if revenue_pct > 40:
  42. stage_insight['performance'] = '成长期贡献超过40%销售额,是核心增长阶段'
  43. stage_insight['opportunities'].append('在成长期高峰时扩大供应链备货,避免断货')
  44. else:
  45. stage_insight['issues'].append('成长期销售贡献不足,增长动力需要加强')
  46. stage_insight['opportunities'].append('优化营销策略,提升成长期转化效率')
  47. # 成熟期分析
  48. elif '成熟期' in stage_name:
  49. if duration > 150:
  50. stage_insight['performance'] = '成熟期持续时间长,产品生命力强'
  51. stage_insight['opportunities'].append('在成熟期中后段推出产品升级或变种,延续生命周期')
  52. elif duration < 60:
  53. stage_insight['issues'].append('成熟期较短,产品稳定性不足')
  54. if revenue_pct > 35:
  55. stage_insight['performance'] = '成熟期贡献稳定,是主要利润来源'
  56. stage_insight['opportunities'].append('在成熟期维持稳定供应,优化成本结构提升利润率')
  57. # 衰退期分析
  58. elif '衰退期' in stage_name:
  59. if duration < 30:
  60. stage_insight['issues'].append('衰退期过短,可能需要及时清库存')
  61. stage_insight['opportunities'].append('快速推出促销清仓,避免库存积压')
  62. decline_rate = 100 - revenue_pct
  63. if decline_rate > 70:
  64. stage_insight['issues'].append('衰退迅速,需要谨慎评估后续产品规划')
  65. stage_insight['opportunities'].append('分析衰退原因,为新品开发提供借鉴')
  66. stage_insight['opportunities'].append('在衰退期尾声准备替代产品或新品上市')
  67. insights['stage_analysis'][stage_name] = stage_insight
  68. # 基于当前阶段的综合建议
  69. if current_stage == '引入期':
  70. insights['current_status'].append('当前处于引入期,需要快速建立市场认知')
  71. insights['recommendations'].extend([
  72. '建议投入适度的市场推广费用,重点在种子用户培养',
  73. '可以通过限时折扣、试用装等方式降低用户尝试门槛',
  74. '密切监控用户反馈,及时优化产品和服务'
  75. ])
  76. elif current_stage == '成长期':
  77. insights['current_status'].append('当前处于成长期,是快速扩张的最佳时机')
  78. insights['recommendations'].extend([
  79. '加大广告投放力度,扩大市场覆盖面',
  80. '优化供应链和库存管理,确保充足货源',
  81. '考虑推出组合套餐或会员计划,提升客单价和复购率',
  82. '此阶段是建立品牌忠诚度的关键期,注重用户体验'
  83. ])
  84. elif current_stage == '成熟期':
  85. insights['current_status'].append('当前处于成熟期,应注重稳定和利润优化')
  86. insights['recommendations'].extend([
  87. '维持稳定的市场投入,避免大幅波动',
  88. '优化运营成本,提升利润率',
  89. '考虑产品升级或推出衍生产品,延长生命周期',
  90. '关注竞品动态,防止市场份额流失'
  91. ])
  92. elif current_stage == '衰退期':
  93. insights['current_status'].append('当前处于衰退期,需要制定退出或转型策略')
  94. insights['recommendations'].extend([
  95. '合理控制库存,避免积压',
  96. '可推出清仓促销活动,加速库存周转',
  97. '分析衰退原因,为新产品开发提供参考',
  98. '准备替代产品或新品上市,平滑过渡'
  99. ])
  100. # 不完整生命周期的额外建议
  101. if not is_complete:
  102. insights['current_status'].append('该SKU生命周期尚未完整,建议持续观察')
  103. insights['recommendations'].append('继续跟踪数据,待生命周期更完整后再做长期决策')
  104. return insights