Explorar o código

新增热点事件

luojunhui hai 1 semana
pai
achega
a535f638c3

+ 882 - 437
applications/ab_test/ab_accounts.py

@@ -4,454 +4,899 @@ import random
 def get_total_avg_views(samples):
     total_views = 0
     for sample in samples:
-        total_views += sample['avg_view_count']
+        total_views += sample['read_avg']
 
     return total_views
 
 def ab_():
     all_accounts = [
-      {
-        "account_name": "史君记",
-        "avg_view_count": 369.79,
-        "gh_id": "gh_0642b59afc37"
-      },
-      {
-        "account_name": "妙生活君",
-        "avg_view_count": 277.8,
-        "gh_id": "gh_0a476f9a531e"
-      },
-      {
-        "account_name": "幸福启示",
-        "avg_view_count": 1432.33,
-        "gh_id": "gh_0c89e11f8bf3"
-      },
-      {
-        "account_name": "乡土趣享",
-        "avg_view_count": 433.5,
-        "gh_id": "gh_0cf967cfd50c"
-      },
-      {
-        "account_name": "彤浩初说",
-        "avg_view_count": 85.62,
-        "gh_id": "gh_11705fdc238f"
-      },
-      {
-        "account_name": "情感美文一刻",
-        "avg_view_count": 639.33,
-        "gh_id": "gh_191df768625e"
-      },
-      {
-        "account_name": "天天学生活技巧",
-        "avg_view_count": 702.95,
-        "gh_id": "gh_192c9cf58b13"
-      },
-      {
-        "account_name": "都市佳人沁读",
-        "avg_view_count": 39.9,
-        "gh_id": "gh_1bab5d93bd6e"
-      },
-      {
-        "account_name": "农家田耕季",
-        "avg_view_count": 92.37,
-        "gh_id": "gh_1d4554168e20"
-      },
-      {
-        "account_name": "乐享生活小窍门",
-        "avg_view_count": 630.42,
-        "gh_id": "gh_1d887d61088c"
-      },
-      {
-        "account_name": "持家优选金点子",
-        "avg_view_count": 493.9,
-        "gh_id": "gh_209b7fe5374b"
-      },
-      {
-        "account_name": "老来生活家",
-        "avg_view_count": 432.71,
-        "gh_id": "gh_29074b51f2b7"
-      },
-      {
-        "account_name": "欢乐老来伴",
-        "avg_view_count": 154.8,
-        "gh_id": "gh_33a9d9e3172b"
-      },
-      {
-        "account_name": "灵波悦文",
-        "avg_view_count": 120.74,
-        "gh_id": "gh_34f15950b7f6"
-      },
-      {
-        "account_name": "郸英光语",
-        "avg_view_count": 145.27,
-        "gh_id": "gh_372413e12615"
-      },
-      {
-        "account_name": "看不够妙招",
-        "avg_view_count": 585.29,
-        "gh_id": "gh_3ed305b5817f"
-      },
-      {
-        "account_name": "趣史新看",
-        "avg_view_count": 169.33,
-        "gh_id": "gh_4018ad041f91"
-      },
-      {
-        "account_name": "博览史论",
-        "avg_view_count": 247.17,
-        "gh_id": "gh_405423725a6a"
-      },
-      {
-        "account_name": "都市佳人蕊读",
-        "avg_view_count": 40.89,
-        "gh_id": "gh_45fb5df25378"
-      },
-      {
-        "account_name": "岑山旭读",
-        "avg_view_count": 74.3,
-        "gh_id": "gh_47b80b9d7cb7"
-      },
-      {
-        "account_name": "汉史遍览",
-        "avg_view_count": 242.62,
-        "gh_id": "gh_4ecf7d95a248"
-      },
-      {
-        "account_name": "退休三缺一",
-        "avg_view_count": 147.31,
-        "gh_id": "gh_5250f7fc8db4"
-      },
-      {
-        "account_name": "老友闲谈",
-        "avg_view_count": 4578.35,
-        "gh_id": "gh_56ca3dae948c"
-      },
-      {
-        "account_name": "路边闲聊社",
-        "avg_view_count": 1611.01,
-        "gh_id": "gh_5ae65db96cb7"
-      },
-      {
-        "account_name": "趣享晚年",
-        "avg_view_count": 77.34,
-        "gh_id": "gh_5ce68993ebe0"
-      },
-      {
-        "account_name": "农耕笔记",
-        "avg_view_count": 71.85,
-        "gh_id": "gh_5e9a4b012aea"
-      },
-      {
-        "account_name": "幸福晚年知音",
-        "avg_view_count": 331.07,
-        "gh_id": "gh_6b7c2a257263"
-      },
-      {
-        "account_name": "舒誉轶文",
-        "avg_view_count": 80.43,
-        "gh_id": "gh_6c2110231fe0"
-      },
-      {
-        "account_name": "持家有方法",
-        "avg_view_count": 263.45,
-        "gh_id": "gh_6e1403eb5325"
-      },
-      {
-        "account_name": "理想俏生活",
-        "avg_view_count": 154.78,
-        "gh_id": "gh_711b6e027ae2"
-      },
-      {
-        "account_name": "幸福妙招合集",
-        "avg_view_count": 693.11,
-        "gh_id": "gh_72bace6b3059"
-      },
-      {
-        "account_name": "贝俊逸文",
-        "avg_view_count": 75.24,
-        "gh_id": "gh_74af7152fca8"
-      },
-      {
-        "account_name": "妙读奇闻",
-        "avg_view_count": 1330.23,
-        "gh_id": "gh_76dd62961c8c"
-      },
-      {
-        "account_name": "谈老来生活",
-        "avg_view_count": 287.37,
-        "gh_id": "gh_7cf7e0c83e65"
-      },
-      {
-        "account_name": "便捷生活好方法",
-        "avg_view_count": 830.7,
-        "gh_id": "gh_7e5818b2dd83"
-      },
-      {
-        "account_name": "鸿云念文",
-        "avg_view_count": 61.44,
-        "gh_id": "gh_8228478a9f38"
-      },
-      {
-        "account_name": "俏生活小妙招",
-        "avg_view_count": 165.11,
-        "gh_id": "gh_823fa1ec5323"
-      },
-      {
-        "account_name": "趣史说说",
-        "avg_view_count": 188.65,
-        "gh_id": "gh_875f2fa56e95"
-      },
-      {
-        "account_name": "田耕生活",
-        "avg_view_count": 156.06,
-        "gh_id": "gh_8799d3cf0ef2"
-      },
-      {
-        "account_name": "观文史说",
-        "avg_view_count": 129.26,
-        "gh_id": "gh_87c9d4ee12b9"
-      },
-      {
-        "account_name": "田地杂论",
-        "avg_view_count": 82.79,
-        "gh_id": "gh_89f0b7689c51"
-      },
-      {
-        "account_name": "俏持家达人",
-        "avg_view_count": 91.7,
-        "gh_id": "gh_90491df306bd"
-      },
-      {
-        "account_name": "窍门天天见",
-        "avg_view_count": 15.59,
-        "gh_id": "gh_91c214eb9b6a"
-      },
-      {
-        "account_name": "田耕享生活",
-        "avg_view_count": 110.86,
-        "gh_id": "gh_9334a5bc834a"
-      },
-      {
-        "account_name": "清怡素语",
-        "avg_view_count": 73.94,
-        "gh_id": "gh_93f1d2267689"
-      },
-      {
-        "account_name": "趣论史说",
-        "avg_view_count": 136.37,
-        "gh_id": "gh_96b6ee88c752"
-      },
-      {
-        "account_name": "妙招趣帮手",
-        "avg_view_count": 1243.62,
-        "gh_id": "gh_99b47070c8b5"
-      },
-      {
-        "account_name": "快乐精选集",
-        "avg_view_count": 704.73,
-        "gh_id": "gh_9eef14ad6c16"
-      },
-      {
-        "account_name": "史说新看",
-        "avg_view_count": 116.86,
-        "gh_id": "gh_9ffc91a17adc"
-      },
-      {
-        "account_name": "精选俏生活",
-        "avg_view_count": 313,
-        "gh_id": "gh_a2166b54ee1d"
-      },
-      {
-        "account_name": "畅聊奇闻",
-        "avg_view_count": 1162.86,
-        "gh_id": "gh_a2901d34f75b"
-      },
-      {
-        "account_name": "畅享福晚年",
-        "avg_view_count": 85.57,
-        "gh_id": "gh_a41bf1e2b0ab"
-      },
-      {
-        "account_name": "田地杂谈",
-        "avg_view_count": 161.26,
-        "gh_id": "gh_a57c73d76d65"
-      },
-      {
-        "account_name": "享暮年华乐",
-        "avg_view_count": 156.16,
-        "gh_id": "gh_a8652e07fbd6"
-      },
-      {
-        "account_name": "趣览史说",
-        "avg_view_count": 354.86,
-        "gh_id": "gh_a912ae49c81a"
-      },
-      {
-        "account_name": "奇看趣闻",
-        "avg_view_count": 215.24,
-        "gh_id": "gh_ab6f244386d8"
-      },
-      {
-        "account_name": "都市佳人伴渎",
-        "avg_view_count": 58.47,
-        "gh_id": "gh_abf5ded627ae"
-      },
-      {
-        "account_name": "一品趣闻",
-        "avg_view_count": 38.77,
-        "gh_id": "gh_ac6bba08dab7"
-      },
-      {
-        "account_name": "暮年享乐",
-        "avg_view_count": 152.79,
-        "gh_id": "gh_b1513a1766bf"
-      },
-      {
-        "account_name": "人生百事观",
-        "avg_view_count": 335.94,
-        "gh_id": "gh_b15de7c99912"
-      },
-      {
-        "account_name": "无忧生活小妙招",
-        "avg_view_count": 481.36,
-        "gh_id": "gh_b676b7ad9b74"
-      },
-      {
-        "account_name": "读史趣谈",
-        "avg_view_count": 1032.11,
-        "gh_id": "gh_b72f81fe2d65"
-      },
-      {
-        "account_name": "杰云若语",
-        "avg_view_count": 65.99,
-        "gh_id": "gh_bbcaf6794ba2"
-      },
-      {
-        "account_name": "奇趣百味生活",
-        "avg_view_count": 972.87,
-        "gh_id": "gh_bfe5b705324a"
-      },
-      {
-        "account_name": "无忧居家达人",
-        "avg_view_count": 135.06,
-        "gh_id": "gh_c128a013b0d0"
-      },
-      {
-        "account_name": "老友快乐谈",
-        "avg_view_count": 1105.02,
-        "gh_id": "gh_c5cdf60d9ab4"
-      },
-      {
-        "account_name": "优选持家派",
-        "avg_view_count": 78.64,
-        "gh_id": "gh_c8580bc45e36"
-      },
-      {
-        "account_name": "趣生活技巧",
-        "avg_view_count": 80.89,
-        "gh_id": "gh_c9ee53e1fbbc"
-      },
-      {
-        "account_name": "博阅历史",
-        "avg_view_count": 630.42,
-        "gh_id": "gh_cde3948134c5"
-      },
-      {
-        "account_name": "趣闻汉史",
-        "avg_view_count": 196.69,
-        "gh_id": "gh_cfb5c80fcd34"
-      },
-      {
-        "account_name": "生活指示录",
-        "avg_view_count": 614.78,
-        "gh_id": "gh_d49df5e974ca"
-      },
-      {
-        "account_name": "香茗史论",
-        "avg_view_count": 191.35,
-        "gh_id": "gh_d5f8b8f26704"
-      },
-      {
-        "account_name": "快乐生活新方向",
-        "avg_view_count": 165.26,
-        "gh_id": "gh_d6451c7c0b92"
-      },
-      {
-        "account_name": "趣闻时分秒",
-        "avg_view_count": 53.05,
-        "gh_id": "gh_d69ca56957ad"
-      },
-      {
-        "account_name": "持家有窍门",
-        "avg_view_count": 58.47,
-        "gh_id": "gh_d71bffcc25e1"
-      },
-      {
-        "account_name": "无忧自在生活",
-        "avg_view_count": 734.72,
-        "gh_id": "gh_dd4c857bbb36"
-      },
-      {
-        "account_name": "文史新看",
-        "avg_view_count": 67.28,
-        "gh_id": "gh_e41d5e19eb4e"
-      },
-      {
-        "account_name": "妙晚年日记",
-        "avg_view_count": 56.06,
-        "gh_id": "gh_e6c35aa5954c"
-      },
-      {
-        "account_name": "云景史记",
-        "avg_view_count": 62.88,
-        "gh_id": "gh_ece3fdd64622"
-      },
-      {
-        "account_name": "轻松妙生活家",
-        "avg_view_count": 131.23,
-        "gh_id": "gh_f0b83f5f8f07"
-      },
-      {
-        "account_name": "家有窍门大全",
-        "avg_view_count": 100.57,
-        "gh_id": "gh_f37296466d43"
-      },
-      {
-        "account_name": "趣谈暮年",
-        "avg_view_count": 1692.99,
-        "gh_id": "gh_f48d3a90fc6e"
-      },
-      {
-        "account_name": "都市退休蕊渎",
-        "avg_view_count": 83.45,
-        "gh_id": "gh_f5a39031d305"
-      },
-      {
-        "account_name": "快乐生活有方法",
-        "avg_view_count": 91.97,
-        "gh_id": "gh_f9eeba7eb5c7"
-      },
-      {
-        "account_name": "趣史汇看",
-        "avg_view_count": 201.81,
-        "gh_id": "gh_fb633e4a8635"
-      },
-      {
-        "account_name": "趣味生活达人1",
-        "avg_view_count": 437.26,
-        "gh_id": "gh_ff487cb5dab3"
-      }
-    ]
+  {
+    "gh_id": "gh_008ef23062ee",
+    "account_name": "日常生活小技巧集",
+    "read_avg": 215.99
+  },
+  {
+    "gh_id": "gh_037bb83069fb",
+    "account_name": "欢聚暮年",
+    "read_avg": 2157.71
+  },
+  {
+    "gh_id": "gh_03d32e83122f",
+    "account_name": "快乐生活妙计巧",
+    "read_avg": 192.49
+  },
+  {
+    "gh_id": "gh_03d45c260115",
+    "account_name": "晚年多享乐",
+    "read_avg": 110.75
+  },
+  {
+    "gh_id": "gh_0642b59afc37",
+    "account_name": "史君记",
+    "read_avg": 419.31
+  },
+  {
+    "gh_id": "gh_084a485e859a",
+    "account_name": "生活情感叁读",
+    "read_avg": 188.86
+  },
+  {
+    "gh_id": "gh_09f0b4c51279",
+    "account_name": "生活醒读",
+    "read_avg": 2457.51
+  },
+  {
+    "gh_id": "gh_0a476f9a531e",
+    "account_name": "妙生活君",
+    "read_avg": 221.65
+  },
+  {
+    "gh_id": "gh_0c89e11f8bf3",
+    "account_name": "幸福启示",
+    "read_avg": 1137.12
+  },
+  {
+    "gh_id": "gh_0cf967cfd50c",
+    "account_name": "乡土趣享",
+    "read_avg": 433.52
+  },
+  {
+    "gh_id": "gh_0e4fd9e88386",
+    "account_name": "持家有妙招",
+    "read_avg": 75.98
+  },
+  {
+    "gh_id": "gh_11705fdc238f",
+    "account_name": "彤浩初说",
+    "read_avg": 86.7
+  },
+  {
+    "gh_id": "gh_150a9a8263f4",
+    "account_name": "天下奇闻每日看",
+    "read_avg": 24.41
+  },
+  {
+    "gh_id": "gh_183d80deffb8",
+    "account_name": "生活良读",
+    "read_avg": 282.63
+  },
+  {
+    "gh_id": "gh_18c6258ec8f7",
+    "account_name": "探秘趣闻",
+    "read_avg": 138.62
+  },
+  {
+    "gh_id": "gh_191df768625e",
+    "account_name": "情感美文一刻",
+    "read_avg": 443.83
+  },
+  {
+    "gh_id": "gh_1a2bb3fef76a",
+    "account_name": "生活跟读",
+    "read_avg": 1667.89
+  },
+  {
+    "gh_id": "gh_1bab5d93bd6e",
+    "account_name": "都市佳人沁读",
+    "read_avg": 34.03
+  },
+  {
+    "gh_id": "gh_1d4554168e20",
+    "account_name": "农家田耕季",
+    "read_avg": 72.66
+  },
+  {
+    "gh_id": "gh_1ee2e1b39ccf",
+    "account_name": "生活慢时光",
+    "read_avg": 21600.54
+  },
+  {
+    "gh_id": "gh_209b7fe5374b",
+    "account_name": "持家优选金点子",
+    "read_avg": 492.28
+  },
+  {
+    "gh_id": "gh_21ed6af99989",
+    "account_name": "多彩妙生活",
+    "read_avg": 881.16
+  },
+  {
+    "gh_id": "gh_23fbb96aeb28",
+    "account_name": "异闻趣事多",
+    "read_avg": 323.52
+  },
+  {
+    "gh_id": "gh_2405a3c9a316",
+    "account_name": "小阳看天下",
+    "read_avg": 2319.31
+  },
+  {
+    "gh_id": "gh_26a307578776",
+    "account_name": "票圈美文速递",
+    "read_avg": 119.9
+  },
+  {
+    "gh_id": "gh_26c906592150",
+    "account_name": "持家妙选派",
+    "read_avg": 150.14
+  },
+  {
+    "gh_id": "gh_290e053f7b90",
+    "account_name": "生活蜜读",
+    "read_avg": 5042.92
+  },
+  {
+    "gh_id": "gh_292aa2577527",
+    "account_name": "乡野乐时光",
+    "read_avg": 5302.02
+  },
+  {
+    "gh_id": "gh_2e615fa75ffb",
+    "account_name": "好招妙",
+    "read_avg": 65.23
+  },
+  {
+    "gh_id": "gh_2f80ba39f996",
+    "account_name": "家和乡间趣",
+    "read_avg": 1258.82
+  },
+  {
+    "gh_id": "gh_30816d8adb52",
+    "account_name": "日常巧思集",
+    "read_avg": 211.39
+  },
+  {
+    "gh_id": "gh_325188c9ea8b",
+    "account_name": "妙招知识宝典",
+    "read_avg": 1054.48
+  },
+  {
+    "gh_id": "gh_33a9d9e3172b",
+    "account_name": "欢乐老来伴",
+    "read_avg": 120.33
+  },
+  {
+    "gh_id": "gh_34f15950b7f6",
+    "account_name": "灵波悦文",
+    "read_avg": 126.45
+  },
+  {
+    "gh_id": "gh_372413e12615",
+    "account_name": "郸英光语",
+    "read_avg": 106.39
+  },
+  {
+    "gh_id": "gh_3d4827387bfc",
+    "account_name": "趣味生活方式",
+    "read_avg": 7148.35
+  },
+  {
+    "gh_id": "gh_3e91f0624545",
+    "account_name": "趣谈史记",
+    "read_avg": 368.82
+  },
+  {
+    "gh_id": "gh_3ed305b5817f",
+    "account_name": "看不够妙招",
+    "read_avg": 630.54
+  },
+  {
+    "gh_id": "gh_4018ad041f91",
+    "account_name": "趣史新看",
+    "read_avg": 187.7
+  },
+  {
+    "gh_id": "gh_405423725a6a",
+    "account_name": "博览史论",
+    "read_avg": 295.16
+  },
+  {
+    "gh_id": "gh_447df8696a6b",
+    "account_name": "小包教生活",
+    "read_avg": 3729.17
+  },
+  {
+    "gh_id": "gh_4568b5a7e2fe",
+    "account_name": "窦都事说",
+    "read_avg": 363.13
+  },
+  {
+    "gh_id": "gh_45beb952dc74",
+    "account_name": "票圈乐活",
+    "read_avg": 40.47
+  },
+  {
+    "gh_id": "gh_45fb5df25378",
+    "account_name": "都市佳人蕊读",
+    "read_avg": 36.58
+  },
+  {
+    "gh_id": "gh_47b80b9d7cb7",
+    "account_name": "岑山旭读",
+    "read_avg": 74.77
+  },
+  {
+    "gh_id": "gh_486568379bf8",
+    "account_name": "溪谷悠享",
+    "read_avg": 1401.51
+  },
+  {
+    "gh_id": "gh_4e4ddaebefb5",
+    "account_name": "趣味生活漫时光",
+    "read_avg": 5973.33
+  },
+  {
+    "gh_id": "gh_4ecf7d95a248",
+    "account_name": "汉史遍览",
+    "read_avg": 392.32
+  },
+  {
+    "gh_id": "gh_4f34eb52e641",
+    "account_name": "果读生活",
+    "read_avg": 893.39
+  },
+  {
+    "gh_id": "gh_51e4ad40466d",
+    "account_name": "日常小妙招秘籍",
+    "read_avg": 82.95
+  },
+  {
+    "gh_id": "gh_5250f7fc8db4",
+    "account_name": "退休三缺一",
+    "read_avg": 139.23
+  },
+  {
+    "gh_id": "gh_56ca3dae948c",
+    "account_name": "老友闲谈",
+    "read_avg": 4352.53
+  },
+  {
+    "gh_id": "gh_57573f01b2ee",
+    "account_name": "那些历史",
+    "read_avg": 155.85
+  },
+  {
+    "gh_id": "gh_57c9e8babea7",
+    "account_name": "福享暮年",
+    "read_avg": 1236.59
+  },
+  {
+    "gh_id": "gh_5ae65db96cb7",
+    "account_name": "路边闲聊社",
+    "read_avg": 1263.52
+  },
+  {
+    "gh_id": "gh_5ce68993ebe0",
+    "account_name": "趣享晚年",
+    "read_avg": 117.29
+  },
+  {
+    "gh_id": "gh_5d18ac6e3118",
+    "account_name": "山林探趣",
+    "read_avg": 176.92
+  },
+  {
+    "gh_id": "gh_5e543853d8f0",
+    "account_name": "票圈精彩",
+    "read_avg": 117.96
+  },
+  {
+    "gh_id": "gh_5e9a4b012aea",
+    "account_name": "农耕笔记",
+    "read_avg": 69.42
+  },
+  {
+    "gh_id": "gh_5ff48e9fb9ef",
+    "account_name": "祝福养心厅",
+    "read_avg": 408.76
+  },
+  {
+    "gh_id": "gh_631fb48b83a5",
+    "account_name": "奇事论读",
+    "read_avg": 1608.94
+  },
+  {
+    "gh_id": "gh_64cff9328215",
+    "account_name": "幽谷逸闻",
+    "read_avg": 1444.55
+  },
+  {
+    "gh_id": "gh_660afe87b6fd",
+    "account_name": "趣读奇事",
+    "read_avg": 992.19
+  },
+  {
+    "gh_id": "gh_68e7fdc09fe4",
+    "account_name": "史趣探秘",
+    "read_avg": 13249.4
+  },
+  {
+    "gh_id": "gh_6b7c2a257263",
+    "account_name": "幸福晚年知音",
+    "read_avg": 307.1
+  },
+  {
+    "gh_id": "gh_6c2110231fe0",
+    "account_name": "舒誉轶文",
+    "read_avg": 77.92
+  },
+  {
+    "gh_id": "gh_6d3aa9d13402",
+    "account_name": "悠读生活",
+    "read_avg": 388.5
+  },
+  {
+    "gh_id": "gh_6d9f36e3a7be",
+    "account_name": "音药养心馆",
+    "read_avg": 1124.4
+  },
+  {
+    "gh_id": "gh_6e1403eb5325",
+    "account_name": "持家有方法",
+    "read_avg": 217.6
+  },
+  {
+    "gh_id": "gh_711b6e027ae2",
+    "account_name": "理想俏生活",
+    "read_avg": 140.71
+  },
+  {
+    "gh_id": "gh_72bace6b3059",
+    "account_name": "幸福妙招合集",
+    "read_avg": 561
+  },
+  {
+    "gh_id": "gh_744cb16f6e16",
+    "account_name": "趣史论",
+    "read_avg": 664.46
+  },
+  {
+    "gh_id": "gh_74827e516740",
+    "account_name": "奇趣百态说",
+    "read_avg": 907.86
+  },
+  {
+    "gh_id": "gh_749271f1ccd5",
+    "account_name": "轻松生活方法",
+    "read_avg": 201.82
+  },
+  {
+    "gh_id": "gh_74af7152fca8",
+    "account_name": "贝俊逸文",
+    "read_avg": 77.4
+  },
+  {
+    "gh_id": "gh_761976bb98a6",
+    "account_name": "有道生活大全",
+    "read_avg": 93.45
+  },
+  {
+    "gh_id": "gh_76dd62961c8c",
+    "account_name": "妙读奇闻",
+    "read_avg": 1309.32
+  },
+  {
+    "gh_id": "gh_77f36c109fb1",
+    "account_name": "暖心一隅",
+    "read_avg": 649.7
+  },
+  {
+    "gh_id": "gh_784083e6713c",
+    "account_name": "谷涧趣行",
+    "read_avg": 942.48
+  },
+  {
+    "gh_id": "gh_7c66e0dbd2cf",
+    "account_name": "晚年家人",
+    "read_avg": 595.7
+  },
+  {
+    "gh_id": "gh_7cf7e0c83e65",
+    "account_name": "谈老来生活",
+    "read_avg": 278.18
+  },
+  {
+    "gh_id": "gh_7e5818b2dd83",
+    "account_name": "便捷生活好方法",
+    "read_avg": 668.81
+  },
+  {
+    "gh_id": "gh_8228478a9f38",
+    "account_name": "鸿云念文",
+    "read_avg": 63.84
+  },
+  {
+    "gh_id": "gh_823fa1ec5323",
+    "account_name": "俏生活小妙招",
+    "read_avg": 137.8
+  },
+  {
+    "gh_id": "gh_8355128f7787",
+    "account_name": "晚年福悦堂",
+    "read_avg": 1124.54
+  },
+  {
+    "gh_id": "gh_86cb64d57a1d",
+    "account_name": "史册趣读",
+    "read_avg": 364.55
+  },
+  {
+    "gh_id": "gh_871c78fca0fa",
+    "account_name": "生活陆读",
+    "read_avg": 298.43
+  },
+  {
+    "gh_id": "gh_875f2fa56e95",
+    "account_name": "趣史说说",
+    "read_avg": 250.38
+  },
+  {
+    "gh_id": "gh_8799d3cf0ef2",
+    "account_name": "田耕生活",
+    "read_avg": 147.54
+  },
+  {
+    "gh_id": "gh_87c9d4ee12b9",
+    "account_name": "观文史说",
+    "read_avg": 118.06
+  },
+  {
+    "gh_id": "gh_89f0b7689c51",
+    "account_name": "田地杂论",
+    "read_avg": 73.36
+  },
+  {
+    "gh_id": "gh_90491df306bd",
+    "account_name": "俏持家达人",
+    "read_avg": 84.87
+  },
+  {
+    "gh_id": "gh_91c214eb9b6a",
+    "account_name": "窍门天天见",
+    "read_avg": 12.08
+  },
+  {
+    "gh_id": "gh_9334a5bc834a",
+    "account_name": "田耕享生活",
+    "read_avg": 95.72
+  },
+  {
+    "gh_id": "gh_93f1d2267689",
+    "account_name": "清怡素语",
+    "read_avg": 75.75
+  },
+  {
+    "gh_id": "gh_95ed5ecf9363",
+    "account_name": "生活小优招",
+    "read_avg": 189.44
+  },
+  {
+    "gh_id": "gh_969f5ea5fee1",
+    "account_name": "心海情澜起",
+    "read_avg": 145.21
+  },
+  {
+    "gh_id": "gh_96b6ee88c752",
+    "account_name": "趣论史说",
+    "read_avg": 150.55
+  },
+  {
+    "gh_id": "gh_970460d9ccec",
+    "account_name": "生活之大全",
+    "read_avg": 438.8
+  },
+  {
+    "gh_id": "gh_971e23b9ecc4",
+    "account_name": "趣味生活漫谈",
+    "read_avg": 9486.67
+  },
+  {
+    "gh_id": "gh_98ec0ffe69b3",
+    "account_name": "博史鉴览",
+    "read_avg": 1086.3
+  },
+  {
+    "gh_id": "gh_99b47070c8b5",
+    "account_name": "妙招趣帮手",
+    "read_avg": 842.66
+  },
+  {
+    "gh_id": "gh_9bd3ec87db86",
+    "account_name": "生活翔读",
+    "read_avg": 212.55
+  },
+  {
+    "gh_id": "gh_9ce088ebabf7",
+    "account_name": "乡野地带",
+    "read_avg": 23.36
+  },
+  {
+    "gh_id": "gh_9cf3b7ff486b",
+    "account_name": "票圈热门",
+    "read_avg": 48.36
+  },
+  {
+    "gh_id": "gh_9e559b3b94ca",
+    "account_name": "票圈大事件",
+    "read_avg": 44.63
+  },
+  {
+    "gh_id": "gh_9eef14ad6c16",
+    "account_name": "快乐精选集",
+    "read_avg": 642.32
+  },
+  {
+    "gh_id": "gh_9f8dc5b0c74e",
+    "account_name": "音药金曲厅",
+    "read_avg": 941.12
+  },
+  {
+    "gh_id": "gh_9ffc91a17adc",
+    "account_name": "史说新看",
+    "read_avg": 101.53
+  },
+  {
+    "gh_id": "gh_a2166b54ee1d",
+    "account_name": "精选俏生活",
+    "read_avg": 250.52
+  },
+  {
+    "gh_id": "gh_a2901d34f75b",
+    "account_name": "畅聊奇闻",
+    "read_avg": 984.94
+  },
+  {
+    "gh_id": "gh_a42807f192dc",
+    "account_name": "小妙招悦享",
+    "read_avg": 586.06
+  },
+  {
+    "gh_id": "gh_a51201bcff28",
+    "account_name": "老甄有话说",
+    "read_avg": 2334.12
+  },
+  {
+    "gh_id": "gh_a57c73d76d65",
+    "account_name": "田地杂谈",
+    "read_avg": 129.19
+  },
+  {
+    "gh_id": "gh_a8652e07fbd6",
+    "account_name": "享暮年华乐",
+    "read_avg": 183.39
+  },
+  {
+    "gh_id": "gh_a912ae49c81a",
+    "account_name": "趣览史说",
+    "read_avg": 317.9
+  },
+  {
+    "gh_id": "gh_ab6f244386d8",
+    "account_name": "奇看趣闻",
+    "read_avg": 157.59
+  },
+  {
+    "gh_id": "gh_abf5ded627ae",
+    "account_name": "都市佳人伴渎",
+    "read_avg": 52.6
+  },
+  {
+    "gh_id": "gh_ac6bba08dab7",
+    "account_name": "一品趣闻",
+    "read_avg": 48.09
+  },
+  {
+    "gh_id": "gh_aca0f00404ec",
+    "account_name": "俏生活小锦囊",
+    "read_avg": 792.32
+  },
+  {
+    "gh_id": "gh_adca24a8f429",
+    "account_name": "史记趣言",
+    "read_avg": 531.51
+  },
+  {
+    "gh_id": "gh_b1513a1766bf",
+    "account_name": "暮年享乐",
+    "read_avg": 105.52
+  },
+  {
+    "gh_id": "gh_b1553fe3ef26",
+    "account_name": "生活及读",
+    "read_avg": 730.47
+  },
+  {
+    "gh_id": "gh_b15de7c99912",
+    "account_name": "人生百事观",
+    "read_avg": 310.22
+  },
+  {
+    "gh_id": "gh_b181786a6c8c",
+    "account_name": "历史长河流淌",
+    "read_avg": 3567.12
+  },
+  {
+    "gh_id": "gh_b32125c73861",
+    "account_name": "票圈奇闻",
+    "read_avg": 19.56
+  },
+  {
+    "gh_id": "gh_b3ffc1ca3a04",
+    "account_name": "票圈内容精选",
+    "read_avg": 11.54
+  },
+  {
+    "gh_id": "gh_b676b7ad9b74",
+    "account_name": "无忧生活小妙招",
+    "read_avg": 402.18
+  },
+  {
+    "gh_id": "gh_b72f81fe2d65",
+    "account_name": "读史趣谈",
+    "read_avg": 1176.21
+  },
+  {
+    "gh_id": "gh_b7d21af60069",
+    "account_name": "美好意义时光",
+    "read_avg": 2684.34
+  },
+  {
+    "gh_id": "gh_b8baac4296cb",
+    "account_name": "票圈原创视频精选",
+    "read_avg": 29.11
+  },
+  {
+    "gh_id": "gh_bbcaf6794ba2",
+    "account_name": "杰云若语",
+    "read_avg": 83.85
+  },
+  {
+    "gh_id": "gh_be0aa7c09379",
+    "account_name": "彩读生活",
+    "read_avg": 722.84
+  },
+  {
+    "gh_id": "gh_be8c29139989",
+    "account_name": "退休无忧生活",
+    "read_avg": 147.46
+  },
+  {
+    "gh_id": "gh_bf2028e17971",
+    "account_name": "持家妙招宝库",
+    "read_avg": 115.46
+  },
+  {
+    "gh_id": "gh_bfe5b705324a",
+    "account_name": "奇趣百味生活",
+    "read_avg": 959.35
+  },
+  {
+    "gh_id": "gh_bfea052b5baa",
+    "account_name": "奇读趣史",
+    "read_avg": 380.93
+  },
+  {
+    "gh_id": "gh_c128a013b0d0",
+    "account_name": "无忧居家达人",
+    "read_avg": 140.9
+  },
+  {
+    "gh_id": "gh_c19a94a3fcc1",
+    "account_name": "生活问读",
+    "read_avg": 335.36
+  },
+  {
+    "gh_id": "gh_c5cdf60d9ab4",
+    "account_name": "老友快乐谈",
+    "read_avg": 1091.81
+  },
+  {
+    "gh_id": "gh_c8580bc45e36",
+    "account_name": "优选持家派",
+    "read_avg": 62.37
+  },
+  {
+    "gh_id": "gh_c91b42649690",
+    "account_name": "农耕趣时刻",
+    "read_avg": 805.83
+  },
+  {
+    "gh_id": "gh_c952bc10dfad",
+    "account_name": "生活白读",
+    "read_avg": 2530.45
+  },
+  {
+    "gh_id": "gh_c9b664360ce6",
+    "account_name": "奇事探索",
+    "read_avg": 403.78
+  },
+  {
+    "gh_id": "gh_c9ee53e1fbbc",
+    "account_name": "趣生活技巧",
+    "read_avg": 62.58
+  },
+  {
+    "gh_id": "gh_cde3948134c5",
+    "account_name": "博阅历史",
+    "read_avg": 515.57
+  },
+  {
+    "gh_id": "gh_cfb5c80fcd34",
+    "account_name": "趣闻汉史",
+    "read_avg": 227.96
+  },
+  {
+    "gh_id": "gh_d2cc901deca7",
+    "account_name": "票圈极速版",
+    "read_avg": 966.12
+  },
+  {
+    "gh_id": "gh_d3f039c9db2b",
+    "account_name": "银发生活畅谈",
+    "read_avg": 2985.01
+  },
+  {
+    "gh_id": "gh_d49df5e974ca",
+    "account_name": "生活指示录",
+    "read_avg": 689.47
+  },
+  {
+    "gh_id": "gh_d5f8b8f26704",
+    "account_name": "香茗史论",
+    "read_avg": 285.69
+  },
+  {
+    "gh_id": "gh_d5f935d0d1f2",
+    "account_name": "繁花史阁",
+    "read_avg": 186.64
+  },
+  {
+    "gh_id": "gh_d6451c7c0b92",
+    "account_name": "快乐生活新方向",
+    "read_avg": 144.05
+  },
+  {
+    "gh_id": "gh_d69ca56957ad",
+    "account_name": "趣闻时分秒",
+    "read_avg": 56.89
+  },
+  {
+    "gh_id": "gh_d71bffcc25e1",
+    "account_name": "持家有窍门",
+    "read_avg": 38.93
+  },
+  {
+    "gh_id": "gh_dd4c857bbb36",
+    "account_name": "无忧自在生活",
+    "read_avg": 552.44
+  },
+  {
+    "gh_id": "gh_e0eb490115f5",
+    "account_name": "心灵情感驿站",
+    "read_avg": 266.85
+  },
+  {
+    "gh_id": "gh_e24da99dc899",
+    "account_name": "缘来养心厅",
+    "read_avg": 2461.3
+  },
+  {
+    "gh_id": "gh_e41d5e19eb4e",
+    "account_name": "文史新看",
+    "read_avg": 52.53
+  },
+  {
+    "gh_id": "gh_e6c35aa5954c",
+    "account_name": "妙晚年日记",
+    "read_avg": 73.71
+  },
+  {
+    "gh_id": "gh_e75dbdc73d80",
+    "account_name": "票圈正能量",
+    "read_avg": 42.03
+  },
+  {
+    "gh_id": "gh_e7704c34d264",
+    "account_name": "美好时光阅读汇",
+    "read_avg": 12609.29
+  },
+  {
+    "gh_id": "gh_ecb21c0453af",
+    "account_name": "妙用俏生活",
+    "read_avg": 73.97
+  },
+  {
+    "gh_id": "gh_ece3fdd64622",
+    "account_name": "云景史记",
+    "read_avg": 74.32
+  },
+  {
+    "gh_id": "gh_efaf7da157f5",
+    "account_name": "票圈热议",
+    "read_avg": 62.51
+  },
+  {
+    "gh_id": "gh_f0b83f5f8f07",
+    "account_name": "轻松妙生活家",
+    "read_avg": 140.08
+  },
+  {
+    "gh_id": "gh_f37296466d43",
+    "account_name": "家有窍门大全",
+    "read_avg": 98.11
+  },
+  {
+    "gh_id": "gh_f48d3a90fc6e",
+    "account_name": "趣谈暮年",
+    "read_avg": 1614.78
+  },
+  {
+    "gh_id": "gh_f5a39031d305",
+    "account_name": "都市退休蕊渎",
+    "read_avg": 85.62
+  },
+  {
+    "gh_id": "gh_f93af770fb55",
+    "account_name": "生活达人妙招库",
+    "read_avg": 1804.46
+  },
+  {
+    "gh_id": "gh_f9eeba7eb5c7",
+    "account_name": "快乐生活有方法",
+    "read_avg": 88.32
+  },
+  {
+    "gh_id": "gh_fa8312d19ea7",
+    "account_name": "时光趣味生活",
+    "read_avg": 2568.06
+  },
+  {
+    "gh_id": "gh_fb633e4a8635",
+    "account_name": "趣史汇看",
+    "read_avg": 259.07
+  },
+  {
+    "gh_id": "gh_fe6ef3a65a48",
+    "account_name": "妙招技巧达人",
+    "read_avg": 994.76
+  },
+  {
+    "gh_id": "gh_ff487cb5dab3",
+    "account_name": "趣味生活达人1",
+    "read_avg": 413.64
+  }
+]
+    all_accounts = [i for i in all_accounts if i['read_avg'] > 500]
+    print(len(all_accounts))
     total_avg_views = get_total_avg_views(all_accounts)
