# 搜索页 — 功能需求说明（C 端 · 全站）

> 本文档在《搜索页功能需求-草稿》基础上整理，并关联 **《关联需求分析.md》** v1.6、平台侧 **《商品管理功能需求》** v1.3.3、《商品审核功能需求》** v1.0、《商品分类功能需求》** v1.5、《店铺管理功能需求》** v1.3.6、《会员管理功能需求》** v1.0.1 及 C 端兄弟模块 **《商城首页功能需求》** v1.0.2、《商品分类功能需求》** v1.0.1、《商品详情内页功能需求》** v1.0 做边界与流程对齐。  
> 范围：**C 端（消费者 APP / 用户商城）· 全站搜索** 的输入、历史、结果展示与排序；**不涉及** 数据库结构、接口定义及技术实现细节。  
> **说明：** 本模块 **只读检索** 全平台 **出售中** 商品与 **未删** 店铺；**不维护** 商品/店铺档案。  
> **v1.0：** 首版定稿；对齐草稿 §1～§7；补全全站 vs 店内搜索边界、浏览层规则、与供给链/用户链协作。

---

## 1. 模块定位

### 1.1 业务目标

为 **C 端买家/访客** 提供 **全平台关键词检索** 能力，使其能够：

- 在 **搜索输入页** 输入关键词、查看与管理 **搜索历史**；
- 在 **搜索结果页** 按 **销量 / 价格 / 店铺** 切换查看匹配结果；
- 从结果进入 **商品详情** 或 **店铺主页**；
- 无匹配时看到明确 **空态**。

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

| 能力 | 说明 |
|------|------|
| **店铺内搜索** | 见 **店铺主页** 专册；**仅搜本店商品名**，**无** 店铺 Tab、**无** 跨店 |
| **平台/商家后台检索** | 见平台 **商品审核**、商家 **商品列表** 高级检索；**不同** 范围与权限 |
| **商品发品/审核/上下架** | 见商家 **商品列表**、平台 **商品审核** |
| **购物车、下单、支付** | 见 **购物车**、**订单管理**；本模块 **不直接** 交易 |
| **搜索联想/热搜/语音** | 草稿 **未要求**；若需另版本 |
| **会员注册/登录** | 见 **会员管理**；搜索浏览 **无需登录** |

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

```text
【供给链】商家发品 → 审核/出售中；平台维护店铺
                              ↓
【C 端 · 入口】商城首页 / 商品分类 等 ──点击搜索栏──► 本模块 · 搜索输入页
                              ↓
                      搜索结果页（商品 / 店铺）
                              ↓
              商品详情 / 店铺主页 → 加购/下单（四条件，见 §10）

【用户链】访客与会员均可搜索；下单须登录且会员启用
```

| 关联模块 | 关系 | 边界说明 |
|----------|------|----------|
| **商城首页** v1.0.2 | **上游入口** | 搜索栏 → 搜索输入页（HM3、HM-S1） |
| **商品分类** v1.0.1 | **上游入口** | 各分类页搜索栏 → 搜索输入页（GC-S1） |
| **商品详情** v1.0 | **下游** | 商品结果 → 详情（SRH11） |
| **店铺主页**（待建设） | **下游** | 店铺结果 → 店铺主页（SRH12） |
| **商品审核 / 商品管理** | **数据源** | 商品结果 **仅出售中**（SRH6） |
| **店铺管理** v1.3.6 | **数据源** | 店铺结果 **未删**；**停业店可展示** |
| **会员管理** v1.0.1 | **用户链** | 访客/会员均可搜；禁用会员 **不影响** 搜索 |
| **关联需求分析** v1.6 §11 | **可购规则** | 搜索 **展示 ≠ 可下单** |

### 1.3 与《关联需求分析》的对应

| 关联分析要点 | 本模块 |
|--------------|--------|
| C 端浏览与下单分离 | 搜索结果属 **浏览层** |
| C 端可售四条件 | 列表 **不校验** 店态/库存/分类可见；**详情/结算** 校验 |
| 店铺停业 S-P3 | 停业店商品/店铺 **可出现在** 结果；**下单** 拦截 |
| 分类不显示 C-P5 | 分类隐藏 **不剔除** 出售中商品出搜索（无分类入口 ≠ 不可搜） |
| 商品搜索关键词字段 | 商家「搜索关键词」**v1 可能未落库**；首期以 **商品名称** 匹配为主（§6.2） |

### 1.4 使用端与角色

| 端 | 角色 | 能力 |
|----|------|------|
| **C 端** | **访客** | 全站搜索、浏览结果、进详情/店铺 |
| **C 端** | **已登录会员** | 同访客；历史 **可** 与账号绑定（见 §4.3，非首期可仅本地） |
| 平台/商家端 | 管理员/商家 | **不操作** 本页面 |

---

## 2. 关联需求分析

### 2.1 与平台《商品管理》/ 商家《商品列表》

| 项 | 全站搜索（本模块） | 商家/平台后台 |
|----|-------------------|---------------|
| 范围 | **全平台** 出售中商品 | 商家：**当前店铺**；平台：监管列表 |
| 状态 | **仅出售中** | 商家五态；平台 **无未上架** |
| 匹配字段 | **商品名称** 模糊（首期）；扩展 **搜索关键词**（商家发品字段，待落库） | 编号、名称、keyword 等 |
| 下架/删商品 | **不出现在** 结果 | 后台仍可见 |

### 2.2 与《商品审核功能需求》

| 项 | 定稿 |
|----|------|
| 待审核/已下架/未上架 | **不进入** C 端搜索结果 |
| 出售中 | **可** 被搜到（仍须 **未删** 且店铺 **未删**） |

### 2.3 与《店铺管理功能需求》

| 项 | 定稿 |
|----|------|
| 店铺 Tab 匹配 | **店铺名称** 模糊 |
| 已逻辑删除店铺 | **不出现** |
| 停业店铺 | **可出现** 于店铺 Tab；其下商品 **可出现** 于商品 Tab |
| 排序「入驻从长到短」 | 按店铺 **创建时间升序**（越早入驻越靠前） |

### 2.4 与 C 端《商品分类》《商城首页》

| 项 | 定稿 |
|----|------|
| 搜索入口 | 首页、分类页 **只读搜索栏** → **本模块** 输入页 |
| 占位文案 | **「搜索兽药、饲料、店铺」**（与 HM3、GC3 **一致**） |
| 列表卡片 | 商品卡片字段 **对齐** 分类列表 §7（主图、名称、售价、店铺名） |
| 排序 | 销量/价格规则 **对齐** 分类商品列表 §7（默认可对照「按销量」Tab） |

### 2.5 与《店铺主页》— 店内搜索边界

| 维度 | **全站搜索（本模块）** | **店铺内搜索（店铺主页）** |
|------|------------------------|----------------------------|
| 范围 | 全平台 | **当前店铺** 内 |
| 店铺 Tab | **有** | **无** |
| 商品匹配 | 全平台出售中 | 本店出售中商品名 |
| 历史 | 全站历史 | 可 **独立** 或不记录（店铺主页另册） |
| 入口 | 首页/分类顶栏 | 店铺主页内搜索入口 |

> **定稿：** 两套搜索 **不共用** 结果页路由；避免 scope 混淆。

### 2.6 与《商品详情内页》

| 项 | 定稿 |
|----|------|
| 跳转 | 点击商品结果 → **商品详情** |
| 可购 | 详情/结算校验 **四条件**；搜索 **不前置** 拦截 |

---

## 3. 页面与入口

本模块包含 **两个页面**：

```text
C 端全站搜索
├── A. 搜索输入页（关键词输入 + 搜索历史）
└── B. 搜索结果页（重新搜索 + 排序 Tab + 列表）
```

| 入口 | 目标 | 说明 |
|------|------|------|
| 商城首页 · 点击搜索栏 | **A. 搜索输入页** | 无预填关键词 |
| 商品分类 · 点击搜索栏 | **A. 搜索输入页** | 同上 |
| A · 执行搜索 | **B. 搜索结果页** | 带入关键词 |
| B · 点击「重新搜索」区 | **A. 搜索输入页** | **保留** 已输入文字（草稿 §3） |
| B · 返回 | 来源页或上一级 | 以前台 UX 为准 |

**不出现：** 从本模块直接进入购物车、结算。

---

## 4. 搜索输入页（A 页）

> 对齐草稿 §1、§2。

### 4.1 顶栏搜索区

| 元素 | 说明 |
|------|------|
| 返回 | 返回 **来源页**（首页/分类等） |
| 搜索输入框 | 支持 **文字输入**；获焦可编辑 |
| 清空图标 | 一键清空输入框内容 |
| 搜索按钮 | 触发检索；与 **键盘回车** **等价** |

### 4.2 搜索触发规则

```text
用户在 A 页输入关键词
    → 点击「搜索」或键盘回车
        ├── 关键词 **为空**（仅空格视为空）→ **不跳转** B 页；可 Toast「请输入搜索内容」
        └── 关键词 **非空** → 写入/更新搜索历史 → 进入 B 页（默认 Tab 见 §5.2）
```

| 规则 | 说明 |
|------|------|
| 空白拦截 | 草稿 §1「输入为空不跳转」 |
| 首尾空格 | 建议 **trim** 后判断与检索 |
| 历史记录 | **成功进入 B 页** 时写入（空搜 **不写** 历史） |

### 4.3 搜索历史

| 项 | 定稿 |
|----|------|
| 位置 | 输入框 **下方** |
| 排序 | **最近搜索时间倒序**（草稿 §2） |
| 单条删除 | 支持删除 **一条** 历史 |
| 全部清空 | 支持 **一键清空** 全部历史 |
| 存储 | **客户端本地**（首期）；**不强制** 云端同步 |
| 去重 | 同一关键词再次搜索 → **更新** 该条时间并 **置顶** |
| 上限 | 建议 **最多 20 条**；超出删最旧（产品可微调） |
| 无历史 | **不展示** 历史区块或展示「暂无搜索历史」 |

---

## 5. 搜索结果页（B 页）

> 对齐草稿 §3～§7。

### 5.1 重新搜索区

| 项 | 定稿 |
|----|------|
| 形态 | 顶栏 **可点击搜索条**（展示当前关键词 + 搜索图标等，以前台 UI 为准） |
| 交互 | 点击 → 进入 **A. 搜索输入页**；输入框 **预填** 当前关键词（草稿 §3） |
| 在 A 页修改后搜索 | 以 **新关键词** 刷新 B 页结果与历史 |

### 5.2 排序 / 维度 Tab

> 草稿 §4「按销量/按价格/店铺切换；**仅匹配一类标签**」。

| Tab | 含义 | 默认 |
|-----|------|:----:|
| **按销量** | 展示 **商品列表**；按 **销量降序** | **是**（首次进 B 页） |
| **按价格** | 展示 **商品列表**；价格排序 **可切换** | 否 |
| **店铺** | 展示 **店铺列表**；**不** 展示商品列表 | 否 |

**互斥规则：**

- 同一时刻 **仅一个** Tab 高亮；
- 切换 Tab → **重新加载** 对应列表（**不保留** 另一 Tab 的滚动位置，以前台 UX 为准）。

### 5.3 按价格 — 升序 / 降序

| 项 | 定稿 |
|----|------|
| 默认 | 进入「按价格」Tab 时，默认 **价格从低到高** |
| 切换 | 用户可切换 **从低到高 / 从高到低**（交互同《商品分类》排序区：再次点击或独立切换控件） |
| 同价 | 次要排序键建议 **商品编号升序**（与分类列表一致，实现层约定，产品可不在 UI 明示） |

### 5.4 店铺 Tab — 排序

| 项 | 定稿 |
|----|------|
| 规则 | **店铺入驻时间从长到短** = 店铺 **创建时间升序**（越早开店越靠前） |
| 同时间 | 次要键 **店铺 ID 升序**（实现层） |

---

## 6. 检索范围与匹配规则

### 6.1 商品 Tab（按销量 / 按价格）

| 项 | 定稿 |
|----|------|
| 数据范围 | **全平台** **出售中** 且商品 **未删**、店铺 **未删** |
| 匹配方式 | 关键词 **模糊匹配** **商品名称** |
| 扩展（非首期） | 商家发品 **搜索关键词** 字段落库后，纳入 **或** 匹配 |
| 不过滤 | **不过滤** 店铺停业、**不过滤** 库存为 0、**不过滤** 分类隐藏（浏览层 SRH7） |
| 分页 | 支持 **上拉/load more** 或分页（以前台 UX 为准） |

### 6.2 店铺 Tab

| 项 | 定稿 |
|----|------|
| 数据范围 | **未逻辑删除** 的店铺 |
| 匹配方式 | 关键词 **模糊匹配** **店铺名称** |
| 停业 | **可** 出现在结果 |
| 分页 | 同 §6.1 |

### 6.3 关键词与 Tab 关系

| 场景 | 行为 |
|------|------|
| 同一关键词 | **三个 Tab 共用**；切换 Tab **不修改** 关键词，仅换列表类型/排序 |
| 修改关键词 | 须在 **A 页** 重新搜索后刷新 B 页 |

---

## 7. 结果列表展示

### 7.1 商品列表

> 对齐草稿 §5；字段对齐《商品分类》§7.4。

| 字段 | 说明 |
|------|------|
| 商品主图 | 列表主图 |
| 商品名称 | 可对关键词 **高亮**（以前台 UI 为准） |
| 售价 | 当前 **出售中** 售价 |
| 店铺名称 | **实时** 读档 |

**不展示（本期卡片）：** 库存、销量数字、服务标签（与分类列表一致；排序仍按销量/价格）。

**交互：**

```text
用户点击商品卡片
    → 进入「商品详情内页」
    → 加购/购买须满足 §10 四条件
```

### 7.2 店铺列表

> 对齐草稿 §6。

| 字段 | 说明 |
|------|------|
| 店铺头像 | |
| 店铺名称 | 可高亮关键词 |
| 评分 | 与 **店铺主页** 口径一致；模块未建设时 **隐藏或占位** |
| 粉丝数 | 同上 |

**交互：**

```text
用户点击店铺卡片
    → 进入「店铺主页」（另册）
    → 默认展示该店商品或主页默认 Tab
```

---

## 8. 空态与异常

### 8.1 无匹配结果

| 情形 | 行为 |
|------|------|
| 当前 Tab 下 **0 条** | 展示 **「暂无相关」**（草稿 §7） |
| 切换 Tab | 各 Tab **独立** 判断空态（商品无结果 ≠ 店铺无结果） |

### 8.2 加载失败

| 情形 | 行为 |
|------|------|
| 列表加载失败 | 当前 Tab **空态或错误提示**；**不** 整页白屏；可 **重试** |
| 历史读取失败 | 历史区 **不展示** 或空；**不影响** 输入与搜索 |

> 草稿 §8「code、msg、data」**不在本文定义**。

---

## 9. 页面流程总览

```text
【入口】首页/分类 · 点击搜索栏
    → A. 搜索输入页
        →（可选）查看/删/清空历史
        → 输入关键词 + 搜索
            → B. 搜索结果页（默认「按销量」商品列表）
                → 切换「按价格」→ 商品列表 + 价序切换
                → 切换「店铺」→ 店铺列表
                → 点击商品 → 商品详情
                → 点击店铺 → 店铺主页
                → 点击重新搜索区 → A 页（带关键词）
                → 无结果 → 「暂无相关」
```

---

## 10. 与下单、会员的协作（浏览 vs 可购）

本模块 **仅检索与跳转**，**不在此** 加购或支付。用户从结果进入商品详情后，须满足 **《关联需求分析》§11** 四条件方可下单：

| # | 条件 |
|---|------|
| 1 | 商品 = **出售中** |
| 2 | 店铺 = **开业** |
| 3 | 商品所属 **平台分类可见** |
| 4 | 库存 **> 0** |

| 场景 | 行为 |
|------|------|
| 访客搜索与浏览 | **允许** |
| 停业店商品出现在结果 | **允许** 展示；详情/下单 **拦截** |
| 零库存商品 | **允许** 展示；加购/下单提示 **库存不足** |
| 禁用会员 | **不影响** 搜索；加购/下单在其它模块拦截 |

---

## 11. 业务规则汇总

| 编号 | 规则 |
|------|------|
| **SRH1** | 本模块为 **全站** 搜索；**不含** 店铺内搜索 |
| **SRH2** | 入口：首页/分类搜索栏 → **搜索输入页** |
| **SRH3** | 空关键词 **不进入** 结果页 |
| **SRH4** | 搜索历史：**时间倒序**；单删、清空 |
| **SRH5** | 结果页 **重新搜索** 回输入页并 **保留关键词** |
| **SRH6** | 商品结果 **仅出售中** + 未删 |
| **SRH7** | 商品结果 **浏览层**：**不过滤** 停业/零库存/分类隐藏 |
| **SRH8** | Tab **三选一**：按销量 / 按价格 / 店铺 |
| **SRH9** | 按销量：**销量降序**；按价格：**升/降可切换** |
| **SRH10** | 店铺 Tab：**店名模糊**；排序 **创建时间升序** |
| **SRH11** | 商品结果 → **商品详情** |
| **SRH12** | 店铺结果 → **店铺主页** |
| **SRH13** | 无匹配 → **「暂无相关」** |
| **SRH14** | 搜索 **展示 ≠ 可下单**；四条件在 **详情/结算** |
| **SRH15** | 占位 **「搜索兽药、饲料、店铺」** 与首页/分类 **一致** |

---

## 12. 非本期范围

| 项 | 说明 |
|------|------|
| 店铺内搜索 | **店铺主页** 专册 |
| 搜索联想、热搜榜、语音搜索 | — |
| 按 **商户名**、**平台分类** 筛选项 | — |
| 搜索结果 **加购** 快捷按钮 | 进详情或购物车模块 |
| 历史 **云端多设备同步** | 首期可仅本地 |
| 商家「搜索关键词」字段检索 | 字段落库后 v1.1 |
| 草稿 §9 技术栈 | **不纳入** |

---

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

| 草稿条目 | 本文档处理 |
|----------|------------|
| §1 搜索栏 | §4.1、§4.2 |
| §2 搜索历史 | §4.3 |
| §3 重新搜索框 | §5.1 |
| §4 销量/价格/店铺 Tab | §5.2～§5.4 |
| §5 商品列表 | §7.1 |
| §6 店铺列表 | §7.2 |
| §7 暂无相关 | §8.1 |
| §8 异常返回 | §8.2 **不纳入** 协议 |
| §9 技术栈 | **不纳入** |
| 未写：入口、全站/店内边界、出售中口径、可购 | §2、§3、§6、§10 补充 |

---

## 14. 修订记录

| 版本 | 说明 |
|------|------|
| **v1.0** | 首版定稿：A/B 两页；全站 vs 店内边界；三 Tab；浏览层与四条件 |

---

*文档版本：v1.0 · 关联《搜索页功能需求-草稿》、《关联需求分析.md》v1.6、《商城首页功能需求.md》v1.0.2、《商品分类功能需求.md》v1.0.1*
