member_context: split daily weekly monthly digest scheduling

This commit is contained in:
liuwei
2026-04-14 10:53:46 +08:00
parent 1800ae585a
commit 28e038a25c
7 changed files with 1339 additions and 240 deletions

View File

@@ -50,13 +50,32 @@ class MemberContextPlugin(MessagePluginInterface):
self.LOG.debug(f"正在初始化 {self.name} 插件...")
self.service = MemberContextService(context["db_manager"], self._config)
refresh_times = self._config.get("schedule", {}).get("refresh_times", [])
if refresh_times and not self._job_registered:
@async_job.at_times(refresh_times)
async def refresh_member_context_job():
if self.service:
self.LOG.info("开始刷新成员交互摘要")
self.service.refresh_all_chatrooms()
self.LOG.info("成员交互摘要刷新完成")
weekly_refresh_time = self._config.get("schedule", {}).get("weekly_refresh_time", "")
monthly_refresh_time = self._config.get("schedule", {}).get("monthly_refresh_time", "")
if not self._job_registered:
if refresh_times:
@async_job.at_times(refresh_times)
async def refresh_member_context_job():
if self.service:
self.LOG.info("开始刷新成员交互摘要(日任务)")
self.service.refresh_all_chatrooms(enable_weekly_digest=False, enable_monthly_digest=False)
self.LOG.info("成员交互摘要刷新完成(日任务)")
if weekly_refresh_time:
@async_job.every_week_time(weekday=6, time_str=weekly_refresh_time)
async def refresh_member_context_weekly_job():
if self.service:
self.LOG.info("开始刷新成员交互摘要(周任务)")
self.service.refresh_all_chatrooms(enable_weekly_digest=True, enable_monthly_digest=False)
self.LOG.info("成员交互摘要刷新完成(周任务)")
if monthly_refresh_time:
@async_job.every_month_last_day_time(monthly_refresh_time)
async def refresh_member_context_monthly_job():
if self.service:
self.LOG.info("开始刷新成员交互摘要(月任务)")
self.service.refresh_all_chatrooms(enable_weekly_digest=False, enable_monthly_digest=True)
self.LOG.info("成员交互摘要刷新完成(月任务)")
self._job_registered = True
self.LOG.debug(f"{self.name} 插件初始化完成")
return True