-    print(total_avg_views)
     count = 0
     while True:
-        samples = random.sample(all_accounts, 43)
+        samples = random.sample(all_accounts, 10)
         sample_views = get_total_avg_views(samples)
-        print(sample_views / total_avg_views)
         count += 1
-        print(count)
-        if 0.47 < sample_views / total_avg_views < 0.53:
+        if 0.29 < sample_views / total_avg_views < 0.30:
             print(json.dumps([i["account_name"] for i in samples], indent=4, ensure_ascii=False))
+            print(json.dumps(samples, indent=4, ensure_ascii=False))
             break
 
 

+ 9 - 8
applications/tasks/data_recycle_tasks/recycle_daily_publish_articles.py

@@ -205,14 +205,15 @@ class RecycleDailyPublishArticlesTask(Const):
 
     async def deal(self):
         subscription_accounts = await self.get_task_list()
-        for account in tqdm(subscription_accounts, desc="recycle each account"):
-            try:
-                await self.recycle_single_account(account)
-
-            except Exception as e:
-                print(
-                    f"{account['name']}\t{account['gh_id']}: recycle account error:", e
-                )
+        print(json.dumps(subscription_accounts, ensure_ascii=False, indent=4))
+        # for account in tqdm(subscription_accounts, desc="recycle each account"):
+        #     try:
+        #         await self.recycle_single_account(account)
+        #
+        #     except Exception as e:
+        #         print(
+        #             f"{account['name']}\t{account['gh_id']}: recycle account error:", e
+        #         )
 
 
 class CheckDailyPublishArticlesTask(RecycleDailyPublishArticlesTask):

