feat: 军事科技每日资讯推送系统 - Docker部署 + 日志系统 + 数据目录重组
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
"""RSS 板块:沿用现有 collect_entries_for_push + compose_digest 流程
|
||||
|
||||
迁移自 src/main.py::run_push_job 中 RSS digest 部分,行为保持一致。
|
||||
"""
|
||||
|
||||
from datetime import datetime
|
||||
from typing import Dict, Optional, Tuple
|
||||
|
||||
from src.llm import compose_digest, parse_digest_with_metadata
|
||||
from src.storage import (
|
||||
extract_push_time,
|
||||
get_last_push_file,
|
||||
load_recent_push_content,
|
||||
)
|
||||
|
||||
|
||||
async def run_rss_section(
|
||||
config: Dict, now: Optional[datetime] = None
|
||||
) -> Tuple[str, Optional[Dict], Optional[str]]:
|
||||
"""生成 RSS digest markdown 段(不含 sentinel)。
|
||||
|
||||
返回:
|
||||
(markdown_body, metadata, error)
|
||||
- 无新内容时返回 ("", None, None)
|
||||
- compose_digest 失败时返回 ("", None, error_message)
|
||||
- metadata 字段:title / lead / highlights / profile=default / date
|
||||
早报场景下调用方可丢弃 metadata(由 insights 段覆盖)
|
||||
"""
|
||||
# 延迟 import 避免循环:Task 20-21 后 main.py 会反向 import run_rss_section
|
||||
from src.main import collect_entries_for_push
|
||||
|
||||
last_push_file = get_last_push_file()
|
||||
last_push_time = extract_push_time(last_push_file) if last_push_file else None
|
||||
|
||||
min_score = config["filter"]["min_score"]
|
||||
context_days = config["filter"]["context_days"]
|
||||
|
||||
to_push, context = collect_entries_for_push(
|
||||
last_push_time=last_push_time,
|
||||
context_days=context_days,
|
||||
min_score=min_score,
|
||||
)
|
||||
|
||||
if not to_push:
|
||||
print("ℹ️ RSS: 无新消息")
|
||||
return "", None, None
|
||||
|
||||
push_context_days = config["filter"].get("push_context_days", 5)
|
||||
recent = load_recent_push_content(push_context_days)
|
||||
|
||||
try:
|
||||
raw = await compose_digest(
|
||||
to_push, context, config["llm"], recent_push_context=recent
|
||||
)
|
||||
except Exception as e:
|
||||
msg = f"compose_digest 失败: {e}"
|
||||
print(f"⚠️ RSS: {msg}")
|
||||
return "", None, msg
|
||||
|
||||
date_str = (now or datetime.now()).strftime("%Y-%m-%d")
|
||||
body, metadata = parse_digest_with_metadata(raw or "", date_str)
|
||||
return body, metadata, None
|
||||
Reference in New Issue
Block a user