﻿# 09-C端顾客访问权限接口

## 1. 文档定位

本文定义 C 端顾客访问 HOME VISTA 内容时，访问权限接口如何返回该顾客可访问内容。

本文是 C 端能力需求，不属于 `05C-顾客权限页.md`。`05C` 只定义 B 端管理页如何查看和编辑顾客标签、模板权限和个人权限追加；本文定义顾客实际访问内容页时，接口如何使用这些配置。

相关文档：

- `03-标签权限模板.md`：定义标签权限模板配置和模板生效规则。
- `bak-04-第三方字段映射与权限判定.md`：定义本期不开发三方映射页，以及 `customer_status` 如何补充 VISTA 顾客标签。
- `05C-顾客权限页.md`：定义 B 端顾客权限编辑页。
- `04-统一顾客联动同步流程.md`：定义同步、字段快照、`customer_status` 标签配置和权限变化边界。
- `08-KASIKA入口页与VISTA首次访问开户.md`：定义 C 端首次开户和初始权限判定入口。

## 2. 页面与接口目标

- C 端顾客访问 HOME VISTA 内容页时，接口按顾客当前权限返回可访问内容。
- 接口必须纳入顾客当前 VISTA 标签命中的权限模板并集。
- 接口必须继续支持顾客个人权限追加。
- 接口不得只读取顾客单独权限，也不得忽略标签模板并集。
- 标签、模板或个人权限追加变化后，下一次 C 端访问接口请求应按最新配置返回。

## 3. 计算输入

接口至少使用以下输入：

- 当前访问顾客的 VISTA 顾客 ID。
- 该顾客当前拥有的 VISTA 标签集合。
- 标签当前状态。
- 标签对应的权限模板。
- 顾客个人权限追加。

## 4. 计算规则

1. 读取顾客当前拥有的 VISTA 标签。
2. 过滤未配置权限模板的标签。
3. 取得剩余标签对应权限模板中的可访问内容集合。
4. 对多个标签模板命中的可访问内容做并集。
5. 在模板并集基础上叠加顾客个人权限追加内容。
6. 最终返回给 C 端的可访问内容 = 标签权限模板并集 + 个人权限追加。
7. 如果顾客没有任何标签权限模板命中，且没有个人权限追加，则最终可访问内容为空。
8. 户型图、样板间、资料、导航菜单等既有关联规则仍在最终权限集合之上继续生效；接口不得因某内容来自标签模板或个人追加而跳过既有关联校验。

## 5. 接口返回要求

1. C 端接口返回的户型、模型、资料、导航菜单等可访问内容，必须来自最终权限结果。
2. 同一内容由多个标签模板命中时只返回一次。
3. C 端接口不向顾客展示权限来源、标签名称、模板名称、`customer_status` 来源或 KASIKA customer_id。
4. C 端接口只返回顾客可访问内容结果；权限来源摘要和计算明细仅用于 B 端详情页、权限页或日志。
5. 权限变化不改变顾客访问 URL 或访问密码，只改变该 URL 背后的可访问内容。

## 6. 异常与兜底

1. 标签权限模板配置异常时，接口不得扩大权限。
2. 单个标签模板异常时，该标签模板不参与本次权限并集，并记录日志；其他标签模板仍可参与计算。
3. 所有标签模板均不可用且无个人权限追加时，不扩大权限，最终可访问内容为空。
4. C 端接口异常提示不得暴露内部标签、模板、`customer_status` 标签配置或 KASIKA 同步错误详情。
5. C 端接口错误不应在页面上展示具体顾客 ID、KASIKA customer_id 或内部权限规则名称。

## 7. 与 B 端配置的关系

1. B 端 `05C` 修改顾客标签或个人权限追加后，C 端接口按最新结果计算。
2. B 端 `03` 修改标签权限模板后，C 端接口按最新模板计算。
3. `04` 定义的 `customer_status` 同名标签配置、`04` 同步流程或 `08` KASIKA入口页流程补充顾客标签后，C 端接口按补充后的顾客标签计算。
4. 不需要管理员额外执行“历史应用”或“批量应用”任务。

## 8. 验收标准

1. 顾客拥有多个已配置权限模板的标签时，C 端接口返回多个标签权限模板的并集。
2. 顾客存在个人权限追加内容时，C 端接口在标签模板并集基础上追加该内容。
3. 顾客权限页不支持单独排除标签模板权限；模板命中的内容不得被顾客级排除项扣除。
4. 模板编辑保存后，下一次 C 端接口请求按最新模板返回。
5. `customer_status` 标签配置或同步流程补充标签后，下一次 C 端接口请求按最新顾客标签返回。
6. C 端接口不返回权限来源说明、标签来源说明或 KASIKA 内部信息给顾客页面。
7. 无标签权限模板命中且无个人权限追加时，最终可访问内容为空。

## 9. 用户用例

### 用例 1：多标签模板并集
- 前置：顾客拥有 `VIP` 和 `内見予定` 两个标签，两个标签分别配置了不同权限模板。
- 操作：顾客在 C 端访问 HOME VISTA 内容页。
- 预期：接口返回两个标签权限模板的可访问内容并集；重复内容只返回一次。

### 用例 2：个人权限追加叠加到标签并集
- 前置：顾客拥有一个标签权限模板，并被 B 端个人追加了一个内容。
- 操作：顾客在 C 端访问 HOME VISTA 内容页。
- 预期：接口返回标签模板内容和个人追加内容。

### 用例 3：标签模板权限不可被顾客级排除扣除
- 前置：顾客拥有一个标签权限模板，模板赋予内容 A。
- 操作：顾客在 C 端访问 HOME VISTA 内容页。
- 预期：接口返回内容 A；本期不按顾客级单独排除扣除标签模板内容。

### 用例 4：模板修改后实时生效
- 前置：管理员修改并保存某标签权限模板，该标签已被目标顾客持有。
- 操作：顾客再次访问 HOME VISTA 内容页。
- 预期：接口按最新模板返回可访问内容，不需要管理员另行批量应用。

### 用例 5：无标签权限模板时返回空权限
- 前置：顾客没有标签权限模板命中，也没有个人权限追加。
- 操作：顾客访问 HOME VISTA 内容页。
- 预期：接口返回空的可访问内容结果，不扩大权限。
