# 站内消息 — 功能需求说明（C 端）

> 本文档在《站内消息功能需求-草稿》基础上整理，并关联 **《关联需求分析.md》** v1.6、平台侧 **《会员管理功能需求》** v1.1、《商户入驻审核功能需求》** v1.1 及 C 端兄弟模块 **《我的服务功能需求》** v1.1、《我的店铺关注功能需求》** v1.0 做边界与流程对齐。  
> 范围：**C 端（消费者 APP / 用户商城）· 站内消息中心** 的 **未读提醒、消息列表、消息详情、已读标记与关联跳转**；**不涉及** 数据库结构、接口定义及技术实现细节。  
> **说明：** 本模块 **只读消费** 系统为当前会员投递的消息；**消息写入** 由平台业务事件（本期主要为 **商户入驻审核**）触发，**不在** C 端维护。  
> **v1.0：** 首版定稿；对齐草稿 §1～§4；补全入驻三类通知、红点规则、与「我的入驻」协作及非本期边界。

---

## 1. 模块定位

### 1.1 业务目标

为 **已登录的 C 端会员** 提供 **站内消息统一查看** 能力，使其能够：

- 在 **个人中心或全局入口** 看到 **未读新消息** 的 **红点/角标** 提醒；
- 查看 **当前会员** 收到的 **全部站内消息** 列表（按时间倒序）；
- 打开 **消息详情**，阅读完整标题与正文；
- 阅读后 **标记为已读**，红点随之更新；
- 对 **入驻审核类** 消息，**一键跳转** 至 **我的入驻 / 申请详情**，核对进度或驳回原因。

**不包含（本期或与它模块分工）：**

| 能力 | 说明 |
|------|------|
| **消息产生与投递逻辑** | 由平台 **商户入驻审核** 等业务模块在状态变更时 **系统写入**；C 端 **不创建、不编辑、不删除** 消息 |
| **平台运营查看/群发消息** | 平台后台 **无** 独立「消息管理」工作台；非本期 |
| **短信、邮件、App Push** | 入驻审核 EA14 明确 **本期仅站内消息** |
| **订单状态、物流、售后通知** | 见 **订单管理** / **我的订单**；**可另册** 扩展消息类型 |
| **店铺关注「开业提醒」** | 见 **我的店铺关注**；**可另册** |
| **商家端消息** | 本模块 **仅 C 端买家会员**；经营账号 **不在此** 收件 |

### 1.2 在业务链中的位置

```text
【用户链】C 端注册/登录
    ↓
【可选】我的服务 · 商家入驻申请 → 提交
    ↓
【平台】商户入驻审核（待审 → 通过/公示 → 完成入驻 / 驳回）
    ↓
【系统】向申请人会员投递站内消息（EA14）
    ↓
【本模块】消息中心 · 红点 · 列表 · 详情 · 跳转「我的入驻」

【并行】会员浏览/下单 ── 不依赖是否收到或已读消息
```

| 关联模块 | 关系 | 边界说明 |
|----------|------|----------|
| **商户入驻审核** v1.1 | **上游写入** | 审核通过→公示、完成公示、审核驳回 **各发一条** 消息；文案见 §7 |
| **我的服务** v1.1 | **兄弟 + 跳转目标** | 入驻进度 **可在** 消息中心 **或** 「我的入驻」查看；消息 UI **本模块** 承担 |
| **会员管理** v1.1 | **用户链** | 禁用会员 **不可登录**，故 **不可** 使用本模块 |
| **会员注册登录** | **前置** | 须有效登录态 |
| **我的店铺关注** v1.0 | **潜在扩展** | 开业提醒类消息 **非本期** |
| **订单管理** v1.0.1 | **潜在扩展** | 订单类通知 **非本期** |
| **关联需求分析** v1.6 §2.1 | **双链** | 用户链消息 **不影响** 供给链发品/经营 |

### 1.3 与平台《商户入驻审核》的对应

| 平台事件（EA14） | 申请状态变化 | 本模块应展示的消息类型 |
|------------------|--------------|------------------------|
| 运营 **审核通过** | 待审核 → **公示中** | **入驻审核通过，公示中** |
| **完成公示**（自动或手动） | 公示中 → **已完成入驻** | **入驻完成** |
| 运营 **审核驳回** | 待审核 → **审核未通过** | **入驻审核未通过**（含拒绝原因） |

> **平台代录入**（路径 B）**不经过** 入驻审核，**不产生** 本模块消息。

---

## 2. 关联需求分析

### 2.1 与平台《会员管理》

| 项 | C 端本模块 | 平台会员管理 |
|----|------------|--------------|
| 收件人 | **仅当前登录会员** 可见本人消息 | 列表/详情 **不展示** 会员消息箱 |
| 是否启用 | 禁用后 **无法登录** → 本模块不可用 | 禁用须二次确认（M4） |
| 会员注销/换绑手机 | **非本期** | — |

