Skip to content

通知体系与更新日志

通知通道

  • 站内通知:顶栏铃铛,按接收人定向——需求完成/关闭、决策分变动(验收 +5 / 下线 -15)、功能下线待移除提醒等。
  • 飞书/企微群:需求进度卡片(完成/关闭都推)、出图结果推群、API Key 余额告警。
  • 邮件:需求完成/关闭时通知提出人(提出人邮箱即登录名)。
  • 更新日志:顶栏「更新日志」查看全部版本;检测到新版本号时对每个用户自动弹一次版本弹窗(数据源 public/CHANGELOG.md,发版时需同步更新版本条目)。

推送服务架构(2026-08-10 重构)

两条业务线,各自形态保留,不强行合并:

  • A 线functions/api/notify.js):出图推送,图片形态,带重试(fetchWithRetry 2 次)+ push_logs 日志 + SSRF 校验 + IM API 兜底。生产关键路径。
  • B 线functions/api/_notify-service.js):运营通知(机器人推送/需求变更/余额告警),卡片形态,fire-and-forget。
  • 共享 helper:getTenantToken(飞书 token)、resolveFeishuOpenId(@提到的 open_id 查询)在 _notify-service.js 导出,A/B 线复用。

推送目标(账户级绑定)

  • 推送只认 webhook + 平台(飞书/企微)。群名(group_name)创建时必填用于定位,owner 字段记负责人。
  • 没有全局默认:每个账号在「个人资料」页自助绑定自己的通知通道(admin_users.default_push_groups)。
  • 路由靠 webhook_configs.scopeimage-gen(出图推送)vs project-progress(运营通知)。notify_type 已废弃,只保留兼容旧数据。
  • 配置入口:设置 → 通知管理(管理员维护 webhook);个人资料 → 我的通知通道(每个人选自己的)。

推送可观测性

  • 每次 A 线推送写 push_logs 表(record_id / event / platform / target / status / http_status / attempts)。
  • 失败指数退避重试 2 次(1s/3s),结果摘要回写 generation_records.trace(如 studio:done 12s; pushed 2/2)。
  • 排查"图出了但没进群":查 push_logs 表 + 看 trace 里的 pushed N/M。

企业飞书绑定

登录页「企业飞书扫码登录」和「个人资料 → 绑定企业飞书」走同一条 OAuth。回调校验本公司 tenant_key,把本应用的 open_id / union_id 写入 admin_users。个人飞书或其他企业账号直接拒绝。未绑定时 @ 功能静默失效,不影响群推送。

好易美(HYM)· 票务业务与后台知识库