| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- from __future__ import annotations
- from dataclasses import dataclass
- from typing import Any, TypeVar
- T = TypeVar("T")
- # 品类 → (生成计划ID, 发布计划ID);按 pair 去重后做均匀分发。
- AIGC_PLAN_ID_MAP: dict[str, dict[str, str]] = {
- "健康知识": {"生成ID": "20260408092313211598604", "发布ID": "20260408115944193153417"},
- # "历史名人": {"生成ID": "20260408083251311809309", "发布ID": "20260408115139124511126"},
- # "知识科普": {"生成ID": "20260408083824905654920", "发布ID": "20260408115231567509261"},
- "搞笑段子": {"生成ID": "20260408091536533918237", "发布ID": "20260408115842127748387"},
- # "社会风气": {"生成ID": "20260408084318884115213", "发布ID": "20260408115315950129776"},
- "人生忠告": {"生成ID": "20260408085205791658566", "发布ID": "20260408115405410408001"},
- "国际时政": {"生成ID": "20260408090208237400605", "发布ID": "20260408115616925523989"},
- # "生活技巧科普": {"生成ID": "20260408083824905654920", "发布ID": "20260408115231567509261"},
- # "贪污腐败": {"生成ID": "20260408090309503416878", "发布ID": "20260408115653908856043"},
- "民生政策": {"生成ID": "20260408090721867506475", "发布ID": "20260408115727030928177"},
- "对口型表演": {"生成ID": "20260408092122328523262", "发布ID": "20260408115914659162376"},
- "中国战争史": {"生成ID": "20260408090950446586451", "发布ID": "20260408115804931772327"},
- "人财诈骗": {"生成ID": "20260408093140652233649", "发布ID": "20260408120019784463902"},
- "当代正能量人物": {"生成ID": "20260408083148399635274", "发布ID": "20260408115046382803287"},
- "国家科技力量": {"生成ID": "20260408085807674913378", "发布ID": "20260408115542550181196"},
- "国家力量": {"生成ID": "20260408085807674913378", "发布ID": "20260408115542550181196"},
- "通用": {"生成ID": "20260408085649635441036", "发布ID": "20260408115439581604474"},
- }
- @dataclass(frozen=True)
- class AigcPlanPair:
- """一组生成计划 + 发布计划(去重后的分发单元)。"""
- label: str
- produce_plan_id: str
- publish_plan_id: str
- def list_unique_plan_pairs(
- plan_map: dict[str, dict[str, str]] | None = None,
- ) -> list[AigcPlanPair]:
- """从映射表提取不重复的 (生成ID, 发布ID) 计划对。"""
- source = plan_map or AIGC_PLAN_ID_MAP
- seen: set[tuple[str, str]] = set()
- pairs: list[AigcPlanPair] = []
- for label, ids in source.items():
- produce_plan_id = str(ids.get("生成ID") or "").strip()
- publish_plan_id = str(ids.get("发布ID") or "").strip()
- if not produce_plan_id or not publish_plan_id:
- continue
- key = (produce_plan_id, publish_plan_id)
- if key in seen:
- continue
- seen.add(key)
- pairs.append(
- AigcPlanPair(
- label=label,
- produce_plan_id=produce_plan_id,
- publish_plan_id=publish_plan_id,
- )
- )
- return pairs
- def distribute_evenly(items: list[T], bucket_count: int) -> list[list[T]]:
- """轮询均匀分配到 bucket_count 个桶。"""
- if bucket_count <= 0:
- raise ValueError("bucket_count 必须大于 0")
- if not items:
- return []
- buckets: list[list[T]] = [[] for _ in range(bucket_count)]
- for index, item in enumerate(items):
- buckets[index % bucket_count].append(item)
- return [bucket for bucket in buckets if bucket]
- def chunk_list(items: list[T], size: int) -> list[list[T]]:
- if size <= 0:
- raise ValueError("size 必须大于 0")
- return [items[i : i + size] for i in range(0, len(items), size)]
- def assignment_summary(
- plan_pairs: list[AigcPlanPair],
- buckets: list[list[Any]],
- ) -> list[dict[str, Any]]:
- """返回每个计划分到的数量摘要。"""
- summary: list[dict[str, Any]] = []
- for plan, bucket in zip(plan_pairs, buckets, strict=False):
- if not bucket:
- continue
- summary.append(
- {
- "plan_label": plan.label,
- "produce_plan_id": plan.produce_plan_id,
- "publish_plan_id": plan.publish_plan_id,
- "video_count": len(bucket),
- }
- )
- return summary
|