### 2.2 与《商户入驻审核》《我的服务 · 商家入驻》

| 项 | 定稿 |
|----|------|
| 通知渠道 | 状态变更 **必须** 发站内消息（EA14）；**无** 短信/邮件 |
| 文案一致性 | 消息 **标题、正文要点** 与平台 §8.2、§8.3、§9 及 C 端 **我的入驻** 展示 **不矛盾** |
| 驳回原因 | 消息正文 **须含** 拒绝原因摘要；与申请详情、C 端「我的入驻」 **同源** |
| 公示期 | 「公示中」消息 **须提示** 公示结束/预计完成时间（与平台公示起止一致） |
| 重复申请 | 驳回后 **新申请** 产生 **新消息**；历史消息 **保留** 只读 |
| 查看入口 | C 端可在 **消息中心** 或 **我的入驻** 查看结果（MS §9.8） |

### 2.3 与《我的店铺关注》（边界）

| 项 | 定稿 |
|----|------|
| 关注店开业提醒 | 产品曾提及「XX 店开业提醒」；**非本期** 消息类型 |
| 链入 | 若未来从消息跳转店铺主页，须 **带登录态** 与有效 **shopId** |

### 2.4 消息写入与读取职责

```text
写入方（系统 · 非 C 端 UI）
├── 商户入驻审核 · 审核通过        → 投递「公示中」
├── 商户入驻审核 · 完成公示        → 投递「入驻完成」
└── 商户入驻审核 · 审核驳回        → 投递「未通过 + 原因」

读取方（本模块 · C 端）
├── 未读计数 / 红点
├── 消息列表（分页）
├── 消息详情 + 标记已读
└── 按业务类型跳转（本期：入驻申请详情）
```

---

## 3. 功能结构

```text
站内消息（C 端 · 须登录）
├── 全局/个人中心入口（含未读红点）
├── 消息列表
│   ├── 全部消息（时间倒序）
│   ├── 未读/已读标识
│   └── 下拉刷新 / 分页加载
├── 消息详情
│   ├── 标题、正文、接收时间
│   ├── 打开即标记已读（见 §6.3）
│   └── 关联操作（本期：查看入驻申请）
└── （被动）未读数变化驱动入口红点更新
```

---

## 4. 业务概念

| 概念 | 说明 |
|------|------|
| 站内消息 | 系统向 **指定会员** 投递的 **应用内通知**；含标题、正文、业务关联信息 |
| 未读 / 已读 | 会员 **尚未打开详情** 为未读；**已打开详情** 为已读 |
| 未读数 | 当前会员 **未读消息条数**；用于 **红点/数字角标** |
| 消息类型（本期） | **入驻审核**：公示中、入驻完成、审核未通过 |
| 业务关联 | 消息可关联 **入驻申请单**；详情页可 **跳转** 至对应申请 |
| 消息中心 | 本模块列表 + 详情 **统一入口** 的统称 |

---

## 5. 访问控制与前置条件

### 5.1 统一前置（对齐草稿 §1）

| 规则 | 说明 |
|------|------|
| **MM0** | 使用本模块 **任意能力** 前，须 **已通过 C 端登录** 且 Token 有效 |
| 未登录 | **拦截**，引导 **登录**；登录成功后可 **回跳** 消息中心（若产品支持） |
| 访客 | **不提供** 消息入口，或进入后等同未登录 |

### 5.2 会员启用状态

```text
平台禁用会员 → 无法登录 → 本模块不可用
```

| 规则 | 说明 |
|------|------|
| 历史消息 | 会员 **重新启用** 后，**历史消息仍在**，未读状态 **保持** |
| 数据隔离 | **仅展示** 当前登录 `member_id` 的消息；**不可** 查看他人消息 |

### 5.3 与草稿对齐的读取范围（草稿 §4 业务化）

| 规则 | 说明 |
|------|------|
| 数据范围 | 列表与详情 **仅查询当前登录会员** 的站内消息 |
| 排序 | 默认按 **接收时间（创建时间）降序**；**最新在前** |
| 分页 | 列表 **须支持分页**（或等价「加载更多」）；避免一次拉取过多 |

---

## 6. 未读提醒（对齐草稿 §3）

### 6.1 入口与展示

| 入口（建议） | 红点规则 |
|--------------|----------|
| **个人中心 / 我的** 内「消息」或「消息中心」菜单项 | 未读数 **> 0** 时展示 **红点**；可选展示 **未读数字**（如 99+ 封顶） |
| **APP 顶部导航** 消息图标（若产品配置） | 同上 |
| **TabBar / 首页** 快捷入口（若产品配置） | 同上 |

### 6.2 未读数计算

