zhangyong hai 7 meses
pai
achega
32d0bec418
Modificáronse 1 ficheiros con 10 adicións e 8 borrados
  1. 10 8
      common/feishu_form.py

+ 10 - 8
common/feishu_form.py

@@ -59,17 +59,22 @@ class Material():
     """
     @classmethod
     def sort_keyword_data(cls, data):
+        # 解析 JSON 数据
         data = [json.loads(item) for item in data]
+
         # 根据 keyword_name 进行分组
         groups = defaultdict(list)
         for item in data:
             groups[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]
 
-        # 将 priority_names 列表进行轮流排序
+        # 获取所有唯一的 keyword_name
+        priority_names = list(groups.keys())
+
+        # 对每个分组内的数据按 first_category 进行随机打乱
+        for name in priority_names:
+            random.shuffle(groups[name])  # 打乱每个分组内的数据顺序
+
+        # 轮流排序每个分组的数据,保持 keyword_name 的顺序
         result = []
         max_length = max(len(groups[name]) for name in priority_names)
 
@@ -77,9 +82,6 @@ class Material():
             for name in priority_names:
                 if i < len(groups[name]):
                     result.append(groups[name][i])
-        # 将未列入优先顺序的其余数据添加到结果中
-        for name in remaining_names:
-            result.extend(groups[name])
 
         # 将结果转回 JSON 字符串列表
         sorted_list = [json.dumps(item, ensure_ascii=False) for item in result]