feat: 首推与昨日冲突时改推并保证一月不重复

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-07-14 10:39:12 +08:00
parent d448002e7a
commit 54f164cdbf
3 changed files with 658 additions and 1 deletions

View File

@@ -50,6 +50,7 @@ from daily.format_wecom import (
from daily.agent_workflow import is_agent_mode, run_agent_workflow
from daily.featured_pick import (
apply_featured_pick,
featured_identity_key,
pick_command_from_featured,
pick_why_from_featured,
)
@@ -638,7 +639,44 @@ def generate_report() -> tuple[str, str, Path, Path]:
research_tech_items=wecom_tech_news if news_merged else None,
boards_for_wecom=boards_for_wecom,
)
featured = apply_featured_pick(llm_input, date_str=date_str)
pool_a: list[dict[str, Any]] = []
pool_a_keys: set[str] = set()
for board_name, items in boards_for_wecom.items():
for item in items:
keyed = dict(item)
keyed["board"] = board_name
pool_a.append(keyed)
ik = featured_identity_key(keyed)
if ik:
pool_a_keys.add(ik)
pool_b: list[dict[str, Any]] = []
for board_name, raw_items, kind in (
("skills_trending", trending, "skill"),
("skills_hot", hot, "skill"),
("github_trending", github_trending, "github"),
("github_emerging", github_emerging, "github"),
("github_topic", github_topic, "github"),
):
deep = board_select(
board=board_name,
items=raw_items,
recent_keys=set(),
limit=pool,
pool_size=pool,
kind=kind, # type: ignore[arg-type]
)
for item in deep:
keyed = dict(item)
keyed["board"] = board_name
ik = featured_identity_key(keyed)
if ik and ik not in pool_a_keys:
pool_b.append(keyed)
featured = apply_featured_pick(
llm_input,
date_str=date_str,
pool_a=pool_a,
pool_b=pool_b,
)
movement = llm_input["movement"]
eff_mode = llm_input["effective_wecom_mode"]
if news_merged: