跳转到正文

通知与工作流

保存站用两套通知解决不同问题:站点级公告/通知负责向所有访客展示运营信息,用户通知负责把与当前登录用户相关的审核结果送达本人。

站点公告

首页公告卡片展示当前公告。顶部通知中心可以展示启用中的站点通知,并记录登录用户是否已读。公告和通知由具备相应权限的管理员维护。

用户通知

当前最重要的用户通知来源是删除申请审核:

  • 通过:通知说明目标文章或剪贴板已删除;
  • 拒绝:通知说明申请未通过;
  • 管理员填写处理备注时,通知会附带备注。

用户可以读取分页通知、查看未读数量、标记部分或全部为已读。

工作流是什么

保存、RAG、搜索重建等复杂操作不会在一次 HTTP 请求内同步完成,而是创建工作流,再由 BullMQ 队列中的任务执行。

一个工作流包含:

  • 唯一工作流 ID;
  • 多个有依赖关系的任务;
  • 等待、运行、完成、失败或过期状态;
  • 供前端展示的报告任务;
  • 可选的去重键,避免重复执行同一目标。

实时状态

前端通过 Socket.IO 加入任务房间并接收更新。连接恢复后,服务器可回放任务终态。工作流跟踪页也能通过 HTTP 查询当前状态,因此浏览器短暂断线不代表任务被取消。

失败、重试与过期

  • 保存失败时,内容页会显示原因并提供重试;
  • 工作流失败原因会被归一化,避免只显示不可读对象;
  • 终态工作流和任务会按配置清理;
  • 重启恢复会处理仍处于活动状态的记录;
  • 同一文章或剪贴板的活跃保存工作流可能被复用。

反复点击不会让不可访问内容变得可访问,反而可能增加队列压力。遇到持续失败,应先判断源站状态和错误类型。

Luogu Saver 以 AGPL-3.0-or-later 许可证开源