| 规则 | 说明 |
|------|------|
| **MM1** | 未读数 = 当前会员 **read_flag = 未读** 的消息 **总条数** |
| 实时性 | 进入个人中心、打开消息列表、从详情返回列表时 **应刷新** 未读数 |
| 无未读 | 未读数 = 0 时 **隐藏** 红点/数字 |

### 6.3 已读标记

| 规则 | 说明 |
|------|------|
| **MM2** | 会员 **打开某条消息详情** 后，该条 **标记为已读** |
| 列表态 | 列表页 **滑动浏览** **不** 批量标记已读；**须进入详情**（或产品定义「点击列表行 = 进详情并已读」） |
| 幂等 | 已读消息 **再次打开** **不改变** 状态 |
| 红点更新 | 标记已读后 **立即** 更新未读数与入口红点 |

---

## 7. 消息类型与内容（对齐草稿 §2）

### 7.1 本期支持的消息类型

| 类型 | 触发时机（平台） | 标题（示例） | 正文要点 |
|------|------------------|--------------|----------|
| **公示中** | 入驻申请 **审核通过**，进入公示 | 入驻审核通过，公示中 | 申请编号；已进入公示期；**预计完成/公示结束时间** |
| **入驻完成** | **完成公示**，商户+首店+经营账号已建档 | 入驻完成 | 申请编号；入驻成功；可 **经营账号登录商家端** |
| **审核未通过** | 入驻申请 **被驳回** | 入驻审核未通过 | 申请编号；**拒绝原因全文或摘要**（与平台驳回原因一致） |

### 7.2 投递规则

| 规则 | 说明 |
|------|------|
| **MM3** | 每条平台状态变更 **对应一条新消息**；**不合并** 历史记录 |
| 收件人 | **提交入驻申请的会员**（`member_id`）；与平台列表「申请会员名称」一致 |
| 平台代录入 | **不产生** 消息 |
| 重复审核 | 对 **非待审核** 申请的操作被平台 **阻断**；**不会** 重复发同阶段消息 |

### 7.3 入驻审核消息流程

```text
会员提交入驻申请（我的服务）
    ↓
【待审核】— 无消息
    ↓
平台审核通过 ──► 消息①「公示中」+ 未读红点
    ↓
公示期满 / 手动完成公示 ──► 消息②「入驻完成」+ 未读红点
    ↓
（或）平台驳回 ──► 消息「审核未通过」+ 原因 + 未读红点
```

---

## 8. 消息列表

### 8.1 列表字段

| 字段 | 说明 |
|------|------|
| 标题 | 消息标题；**未读** 时可 **加粗** 或 **未读圆点** 区分 |
| 摘要 | 正文 **前几行截断** 或 **单行摘要**（驳回类 **须能辨识** 含原因） |
| 接收时间 | 消息创建/投递时间；格式 **YYYY-MM-DD HH:mm**（或产品统一规范） |
| 已读状态 | 未读 **视觉标识**；已读 **弱化** 样式 |

### 8.2 列表行为

| 规则 | 说明 |
|------|------|
| 默认排序 | **接收时间降序** |
| 空态 | 无任何消息时：「暂无消息」+ 简要说明（如「入驻审核结果将在此通知您」） |
| 点击行 | 进入 **消息详情**（§9） |
| 刷新 | 支持下拉刷新或进入页 **自动刷新** |
| 加载失败 | 统一错误态 + **重试** |

### 8.3 筛选与分类（本期）

| 项 | 定稿 |
|----|------|
| Tab 分类（全部/未读/系统/订单） | **非本期**；列表 **仅「全部」** |
| 搜索 | **非本期** |
| 删除 / 批量已读 | **非本期**（消息 **不可** 由用户删除） |

---

## 9. 消息详情

### 9.1 展示内容

| 字段 | 说明 |
|------|------|
| 标题 | 完整标题 |
| 正文 | 完整内容；驳回类 **拒绝原因须完整可读** |
| 接收时间 | 与列表一致 |
| 关联操作 | 见 §9.2 |

### 9.2 关联跳转（本期）

| 消息类型 | 跳转目标 | 说明 |
|----------|----------|------|
| 入驻审核类（三种） | **我的服务 · 我的入驻 / 该申请详情** | 携带 **申请单** 上下文；会员可核对状态、公示期、驳回原因 |
| 无法关联（数据异常） | **不跳转** 或提示「关联内容不存在」 | 如申请单已被清理的 **极端情况**；正文仍可读 |

### 9.3 详情交互

| 规则 | 说明 |
|------|------|
| 进入详情 | **标记该条已读**（§6.3） |
| 返回列表 | 列表 **刷新** 该条已读样式与 **全局未读数** |
| 长正文 | **可滚动** 阅读；**不截断** |

---

## 10. 与「我的入驻」的信息一致性

| 场景 | 消息中心 | 我的入驻 |
|------|----------|----------|
| 公示中 | 消息① + 预计完成时间 | 展示 **公示起止**、状态「公示中」 |
| 入驻完成 | 消息② + 成功指引 | 状态「已完成入驻」、经营账号说明 |
| 审核未通过 | 消息 + **原因** | **醒目** 展示 **同一拒绝原因**、**重新申请** 入口 |

| 规则 | 说明 |
|------|------|
| **MM4** | 两处信息 **不得矛盾**；以 **平台审核结果** 为唯一事实来源 |
| 优先入口 | 会员 **可从任一处** 获知结果；消息中心侧重 **主动提醒**，我的入驻侧重 **进度管理** |

---

## 11. 异常与边界

### 11.1 常见边界

| 场景 | 处理 |
|------|------|
| 未登录打开消息链接 | 引导登录 → 回跳 |
| 登录后会员 A 尝试访问会员 B 的消息 | **不可见**（服务端按会员隔离） |
| 消息已读但用户未读「我的入驻」 | **允许**；两处独立 |
| 连续多条未读 | 红点展示 **总数**；列表 **逐条** 展示 |
| 会员无入驻申请却收到消息 | **不应发生**；若出现则详情跳转 **失败提示** |

### 11.2 与草稿 §5 的关系

草稿要求接口异常返回 **code、msg、data** 统一格式；该约定属于 **接口/技术层**，**不纳入** 本功能需求正文；产品层要求：**加载失败可重试、错误提示友好**（见 §8.2、§12）。

---

## 12. 页面与交互要点

| 场景 | 要求 |
|------|------|
| 未读红点 | 未读数变化 **及时**；避免已读后仍长期显示红点 |
| 驳回消息 | 列表摘要与详情中原因 **醒目**（可与我的入驻 **同色系**） |
| 公示中消息 | 详情中 **突出** 公示结束/预计完成 **日期时间** |
| 入驻完成 | 详情提供 **查看入驻结果** / **我的入驻** 按钮 |
| 空态 | 友好文案；**不** 展示虚假未读 |
| 加载中 | 列表 **骨架屏或 Loading** |
| 弱网 | 失败 **Toast** + 重试 |

---

## 13. 业务规则汇总

| 编号 | 规则 |
|------|------|
| **MM0** | 须 **登录且启用** 会员 |
| **MM1** | 未读数 = 当前会员未读消息条数 |
| **MM2** | **打开详情** 标记该条已读 |
| **MM3** | 入驻审核状态变更 **各投递一条** 新消息 |
| **MM4** | 消息与「我的入驻」**信息一致** |
| **MM5** | **仅当前会员** 可读本人消息 |
| **MM6** | 列表 **时间倒序**、**分页** |
| **MM7** | 入驻审核类消息 **可跳转** 申请详情 |
| **MM8** | 用户 **不可** 删除或编辑消息 |
| **MM9** | 平台代录入 **不产生** 消息 |
| **MM10** | 本期 **仅入驻审核** 三类；订单/关注等 **另册** |

---

## 14. 非本期范围

| 项 | 说明 |
|----|------|
| 订单支付、发货、收货、售后 **消息** | 订单模块建设时 **扩展** |
| 店铺关注 **开业提醒** | 见我的店铺关注 |
| 短信、邮件、Push | EA14：**仅站内** |
| 消息 **分类 Tab**、搜索、用户删除 | — |
| **全部标记已读** | 可后续迭代 |
| 平台后台 **消息管理/人工群发** | — |
| 商家端 / 平台运营端 **收件箱** | — |
| 草稿 §5 异常 **code/msg/data**、§6 **技术栈** | **不纳入** 本文 |

---

## 15. 草稿对照与修订说明

| 草稿条目 | 本文档处理 |
|----------|------------|
| §1 会员已登录 APP | §5 |
| §2 入驻成功、审核失败等 | §7（扩展为 **公示中 / 完成 / 驳回** 三类，对齐 EA14） |
| §3 红点提醒未读 | §6 |
| §4 查询当前会员站内消息 | §5.3、§8（**不写表名**） |
| §5 异常 code/msg/data | §11.2 **不纳入** 功能需求 |
| §6 技术栈 | **不纳入** |
| 未写：详情、已读规则、跳转、与我的入驻一致性、平台写入边界 | §2、§9、§10、§14 补充 |

---

## 16. 修订记录

| 版本 | 说明 |
|------|------|
| **v1.0** | 首版定稿：未读红点、列表、详情、已读、入驻三类消息与跳转；关联商户入驻审核、我的服务、会员管理 |

---

*文档版本：v1.0（定稿）· 关联《站内消息功能需求-草稿.md》、《关联需求分析.md》v1.6、《商户入驻审核功能需求.md》v1.1、《会员管理功能需求.md》v1.1、《我的服务功能需求.md》v1.1 · 草稿保持不变。*