+ 2 - 1
applications/tasks/dev/__init__.py

@@ -1 +1,2 @@
-from .data_analysis import DataAnalysis
+from .data_analysis import DataAnalysis
+from .get_account_category import GetAccountCategory

+ 96 - 0
applications/tasks/dev/get_account_category.py

@@ -0,0 +1,96 @@
+import json
+import math
+from decimal import Decimal
+from tqdm.asyncio import tqdm
+
+class GetAccountCategory:
+    def __init__(self, client):
+        self.client = client
+
+    @staticmethod
+    def scale_score(x):
+        """
+        将原始分值 x 从 [1, ∞) 映射到 [0.7, 1.5]
+        - [1, 3] 区间线性放缩到 [0.7, 1.5]
+        - 超过 3 后增长趋缓(可自行调节 slope_after_3)
+        """
+        # 参数可调
+        min_x, pivot_x = 1, 2.8
+        min_y, max_y = 0.8, 1.6
+        slope_after_3 = 0.01  # 超过3后每+1仅增加0.05,可设为0表示完全饱和
+
+        if x <= pivot_x:
+            # 线性放缩
+            y = min_y + (max_y - min_y) * (x - min_x) / (pivot_x - min_x)
+        else:
+            # 超过3后的平缓增长
+            y = max_y - slope_after_3 * (x - pivot_x)
+            # 可选:限制不超过上限/下限
+            y = max(min_y, min(y, max_y))
+        return y
+
+    async def get_account_result(self, account_name: str):
+        """获取账号分类"""
+        query = """
+            select
+                category,
+                count(1) as publish_cnt,
+                sum(fans) as total_fans, 
+                sum(view_count) as total_view_count, 
+                sum(first_level) as total_first_level,
+                sum(view_count) / sum(fans) as category_avg_read
+            from publish_account_category_detail
+            where position = 1 and category != 'empty' and first_level > 0
+            and date_str > '20250901' and account_name = %s
+            group by category, account_name
+            having publish_cnt > 2;
+        """
+        result = await self.client.async_fetch(query=query, params=(account_name,))
+        return result
+
+    async def analysis_account_detail(self, account_name: str):
+        detail = await self.get_account_result(account_name)
+        total_fans = sum(i['total_fans'] for i in detail)
+        total_view_count = sum(i['total_view_count'] for i in detail)
+        # total_first_level = sum(i['total_first_level'] for i in detail)
+        avg_read_rate = total_view_count / total_fans if total_fans > 0 else 0
+        positive_category = {}
+        for i in detail:
+            if i['category_avg_read'] > avg_read_rate:
+                raw_score = float(i['category_avg_read'] / Decimal(avg_read_rate))
+                positive_category[i['category']] = self.scale_score(raw_score)
+        return positive_category
+
+    async def get_accounts(self):
+        query = """
+            select gh_id, account_name from category_dev;
+        """
+        result = await self.client.async_fetch(query=query)
+        return result
+
+    async def update_account_category(self, gh_id, category_map: dict):
+        query = """
+            update category_dev
+            set positive_category_map = %s
+            where gh_id = %s;
+        """
+        await self.client.async_save(query=query, params=(json.dumps(category_map, ensure_ascii=False), gh_id))
+
+    async def deal(self):
+        account_list = await self.get_accounts()
+        for account in tqdm(account_list):
+            account_name = account['account_name']
+            try:
+                positive_category = await self.analysis_account_detail(account_name)
+                print(account['account_name'])
+                print(json.dumps(positive_category, ensure_ascii=False, indent=4))
+                # return positive_category
+                await self.update_account_category(account['gh_id'], positive_category)
+            except Exception as e:
+                print(f"分析账号{account_name}分类失败: {e}")
+                import traceback
+                print(traceback.print_exc())
+
+
+
+

+ 10 - 2
applications/tasks/task_handler.py

@@ -30,6 +30,7 @@ from applications.tasks.monitor_tasks import OutsideGzhArticlesCollector
 from applications.tasks.monitor_tasks import TaskProcessingMonitor
 
 from applications.tasks.dev import DataAnalysis
+from applications.tasks.dev import GetAccountCategory
 
 from applications.tasks.task_mapper import TaskMapper
 
@@ -91,8 +92,8 @@ class TaskHandler(TaskMapper):
             self.db_client, self.log_client, date_str
         )
         await recycle.deal()
-        check = CheckDailyPublishArticlesTask(self.db_client, self.log_client, date_str)
-        await check.deal()
+        # check = CheckDailyPublishArticlesTask(self.db_client, self.log_client, date_str)
+        # await check.deal()
         return self.TASK_SUCCESS_STATUS
 
     async def _crawler_toutiao_handler(self) -> int:
@@ -213,5 +214,12 @@ class TaskHandler(TaskMapper):
         await task.deal()
         return self.TASK_SUCCESS_STATUS
 
+    async def _get_account_category_handler(self) -> int:
+        task = GetAccountCategory(self.db_client)
+        await task.deal()
+        return self.TASK_SUCCESS_STATUS
+
+
+
 
 __all__ = ["TaskHandler"]

+ 2 - 0
applications/tasks/task_scheduler.py

@@ -197,6 +197,8 @@ class TaskScheduler(TaskHandler):
             "mini_program_detail_process": self._mini_program_detail_handler,
             # 数据分析
             "data_analysis": self._data_analysis_handler,
+            # 账号品类分析
+            "get_account_category": self._get_account_category_handler,
         }
 
         if task_name not in handlers: