v1.4.2: 修复日报/定制汇总重复发送刷屏(_maybe_daily元组嵌套bug+发送日期持久化) + 一键全部启用/停用 + 数据源快速筛选
This commit is contained in:
+15
-9
@@ -147,11 +147,16 @@ def send_custom_summary():
|
||||
return notifier.send_custom_summary(articles, label)
|
||||
|
||||
|
||||
def _maybe_daily(now, last_day, time_key, send_fn, kind):
|
||||
"""到点触发的通用逻辑。time_key 存 'HH:MM',send_fn 返回发送条数。"""
|
||||
def _maybe_daily(now, last_day, time_key, send_fn, kind, persist_key):
|
||||
"""到点触发的通用逻辑。time_key 存 'HH:MM',send_fn 返回发送条数。
|
||||
last_day 存上次发送的日期字符串 'YYYY-MM-DD'(None=尚未发送)。
|
||||
修复:每天只发一次——last_day 必须是纯字符串,不能嵌套元组;
|
||||
并把已发送日期持久化到 settings,服务重启后也不会当天重复发。"""
|
||||
day_key = now.strftime("%Y-%m-%d")
|
||||
if last_day[0] == day_key:
|
||||
return last_day
|
||||
if last_day is None:
|
||||
last_day = db.get_setting(persist_key, "")
|
||||
if last_day == day_key:
|
||||
return last_day # 今天已发过,不再发
|
||||
hm = str(db.get_setting(time_key, config.AUTO_DEFAULTS.get(time_key) or
|
||||
config.CUSTOM_DEFAULTS.get(time_key) or "10:00"))
|
||||
try:
|
||||
@@ -161,7 +166,8 @@ def _maybe_daily(now, last_day, time_key, send_fn, kind):
|
||||
if now.strftime("%H:%M") >= hm and now.hour >= hh:
|
||||
try:
|
||||
send_fn()
|
||||
last_day = (day_key,)
|
||||
db.set_setting(persist_key, day_key)
|
||||
return day_key
|
||||
except Exception as e:
|
||||
db.add_log(kind, f"{time_key} 汇总异常", 0, [], status="error", detail=str(e))
|
||||
notifier.report_error("汇总", f"{time_key} 汇总发送异常", str(e)[:300])
|
||||
@@ -174,10 +180,10 @@ def scheduler_loop(stop_event):
|
||||
while not stop_event.is_set():
|
||||
now = datetime.now()
|
||||
try:
|
||||
last_summary_day = _maybe_daily(now, (last_summary_day,), "summary_time",
|
||||
send_daily_summary, "summary")
|
||||
last_custom_summary_day = _maybe_daily(now, (last_custom_summary_day,), "custom_summary_time",
|
||||
send_custom_summary, "custom_summary")
|
||||
last_summary_day = _maybe_daily(now, last_summary_day, "summary_time",
|
||||
send_daily_summary, "summary", "summary_last_day")
|
||||
last_custom_summary_day = _maybe_daily(now, last_custom_summary_day, "custom_summary_time",
|
||||
send_custom_summary, "custom_summary", "custom_summary_last_day")
|
||||
except Exception as e:
|
||||
notifier.report_error("汇总", "定时汇总检查异常", str(e)[:300])
|
||||
# 采集到期数据源(每源独立周期)
|
||||
|
||||
Reference in New Issue
Block a user