diff --git a/docs/development/CURRENT_STATUS.md b/docs/development/CURRENT_STATUS.md
index 17cbd8c..8216de7 100644
--- a/docs/development/CURRENT_STATUS.md
+++ b/docs/development/CURRENT_STATUS.md
@@ -29,6 +29,7 @@
- 生产构建脚本已加入 Node 22/OpenSSL 3 兼容参数。
- `api.json` 已生成 28 个模块、278 个接口和 32 个模型的本地文档(2026-09-08 重新生成)。
- 登录成功且无指定回跳地址时,默认进入隐患台账 `/hazard/ledger`;根路径也统一重定向至该页面,并以隐藏基础路由保证首次登录时可解析。
+- 顶部「消息」通知已接入真实接口(2026-10-15):未读数徽标 `message/unread-count`、未读下拉 `message/list`、点击查看即已读 `message/detail/{id}`、全部已读 `message/readAll`;并沿用 MQTT(订阅 `sys/{userId}/msg`)实时刷新。原 `setMessageNum` 空实现已由组件内真实请求取代。
## 重点业务页面状态
diff --git a/docs/development/DEVELOPMENT_LOG.md b/docs/development/DEVELOPMENT_LOG.md
index f0f2296..ac30edf 100644
--- a/docs/development/DEVELOPMENT_LOG.md
+++ b/docs/development/DEVELOPMENT_LOG.md
@@ -1,5 +1,14 @@
# 开发日志
+## 2026-10-15:Web 顶部消息通知接入真实接口
+
+- 改造 `src/layout/components/message.vue`:头部铃铛下拉接入真实接口——未读数徽标 `message/unread-count`、未读下拉 `message/list`、点击查看即已读 `message/detail/{id}`、底部「全部已读」`message/readAll`;字段按 `title/content/createTime/isRead` 渲染并只展示未读。
+- 新增 `src/api/message/index.js`:5 个消息中心接口封装(`unread-count`/`list`/`detail/{id}`/`read/{id}`/`readAll`)。
+- 实时提醒:沿用 MQTT(`MyConfig.MQTTconnection`,订阅 `sys/{userId}/msg`),收到消息即刷新未读;组件卸载时 `client.end(true)`。
+- 原 `store` 的 `setMessageNum` 空实现保留(不再被组件使用)。
+- 待确认:点击消息的业务跳转规则(按 `msgType`+`bizId`),当前仅显示详情;后端需按 `sys/{userId}/msg` 主题推送。
+- 验证:`eslint --no-ignore` 通过、`npm run build:prod` 通过(仅既有 warning)。
+
## 2026-10-15:新增 Web 风控与审计页面(W8)
- 新增 `src/views/risk/index.vue` + `src/api/risk/index.js`,两个 Tab:
diff --git a/docs/development/PAGES_TODO.md b/docs/development/PAGES_TODO.md
index 2530bb3..c5b33fb 100644
--- a/docs/development/PAGES_TODO.md
+++ b/docs/development/PAGES_TODO.md
@@ -56,6 +56,7 @@
| 32 | 系统管理 | 部门管理 | ✅ | ✅ | — | [system/dept](../../src/views/system/dept/index.vue) |
| 33 | 系统管理 | 岗位管理 | ✅ | ✅ | — | [system/post](../../src/views/system/post/index.vue) |
| 34 | 系统管理 | 字典管理 | ✅ | ✅ | — | [system/dict](../../src/views/system/dict/index.vue) |
+| — | 顶部 | 消息通知(头部铃铛:未读红点 + 未读下拉 + 查看即已读 + 全部已读) | ⚠️ 待测试 | ✅ | ✅ | **已开发(2026-10-15)**:`src/layout/components/message.vue` + `src/api/message/index.js`。接口 `message/unread-count`·`list`·`detail/{id}`·`readAll`;MQTT 实时刷新(订阅 `sys/{userId}/msg`,需后端推送) |
| — | 系统监控 | 在线用户/定时任务/调度日志/缓存/服务/操作日志/登录日志 | ✅ | ✅ | — | [monitor/](../../src/views/monitor)(旧模块对接) |
| — | — | 个人中心 / 账号退出 | ✅ | ✅ | — | 已实现 |
@@ -84,6 +85,7 @@
| 13 | 我的 | 消息中心(列表/详情/已读) | ✅ | ✅ | — | [MessagesScreen](../../../zhongyouApp/src/screens/home/MessagesScreen.tsx) |
| 14 | 商城 | 商城-首页 | ❌ | ⛔ | ⛔ | 惠服商城页面本体(三方),见下方原因 |
| 15 | 商城 | 商城-商品详情 / 购物车 / 确认订单 / 商城个人中心 | ❌ | ⛔ | ⛔ | 同上(4 屏) |
+| 16 | 消息 | 消息推送对接(App 内实时提醒) | ❌ | ⚠️ | ⚠️ | **对接信息**:MQTT 主题 `sys/{userId}/msg`(服务见 `public/static/config.js` 的 `MQTTconnection`,Web 端已接入);接口 `message/unread-count`·`list`·`detail/{id}`·`readAll`。App 需接入 MQTT 客户端做全局新消息提醒;**推送主题与 App 端连接方案需后端确认** |
> 备注:APP 现状已含“隐患录入照片上传≤8 张”(`uploadHazardAttachment`),[zhongyouApp/开发任务清单.md](../../../zhongyouApp/开发任务清单.md) 中“照片未做”已过时。
diff --git a/src/api/message/index.js b/src/api/message/index.js
new file mode 100644
index 0000000..675050e
--- /dev/null
+++ b/src/api/message/index.js
@@ -0,0 +1,26 @@
+import request from '@/utils/request'
+
+// 未读消息数量(头部红点)
+export function getUnreadMessageCount() {
+ return request({ url: '/business/message/unread-count', method: 'get' })
+}
+
+// 我的消息列表(分页)
+export function listMessages(params) {
+ return request({ url: '/business/message/list', method: 'get', params })
+}
+
+// 消息详情(查看即标记已读)
+export function getMessageDetail(id) {
+ return request({ url: '/business/message/detail/' + id, method: 'get' })
+}
+
+// 标记单条已读
+export function readMessage(id) {
+ return request({ url: '/business/message/read/' + id, method: 'post' })
+}
+
+// 全部标记已读
+export function readAllMessages() {
+ return request({ url: '/business/message/readAll', method: 'post' })
+}
diff --git a/src/layout/components/message.vue b/src/layout/components/message.vue
index fd86dde..bc50251 100644
--- a/src/layout/components/message.vue
+++ b/src/layout/components/message.vue
@@ -1,11 +1,6 @@
-