kuaifan 420d46d5cc feat(apps): 新增应用菜单角标(数字/红点,per-user 实时推送)
插件/微应用可在自己的菜单入口显示数字或红点角标,插件未打开也生效。

- 后端:新增 app_badges 表 + AppBadge 模型 + Module/Badge 业务编排 +
  AppsController(badge__set 应用密钥鉴权 / badge__clear 用户鉴权)
- 每应用独立密钥 APP_SECRET:按 appid 持久化于 appstore config.yml,鉴权校验
- 推送:复用 PushTask 下发 appBadge WS 消息;microapp_menu 附带初始角标
- 前端:appBadges Vuex module + WS 处理 + 三处菜单渲染(应用卡片/主菜单入口/
  父『应用』入口聚合)+ 移动端 Tabbar + 打开即清(badge_clear_on_open)
- 用户离职级联清理;同步 ai-kb 角标知识
2026-06-29 02:32:19 +00:00

2.5 KiB
Raw Permalink Blame History

id, title, type, feature, scope, locale, aliases, related_tools, related_pages, prerequisites, negative, last_verified
id title type feature scope locale aliases related_tools related_pages prerequisites negative last_verified
micro-app.badge.concept 插件/微应用菜单角标 concept micro-app end-user zh
应用角标
菜单红点
插件未读数
应用未读提醒
应用菜单数字
badge
应用入口小红点
application
角标真值归插件,主程序不自己产生数字;插件未接入则不会有角标
角标不是消息未读数,具体含义由各插件自行定义
自定义微应用菜单(纯外链)默认不会有角标,除非其后端接入了角标接口
v1.8.45

插件/微应用菜单角标

定义

插件/微应用可以在自己的菜单上显示「角标」——一个数字或一个小红点用来提醒用户有待处理事项。角标真值由插件决定DooTask 主程序只负责存储、下发与实时推送。

展示位置

  • 应用中心卡片:对应插件/微应用卡片右上角显示数字或红点
  • 主导航平铺入口:被平铺到左侧主菜单的单个插件入口显示其角标
  • 父『应用』入口(聚合):左侧「应用」一级入口与移动端底部「应用」标签显示聚合角标
    • 聚合规则:总数 = 工作报告未读数 + 所有插件角标数字之和
    • 总数 > 0 显示数字(超过 999 显示 999+);总数为 0 时若任一插件存在红点则显示红点

关键属性(菜单配置 menu_items

  • key:菜单稳定标识,用于定位某个菜单的角标;留空时表示该应用的第一个菜单
  • badge_clear_on_open:是否在该菜单被打开时自动清零
    • true:打开对应应用菜单时角标自动清除
    • false(默认):永不自动清零,角标的增减完全由插件控制

自动清零

当菜单设置了 badge_clear_on_open: true,用户打开该菜单时,前端会立即本地清零并调用接口持久化清除;多端会通过实时推送保持一致。

实时性

角标变化通过 WebSocket 实时推送给在线用户;离线用户在下次进入时由应用菜单接口随初始数据一同同步,无需额外请求。

生命周期

  • 应用被卸载:该应用的全部角标清除
  • 用户离职:该用户的全部角标清除

相关