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

58 lines
2.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
id: micro-app.badge.concept
title: 插件/微应用菜单角标
type: concept
feature: micro-app
scope: end-user
locale: zh
aliases:
- 应用角标
- 菜单红点
- 插件未读数
- 应用未读提醒
- 应用菜单数字
- badge
- 应用入口小红点
related_tools: []
related_pages: [application]
prerequisites: []
negative:
- 角标真值归插件,主程序不自己产生数字;插件未接入则不会有角标
- 角标不是消息未读数,具体含义由各插件自行定义
- 自定义微应用菜单(纯外链)默认不会有角标,除非其后端接入了角标接口
last_verified: v1.8.45
---
# 插件/微应用菜单角标
## 定义
插件/微应用可以在自己的菜单上显示「角标」——一个数字或一个小红点用来提醒用户有待处理事项。角标真值由插件决定DooTask 主程序只负责存储、下发与实时推送。
## 展示位置
- **应用中心卡片**:对应插件/微应用卡片右上角显示数字或红点
- **主导航平铺入口**:被平铺到左侧主菜单的单个插件入口显示其角标
- **父『应用』入口(聚合)**:左侧「应用」一级入口与移动端底部「应用」标签显示聚合角标
- 聚合规则:总数 = 工作报告未读数 + 所有插件角标数字之和
- 总数 > 0 显示数字(超过 999 显示 999+);总数为 0 时若任一插件存在红点则显示红点
## 关键属性(菜单配置 menu_items
- **key**:菜单稳定标识,用于定位某个菜单的角标;留空时表示该应用的第一个菜单
- **badge_clear_on_open**:是否在该菜单被打开时自动清零
- `true`:打开对应应用菜单时角标自动清除
- `false`(默认):永不自动清零,角标的增减完全由插件控制
## 自动清零
当菜单设置了 `badge_clear_on_open: true`,用户打开该菜单时,前端会立即本地清零并调用接口持久化清除;多端会通过实时推送保持一致。
## 实时性
角标变化通过 WebSocket 实时推送给在线用户;离线用户在下次进入时由应用菜单接口随初始数据一同同步,无需额外请求。
## 生命周期
- 应用被卸载:该应用的全部角标清除
- 用户离职:该用户的全部角标清除
## 相关
- 微应用菜单:[[micro-app.menu.concept]]
- 微应用权限(角标只发给对该应用菜单可见的用户):[[micro-app.permission.concept]]
- 在哪能看到:[[micro-app.entry.menu-map]]