feat: 早报系统重构与功能增强
- 新增常驻调度器 daily/scheduler.py + run-scheduler.ps1(定时生成/推送) - 新增 daily/bridge_manager.py:Windows 兼容的 Cursor SDK 桥接 - 新增 skills/daily-featured-pick 首推 Skill 与叙事轴/去重逻辑 - 新闻抓取窗口、GitHub 搜索、企微 delta 模式等多项改进 - 补充设计文档与 superpowers 计划/规范 - 新增对应测试(scheduler、featured_pick、github_search、news_fetch_window 等) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -27,6 +27,19 @@ class ShownKeysTests(unittest.TestCase):
|
||||
items = [{"repo": "a/b"}, {"repo": "c/d"}]
|
||||
self.assertEqual(extract_shown_keys("github_trending", items), ["a/b", "c/d"])
|
||||
|
||||
def test_extract_skill_keys_include_source(self):
|
||||
items = [
|
||||
{
|
||||
"id": "open.feishu.cn/lark-drive",
|
||||
"source": "open.feishu.cn",
|
||||
"title": "lark-drive",
|
||||
}
|
||||
]
|
||||
self.assertEqual(
|
||||
extract_shown_keys("skills_trending", items),
|
||||
["open.feishu.cn/lark-drive", "open.feishu.cn"],
|
||||
)
|
||||
|
||||
def test_load_recent_reads_wecom_shown_not_baseline(self):
|
||||
with tempfile.TemporaryDirectory() as tmp:
|
||||
out = Path(tmp)
|
||||
@@ -48,6 +61,41 @@ class ShownKeysTests(unittest.TestCase):
|
||||
self.assertEqual(keys["github_trending"], {"x/y"})
|
||||
self.assertNotIn("a/b", keys["github_trending"])
|
||||
|
||||
def test_load_recent_falls_back_to_wecom_md_when_shown_missing(self):
|
||||
"""旧日 data 无 wecom_shown_keys 时,从同日 wecom.md 解析实际展示 keys。"""
|
||||
with tempfile.TemporaryDirectory() as tmp:
|
||||
out = Path(tmp)
|
||||
payload = {
|
||||
"data": {
|
||||
"date": "2026-07-13",
|
||||
"github_trending": [{"repo": "other/top"}],
|
||||
}
|
||||
}
|
||||
(out / "2026-07-13.data.json").write_text(
|
||||
json.dumps(payload, ensure_ascii=False), encoding="utf-8"
|
||||
)
|
||||
(out / "2026-07-13.wecom.md").write_text(
|
||||
"\n".join(
|
||||
[
|
||||
"🐙 **GitHub Trending Top 2**",
|
||||
"1. [vinta/awesome-python](https://github.com/vinta/awesome-python)",
|
||||
"2. [react/react](https://github.com/react/react)",
|
||||
"",
|
||||
"🌱 **GitHub 新兴 Top 1**",
|
||||
"1. [elder-plinius/T3MP3ST](https://github.com/elder-plinius/T3MP3ST)",
|
||||
]
|
||||
),
|
||||
encoding="utf-8",
|
||||
)
|
||||
with patch("daily.board_history.OUTPUT_DIR", out):
|
||||
keys = load_recent_shown_keys("2026-07-14", lookback_days=7)
|
||||
self.assertEqual(
|
||||
keys["github_trending"],
|
||||
{"vinta/awesome-python", "react/react"},
|
||||
)
|
||||
self.assertEqual(keys["github_emerging"], {"elder-plinius/T3MP3ST"})
|
||||
self.assertNotIn("other/top", keys["github_trending"])
|
||||
|
||||
def test_merge_shown_does_not_touch_baseline(self):
|
||||
data = {
|
||||
"movement_baseline": {"github_trending": [{"repo": "raw/one"}]},
|
||||
|
||||
Reference in New Issue
Block a user