zhangyong 8 months ago
parent
commit
6c7681fc84
1 changed files with 13 additions and 19 deletions
  1. 13 19
      common/feishu_form.py

+ 13 - 19
common/feishu_form.py

@@ -62,32 +62,26 @@ class Material():
         # 将 JSON 字符串列表转为字典对象列表
         data = [json.loads(item) for item in data]
 
-        # 根据 keyword_name 和 channel_id 进行分组
+        # 根据 channel_id 和 keyword_name 进行分组
         groups = defaultdict(lambda: defaultdict(list))
         for item in data:
-            groups[item['keyword_name']][item['channel_id']].append(item)
+            groups[item['channel_id']][item['keyword_name']].append(item)
 
-        # 获取所有唯一的 keyword_name 并创建一个轮流顺序
-        unique_names = list(groups.keys())
-        priority_names = [name for name in unique_names if name in unique_names]
-        remaining_names = [name for name in unique_names if name not in priority_names]
+        # 获取所有唯一的 channel_id 并创建一个轮流顺序
+        unique_channel_ids = list(groups.keys())
 
-        # 将 priority_names 列表进行轮流排序,同时对 channel_id 进行轮流排序
         result = []
-        max_length = max(len(groups[name][channel]) for name in priority_names for channel in groups[name])
 
-        for i in range(max_length):
-            for name in priority_names:
-                channels = list(groups[name].keys())
-                channel_index = i % len(channels)  # 依次循环不同的 channel_id
-                channel = channels[channel_index]
-                if i < len(groups[name][channel]):
-                    result.append(groups[name][channel][i])
+        # 依次循环不同的 channel_id
+        max_length = max(len(groups[channel][keyword]) for channel in unique_channel_ids for keyword in groups[channel])
 
-        # 将未列入优先顺序的其余数据添加到结果中
-        for name in remaining_names:
-            for channel in groups[name]:
-                result.extend(groups[name][channel])
+        for i in range(max_length):
+            for channel in unique_channel_ids:
+                keywords = list(groups[channel].keys())
+                keyword_index = i % len(keywords)  # 依次循环不同的 keyword_name
+                keyword = keywords[keyword_index]
+                if i < len(groups[channel][keyword]):
+                    result.append(groups[channel][keyword][i])
 
         # 将结果转回 JSON 字符串列表
         sorted_list = [json.dumps(item, ensure_ascii=False) for item in result]