﻿# PRD：C-2.11 / B-1.27 / 后台-1.39 样板间权限升级

## 1. 需求背景

当前 HOME VISTA 的共享内容数据权限设定中，户型内容会受到共享状态和户型图售罄状态约束，住户内容会受到售罄状态约束：

- 若销售人员未将某个户型共享给顾客，顾客在户型图、各阶平面图、住户表中均无法看到该户型信息。
- 若某个户型图已被设定为售罄，顾客在 C 端无法看到该户型及该户型对应住户信息，即使 B 端已设定共享给用户也不可见。
- 若某个住户已售罄，顾客在户型图、各阶平面图、住户表中均无法看到该住户信息。
- 户型与住户存在绑定关系；若户型图未共享，则该户型下对应住户均无法查看详细信息。

当前存在一个例外：样板间功能中添加的户型样板间或住户样板间 VR，没有受到户型图共享规则、户型图售罄规则和住户售罄规则的联动限制。即使顾客不能查看对应户型或住户，仍可能在样板间模块中看到对应样板间 VR。

部分房企希望样板间 VR 也跟随户型共享与住户售罄条件控制，避免通过样板间绕过既有内容权限。由于该诉求与当前样板间独立共享逻辑冲突，本次通过运营后台开关提供两种展示规则：

| 模式 | 说明 |
|---|---|
| 独立模式 | 样板间展示规则与历史版本保持一致 |
| 联动模式 | 样板间不再自由设定访问内容，样板间中录入的房间跟随户型图共享权限、户型图售罄状态和住户售罄状态限定 |

## 2. 需求目标

| 目标 | 说明 |
|---|---|
| 保留现有业务兼容性 | 默认关闭新增开关，样板间展示规则与历史版本保持一致 |
| 支持客户差异化诉求 | 开关开启后，样板间 VR 跟随户型共享、户型图售罄与住户售罄规则控制 |
| 避免权限绕过 | 开关开启后，顾客不可通过样板间看到其无权查看的户型或住户信息 |
| 明确 B 端配置约束 | 管理员共享设定、站点公开访问内容设定、顾客共享设定均按开关模式切换样板间权限配置方式 |
| 保持 C 端体验稳定 | C 端 UI 不调整，仅通过接口返回内容控制样板间展示数据 |

## 3. 适用范围

| 项目 | 说明 |
|---|---|
| 版本 | C-2.11 / B-1.27 / 后台-1.39 |
| 端 | 运营后台 / B 端 / C 端 |
| 涉及对象 | 样板间、户型样板间、住户样板间 VR、户型图共享权限、户型图售罄状态、住户售罄状态、样板间导航入口 |
| 涉及 B 端配置 | 管理员共享设定、站点公开访问内容设定、顾客共享设定 |
| 涉及 C 端入口 | 样板间列表页、户型图、各阶平面图、住户表中可进入样板间的入口 |
| 不涉及 | C 端 UI 改版、样板间 VR 内容制作流程改造、户型图与住户既有共享规则改造、历史版本项目的权限逻辑变更 |

## 4. 术语定义

| 术语 | 定义 |
|---|---|
| 样板间 | HOME VISTA 中用于展示户型或住户相关 VR / WALK 内容的功能模块 |
| 户型样板间 | 样板间数据中填写户型字段、未填写住户字段的样板间内容 |
| 住户样板间 | 样板间数据中同时填写户型字段和住户字段的样板间内容 |
| 样板间房间字段 | 样板间中户型字段必填，住户字段非必填；不存在仅填写住户字段、不填写户型字段的样板间房间 |
| 户型共享权限 | 顾客是否可以查看某个户型图及其相关户型信息的权限结果 |
| 户型图售罄状态 | 某个户型图是否已被设定为售罄；户型图售罄时，该户型及该户型对应住户在 C 端不可见，即使 B 端已设定共享也不可见 |
| 住户售罄状态 | 某个住户是否已售罄；状态来源与住户表一致；住户已售罄时，顾客不可查看该住户信息 |
| 独立模式 | 运营后台开关关闭时的模式；样板间展示规则与历史版本保持一致 |
| 联动模式 | 运营后台开关开启时的模式；样板间内容跟随户型共享权限、户型图售罄状态与住户售罄状态控制 |
| 样板间导航入口 | C 端导航中进入样板间列表页的功能入口 |

## 5. 用户用例

### 用例 1：运营后台配置样板间权限联动开关

| 项目 | 内容 |
|---|---|
| 用户 | 运营后台管理员 |
| 场景 | 客户项目希望样板间 VR 跟随户型共享与住户售罄规则控制 |
| 前置条件 | 当前项目使用新增版本能力 |
| 用户目标 | 通过开关控制样板间展示规则 |
| 操作路径 | 进入运营后台对应配置页面 -> 找到样板间权限联动开关 -> 开启或关闭 -> 保存配置 |
| 结果 | 开关关闭时，样板间按独立模式运行；开关开启时，样板间按联动模式运行 |

### 用例 2：B 端管理员设定销售人员允许共享给顾客的内容范围

| 项目 | 内容 |
|---|---|
| 用户 | B 端管理员 |
| 场景 | 管理员设定销售人员允许共享给顾客的内容范围 |
| 前置条件 | 管理员进入共享内容范围设定页面 |
| 用户目标 | 控制销售人员后续可共享给顾客的内容边界 |
| 操作路径 | 管理员进入销售人员可共享内容范围设定 -> 查看或配置样板间相关内容 |
| 结果 | 系统根据运营后台样板间权限联动开关，决定样板间是否可作为独立内容被配置，以及是否跟随销售人员可共享的户型图范围联动 |

| 开关状态 | 页面表现 / 配置结果 |
|---|---|
| 关闭：独立模式 | 样板间展示规则与历史版本保持一致 |
| 开启：联动模式 | 样板间数据卡片列表选项置灰不可操作；勾选状态跟随管理员在该页面勾选的销售人员可共享户型图同步刷新；B 端页面勾选联动不判断户型售罄或住户售罄，C 端最终展示按第 6.4 节判断 |

### 用例 3：B 端管理员设定项目公开时可以访问的内容范围

| 项目 | 内容 |
|---|---|
| 用户 | B 端管理员 |
| 场景 | 管理员设定项目公开访问时可以查看的内容范围 |
| 前置条件 | 管理员进入站点公开访问内容设定页面 |
| 用户目标 | 控制项目公开访问状态下可被访问的样板间内容 |
| 操作路径 | 管理员进入站点公开访问内容设定 -> 查看或配置样板间相关内容 |
| 结果 | 系统根据运营后台样板间权限联动开关，决定公开访问内容中样板间是否可独立配置，以及是否跟随公开访问的户型图范围联动 |

| 开关状态 | 页面表现 / 配置结果 |
|---|---|
| 关闭：独立模式 | 样板间展示规则与历史版本保持一致 |
| 开启：联动模式 | 样板间数据卡片列表选项置灰不可操作；勾选状态跟随站点公开访问内容设定中的户型图勾选状态同步刷新；B 端页面勾选联动不判断户型售罄或住户售罄，C 端最终展示按第 6.4 节判断 |

### 用例 4：B 端销售人员设定共享给顾客的内容范围（受限于管理员设定）

| 项目 | 内容 |
|---|---|
| 用户 | B 端销售人员 |
| 场景 | 销售人员为具体顾客设定可访问内容范围 |
| 前置条件 | 销售人员进入顾客共享设定页面 |
| 用户目标 | 控制某个顾客可查看的样板间内容 |
| 操作路径 | 销售人员进入顾客共享设定 -> 查看或配置样板间相关内容 |
| 结果 | 系统根据运营后台样板间权限联动开关，决定顾客共享内容中样板间是否可独立配置，以及是否跟随销售人员实际共享给顾客的户型图范围联动 |

| 开关状态 | 页面表现 / 配置结果 |
|---|---|
| 关闭：独立模式 | 样板间展示规则与历史版本保持一致 |
| 开启：联动模式 | 样板间数据卡片列表选项置灰不可操作；勾选状态跟随销售人员在管理员限定范围内实际勾选给顾客的户型图同步刷新；B 端页面勾选联动不判断户型售罄或住户售罄，C 端最终展示按第 6.4 节判断 |

### 用例 5：C 端根据接口返回展示可见样板间

| 项目 | 内容 |
|---|---|
| 用户 | C 端顾客 |
| 场景 | 顾客浏览样板间、户型图、各阶平面图或住户表 |
| 前置条件 | 系统已根据运营后台开关和当前访问场景返回可见的样板间数据 |
| 用户目标 | 只看到自己有权限查看的样板间 |
| 操作路径 | 顾客进入相关页面 |
| 结果 | C 端 UI 不发生变化；接口返回不同样板间数据，页面按返回结果展示 |

| 开关状态 | C 端样板间显示规则 |
|---|---|
| 关闭：独立模式 | 样板间展示规则与历史版本保持一致 |
| 开启：联动模式 | 样板间展示结果按第 6.4 节联动状态组合表判断 |

## 6. 核心规则总览

### 6.1 模式总览

| 运营后台开关 | B 端样板间共享设定 | C 端样板间内容权限来源 | C 端样板间数据展示 |
|---|---|---|---|
| 关闭 | 与历史版本保持一致 | 与历史版本保持一致 | 与历史版本保持一致 |
| 开启 | 不再允许自由设定样板间访问内容 | 户型共享权限、户型图售罄状态、关联住户 + 住户售罄联合判断 | 仅展示符合第 6.4 节联动状态组合表的样板间 |

### 6.2 联动模式字段定义

| 字段 | 0 | 1 |
|---|---|---|
| 户型未售罄 | 户型已售罄，阻断展示 | 户型未售罄，通过 |
| 户型已分享 | 未分享 / 当前场景不可访问，阻断展示 | 已分享 / 当前场景可访问，通过 |
| 住户未售罄 | 住户已售罄，阻断展示 | 住户未售罄，通过 |
| 未关联住户 | 已关联具体住户，需受住户售罄约束 | 未关联住户，不受住户售罄约束 |
| 联动展示结果 | 不展示 | 展示 |

说明：

1. 户型已分享表示当前访问场景下户型是否可访问；销售人员共享给顾客场景下，需先受管理员允许共享范围约束。
2. 未关联住户为 1 时，样板间为户型样板间，不判断住户售罄状态。
3. 未关联住户为 0 时，样板间为住户样板间，需继续判断住户未售罄。
4. B 端样板间勾选状态表示联动模式下单条样板间在 B 端配置页面中的只读勾选结果。
5. B 端导航勾选状态、C 端导航入口结果为单条样板间推导口径；实际页面按当前访问场景下所有样板间聚合判断，只要任意一个样板间的 B 端样板间勾选状态为 1，B 端样板间导航入口勾选状态与 C 端样板间导航入口结果即为 1。
6. 联动展示结果仅用于判断样板间数据在联动模式下是否于 C 端展示；样板间导航入口不按 C 端接口过滤后是否仍有可展示样板间数据反向判断。

### 6.3 联动展示结果判断公式

```text
联动展示结果 = 户型未售罄 AND 户型已分享 AND (未关联住户 OR 住户未售罄)
```

### 6.4 联动状态组合表

本表中 B 端导航勾选状态、C 端导航入口结果按单条样板间推导展示。实际页面中，导航为当前访问场景聚合状态，只要任意一个样板间的 B 端样板间勾选状态为 1，导航状态即为 1。

| 序号 | 户型未售罄 | 户型已分享 | 住户未售罄 | 未关联住户 | B 端样板间勾选状态 | B 端导航勾选状态 | C 端导航入口结果 | 联动展示结果 |
|---:|---:|---:|---:|---:|---:|---:|---:|---:|
| 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 2 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
| 3 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
| 4 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 |
| 5 | 0 | 1 | 0 | 0 | 1 | 1 | 1 | 0 |
| 6 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 0 |
| 7 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 0 |
| 8 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
| 9 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 10 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
| 11 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
| 12 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 |
| 13 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | 0 |
| 14 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 |
| 15 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 |
| 16 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |

### 6.5 联动规则说明

1. 户型未售罄为 0 时，无论其他条件如何，样板间均不展示。
2. 户型已分享为 0 时，无论其他条件如何，样板间均不展示。
3. 未关联住户为 1 时，住户未售罄不参与判断；只要户型未售罄且户型已分享，样板间展示。
4. 未关联住户为 0 时，住户未售罄参与判断；只有户型未售罄、户型已分享、住户未售罄均为 1 时，样板间展示。
5. 住户没有共享状态判断，仅以住户表中的售罄状态作为约束。

## 7. 运营后台配置规则

1. 添加页面：运营后台**基本信息设定**。
2. 开关名称：**样板间权限联动**。
3. 开关类型：switch，与外景、计算器开关相同。
4. 添加位置：**计算器模式开关下方**。
5. 默认状态：关闭。
6. 显示条件：仅 C 端版本为 2.11 及以上的项目显示；低于 C 端 2.11 的项目不显示。
7. 开关关闭时，样板间展示规则与历史版本保持一致。
8. 开关开启时，样板间进入联动模式，按第 6.4 节联动状态组合表控制展示。
9. 开关从关闭改为开启后，此前预设的样板间独立分享规则及样板间导航入口配置保留数据但不生效。
10. 开关从开启改回关闭后，恢复使用此前保存的样板间独立分享规则及样板间导航入口配置。
11. 开关保存后，B 端配置能力与 C 端接口返回数据均按最新开关状态执行。

## 8. B 端配置规则

本章节适用于 B 端三个设置共享内容的场景。三个场景中的样板间联动规则相同，仅“销售人员设定共享给顾客的内容范围（受限于管理员设定）”需要额外受管理员设定的销售人员可共享范围约束。

- 管理员设定销售人员允许共享给顾客的内容范围
- 管理员设定项目公开时可以访问的内容范围
- 销售人员设定共享给顾客的内容范围（受限于管理员设定）

### 8.1 三个场景的约束差异

| B 端配置场景 | 联动判断中的户型范围 | 差异说明 |
|---|---|---|
| 管理员设定销售人员允许共享给顾客的内容范围 | 管理员在该页面勾选的户型图 | 无额外上层约束 |
| 管理员设定项目公开时可以访问的内容范围 | 站点公开访问内容设定中勾选的户型图 | 公开访问场景不按具体顾客计算 |
| 销售人员设定共享给顾客的内容范围（受限于管理员设定） | 销售人员在管理员限定的可共享范围内勾选的户型图 | 该场景额外受管理员设定的销售人员可共享范围约束 |

开关开启时，第 6.4 节中的“户型已分享”按上表对应场景中的户型范围判断。

### 8.2 联动模式样板间数据勾选规则

本节仅说明开关开启后，B 端三个共享内容设定场景中样板间数据卡片列表的页面表现。

1. 样板间不可独立勾选，样板间数据卡片列表中的所有选框展示为置灰只读态。
2. 联动模式下，样板间列表展示的是**联动有效勾选状态**，不是独立模式下保存的样板间分享状态。
3. 页面加载时，系统需根据当前配置页面已保存或已回显的户型图勾选状态，立即计算并回显样板间联动有效勾选状态。
4. 当某个户型被选中时，关联该户型的样板间同步展示为选中；当该户型取消选中时，关联该户型的样板间同步展示为未选中。
5. 一个户型可以关联多个样板间；该户型被选中时，关联该户型的多个样板间均按同一户型选择状态同步变化。
6. 若样板间关联的户型未被选中，即使该样板间在独立模式下曾被单独共享，联动模式页面中也展示为未选中。
7. 若样板间关联的户型已被选中，即使该样板间在独立模式下未被单独共享，联动模式页面中也展示为选中。
8. 样板间全选按钮同样为只读态，不可手动操作；全部样板间被联动选中时展示为全选态，部分样板间被联动选中时展示为半选态，无样板间被联动选中时展示为未选择态。
9. B 端配置页面中的户型与样板间勾选联动不受户型售罄、住户售罄影响；售罄状态仅影响 C 端最终展示结果，按第 6.4 节联动状态组合表判断。

### 8.3 联动模式样板间导航入口勾选规则

1. 联动模式下，样板间导航入口展示的是联动有效勾选状态，不读取独立模式下保存的样板间导航入口勾选状态。
2. 当前访问场景对应的共享或公开访问内容设定页面中，只要至少有一个样板间被联动有效选中，样板间导航入口置灰展示为选中。
3. 当前访问场景对应的共享或公开访问内容设定页面中，若没有任何样板间被联动有效选中，样板间导航入口置灰展示为未选中。
4. 联动模式下，样板间导航入口是否勾选不受户型售罄、住户售罄影响；户型售罄、住户售罄仅影响 C 端样板间列表及其他入口中的样板间数据展示结果。

### 8.4 模式切换与配置冲突处理

1. 独立模式与联动模式允许存在显示结果差异；差异不视为数据异常，以当前开关状态对应的规则作为唯一生效规则。
2. 开关从关闭改为开启后，三个场景中此前预设的样板间独立分享规则及样板间导航入口配置保留数据但不生效，B 端页面不使用该数据回显样板间勾选状态或样板间导航入口勾选状态。
3. 开关从开启改回关闭后，三个场景恢复使用此前保存的样板间独立分享规则及样板间导航入口配置。
4. 若独立模式下某户型已共享、该户型关联样板间未共享，切换到联动模式后，该样板间按户型已选中展示为选中。
5. 若独立模式下某户型未共享、该户型关联样板间已共享，切换到联动模式后，该样板间按户型未选中展示为未选中。
6. 上述模式切换仅影响 B 端页面展示与 C 端实际展示规则，不清空、不覆盖独立模式下已保存的样板间分享配置及样板间导航入口配置。

## 9. C 端展示规则

### 9.1 样板间数据展示规则

1. C 端 UI 本次不做任何变化。
2. 开关关闭时，C 端样板间展示规则与历史版本保持一致。
3. 开关开启时，C 端接口按第 6.4 节联动状态组合表返回当前访问场景下可展示的样板间数据。
4. 项目为公开访问状态时，C 端无需邀请码即可访问；开关开启时，公开访问场景同样按第 6.4 节联动状态组合表判断，其中“户型已分享”取站点公开访问内容设定中的户型图勾选结果。
5. 样板间列表页、户型图、各阶平面图、住户表等入口仅展示接口返回的样板间数据，不展示无权限样板间。

### 9.2 样板间导航入口展示规则

1. 开关关闭时，C 端样板间导航入口展示规则与历史版本保持一致。
2. 开关开启时，C 端样板间导航入口展示结果与 B 端样板间导航入口联动有效勾选状态一致，不读取独立模式下保存的样板间导航入口配置。
3. 开关开启时，当前访问场景下至少有一个样板间被联动有效选中，则 C 端展示样板间导航入口。
4. 开关开启时，当前访问场景下没有任何样板间被联动有效选中，则 C 端不展示样板间导航入口；用户直接访问样板间列表页 URL，系统按无权限页面处理并跳转到 404。
5. 开关开启时，C 端样板间导航入口是否展示不受户型售罄、住户售罄影响，也不按 C 端接口过滤后是否仍有可展示样板间数据反向判断。
6. 若样板间导航入口已展示后，因分享配置、户型售罄或住户售罄状态变化导致当前访问场景下没有任何可展示样板间，样板间列表页展示空状态提示：**没有可以访问的样板间**。

## 10. 验收标准

### 10.1 运营后台验收标准

1. 运营后台基本信息设定页面在计算器模式开关下方展示**样板间权限联动**开关。
2. 开关类型为 switch，默认关闭。
3. 仅 C 端版本为 2.11 及以上的项目展示该开关；低于 C 端 2.11 的项目不展示。
4. 开关关闭时，样板间展示规则与历史版本保持一致。
5. 开关开启时，样板间进入联动模式，展示结果按第 6.4 节联动状态组合表控制。
6. 开关状态保存后，B 端配置能力与 C 端接口返回均按最新开关状态生效。

### 10.2 B 端验收标准

1. 开关关闭时，B 端样板间共享配置与历史版本保持一致。
2. 开关开启时，管理员共享设定、站点公开访问内容设定、顾客共享设定中，样板间数据卡片列表选框均置灰为只读态，不可手动操作。
3. 开关开启时，样板间列表需展示联动有效勾选状态，不得使用独立模式下保存的样板间分享状态作为页面回显结果。
4. 开关开启时，页面加载完成后，样板间勾选状态需立即按当前配置页面中已回显的户型图勾选状态计算并展示。
5. 开关开启时，同一配置页内勾选或取消户型图后，关联样板间的置灰勾选状态需同步刷新。
6. 开关开启时，一个户型关联多个样板间时，所有关联样板间均按对应户型图勾选状态同步变化。
7. 开关开启时，若独立模式下某户型已共享、该户型关联样板间未共享，联动模式页面中该样板间需展示为选中。
8. 开关开启时，若独立模式下某户型未共享、该户型关联样板间已共享，联动模式页面中该样板间需展示为未选中。
9. 开关开启时，B 端配置页面中的户型与样板间勾选联动不受户型售罄、住户售罄影响。
10. 开关开启时，样板间全选按钮为只读态，不可手动操作，并根据样板间联动选中数量展示全选、半选或未选择状态。
11. 开关开启时，样板间导航入口展示联动有效勾选状态，不得使用独立模式下保存的样板间导航入口勾选状态作为页面回显结果。
12. 开关开启时，当前访问场景对应的共享或公开访问内容设定页面中，只要至少有一个样板间被联动有效选中，样板间导航入口需置灰展示为选中；若没有任何样板间被联动有效选中，样板间导航入口需置灰展示为未选中。
13. 开关开启时，样板间导航入口勾选态不受户型售罄、住户售罄影响。
14. 销售人员设定共享给顾客的内容范围时，只能在管理员限定的可共享范围内勾选户型图。
15. 开关从关闭改为开启后，三个 B 端配置场景中此前保存的样板间独立分享规则及样板间导航入口配置保留数据但不生效。
16. 开关从开启改回关闭后，三个 B 端配置场景恢复使用此前保存的样板间独立分享规则及样板间导航入口配置。

### 10.3 C 端验收标准

1. C 端 UI 无变化。
2. 开关关闭时，C 端样板间展示规则与历史版本保持一致。
3. 开关开启时，C 端样板间数据展示结果需符合第 6.4 节联动状态组合表。
4. 开关关闭时，C 端样板间导航入口展示规则与历史版本保持一致。
5. 开关开启时，C 端样板间导航入口展示结果需与 B 端样板间导航入口联动有效勾选状态一致，不读取独立模式下保存的样板间导航入口配置。
6. 开关开启时，当前访问场景下至少有一个样板间被联动有效选中，C 端需展示样板间导航入口。
7. 开关开启时，当前访问场景下没有任何样板间被联动有效选中，C 端不展示样板间导航入口；用户直接访问样板间列表页 URL 时，系统需按无权限页面处理并跳转到 404。
8. 开关开启时，C 端样板间导航入口是否展示不受户型售罄、住户售罄影响，也不按接口过滤后是否仍有可展示样板间数据反向判断。
9. C 端样板间导航入口已展示，但当前访问场景下没有可展示样板间时，样板间列表页展示“没有可以访问的样板间”。
10. 项目为公开访问状态时，C 端无需邀请码即可访问；开关开启时，公开访问场景下样板间数据展示结果同样需符合第 6.4 节联动状态组合表，其中户型已分享取站点公开访问内容设定中的户型图勾选结果。
11. C 端接口需按当前访问场景返回可访问的样板间数据，不返回无权限样板间；页面仅展示接口返回的数据。

## 11. 待确认事项

暂无。当前文档中的待确认事项均已根据产品确认内容补充到对应规则中。
