﻿# 05C-顾客权限页

## 1. 文档定位

本文定义顾客详情页 `権限` / `編集` tab 的基础信息编辑、标签编辑、内容权限选择、个人权限追加和最终权限保存规则。

顾客列表页、顾客详情概要和新增顾客分别见：

- `05A-顾客列表页.md`
- `05B-顾客详情页.md`
- `05D-新增顾客.md`

标签本体规则见 `02-顾客标签管理.md`，标签权限模板规则见 `03-标签权限模板.md`，`customer_status` 同名标签配置边界见 `bak-04-第三方字段映射与权限判定.md`。

本 tab 是顾客详情页内的编辑态，不是独立页面。不得从左侧导航或列表额外打开第二个“顾客权限编辑页”。KASIKA 联动模块只在 `概要` tab 展示，本 tab 不提供 KASIKA 绑定关系编辑、改绑、同步或重试操作。

## 2. 页面目标

- 尽量沿用现有顾客详情编辑 UI 和内容选择方式，减少对原有业务的侵入。
- 让管理员在同一 tab 完成“基础信息编辑 -> 顾客标签调整 -> 内容权限选择 -> 个人权限追加 -> 保存”。
- 明确顾客最终访问权限由标签权限模板驱动，支持少量单客例外调整。
- 保存最终权限时只更新 VISTA 侧标签和权限，不触发 KASIKA 顾客同步。
- KASIKA 绑定关系不在本页编辑；绑定顾客与非绑定顾客的 VISTA 标签和权限编辑能力一致。

## 3. 页面结构

页面保持当前顾客详情页风格，是顾客详情页的第二个 tab，不新增独立 KASIKA 区块。

### 3.1 基础信息编辑区

基础信息编辑区沿用当前 HOME VISTA 顾客编辑表单，只承担 VISTA 本地顾客资料编辑。

可编辑字段沿用既有页面，包括但不限于：

- 顾客名。
- フリガナ。
- メールアドレス。
- 电话番号。
- 流入経路。
- 共有メモ。

展示规则：

1. 仅编辑 VISTA 本地顾客信息。
2. 已绑定 KASIKA 的顾客，邮箱字段展示为只读禁用态，不允许编辑、清空或通过保存接口覆盖。
3. 未绑定 KASIKA 的 VISTA 顾客，邮箱按既有 HOME VISTA 规则编辑和校验。
4. 不展示或编辑 KASIKA `cid` / `customer_id`、KASIKA 邮箱、`customer_status`、绑定状态、最近同步结果或失败原因；这些内容只在 `概要` tab 的 KASIKA 联动模块展示。
5. 基础信息编辑不调用 KASIKA API。

### 3.2 标签编辑区

标签编辑是本页核心操作区。

展示内容：

- 当前顾客已持有标签。
- 可选 VISTA 标签列表。
- 标签搜索或筛选能力，沿用现有组件能力即可。

行为规则：

1. 用户通过标签 chip 选择模式选中或取消顾客标签。
2. 页面展示和编辑时不区分标签来源或标签类型；所有 VISTA 标签一视同仁。
3. `customer_status` 同名标签如已由系统补充到顾客标签关系中，本页只按普通 VISTA 标签展示，不显示自动来源。
4. 用户可以在本页移除 `customer_status` 同名标签；该操作只修改 VISTA 本地顾客标签，不回写 KASIKA，也不改变 KASIKA `customer_status`。
5. 如 `customer_status` 状态权限自动更新开关开启，后续 KASIKA 同步处理该顾客时，会按当前 `customer_status` 重新校准同名标签；同名标签仍存在时会补回该标签，同名标签不存在时不自动创建并记录跳过。
6. 修改标签后，页面需实时重算已配置权限模板标签命中的权限模板并集。
7. 标签变更未保存前，应作为页面草稿状态，不立即影响 C 端最终访问权限。

### 3.3 内容权限选择区

内容选择区沿用 VISTA 既有顾客权限设置页的内容选择模式和内容卡片样式，覆盖既有可访问内容对象，例如户型图、样板间、外景、资料集、导航菜单等。

展示规则：

1. 模板赋予的内容默认勾选，并标记为模板由来。
2. 模板未赋予但用户手动勾选的内容，保存为个人权限追加。
3. 模板已赋予的内容允许展示勾选状态和模板由来，但本期不支持在顾客权限页单独删除或取消该模板权限。
4. 用户尝试取消模板已赋予内容时，系统需保持该项勾选，并以 toast 提示操作人：该权限来自标签权限模板，不能在顾客权限页单独取消；如需取消，应调整顾客标签或对应标签权限模板。
5. 不展示单独的“当前权限合成结果 / 現在の権限合成結果”摘要面板。
6. 不在页面顶部额外展示标签、模板、模板由来数量、个人追加数量或最终可访问内容数量。
7. 内容选择区必须保留原有内容选择卡片的视觉样式，避免设计稿表达成“本期不需要内容权限选择”。
8. 内容选择区不要求在首屏完整展开全部既有内容，但正式实现应沿用现有权限内容树或分组选择能力。
9. 既有内容权限选择中的关联逻辑必须保留，例如户型图与样板间的父子联动、内容权限与导航菜单显示之间的联动；这些联动仍按既有 VISTA 权限选择规则执行，不因标签权限模板来源而取消。

#### 3.3.1 模板基线与个人追加

顾客权限编辑必须先以当前顾客标签命中的权限模板并集作为基线，再允许管理员增加个人权限；不得把模板权限复制成可自由增删的单客权限清单。

1. 凡由一个或多个当前标签模板命中的权限，均为受保护的有效权限；即使同一内容同时被多个模板命中，任一模板仍命中时，该内容都不得取消。
2. 模板命中的勾选可以标记为模板由来，但不得展示具体标签来源；也不得通过取消勾选、反选父级、批量取消或其他等价操作减少有效权限。
3. 若管理员需要减少某个模板带来的权限，只能在标签编辑区取消该顾客对应的标签，使该标签模板不再参与该顾客的权限计算；不能在顾客权限页删除、修改或停用标签模板本身。
4. 模板未命中的内容才允许由管理员单独勾选；该勾选保存为个人权限追加。个人权限追加可按既有内容选择规则取消。
5. 标签草稿发生变化时，页面须先重新计算模板基线，再判定哪些勾选可作为个人权限追加操作；保存前不得把已不再命中模板的历史状态误判为仍不可取消。

#### 3.3.2 文件与文件夹分享的升级限制

文件及文件夹分享同样遵循“模板基线只能增加、不能减少”的原则。

1. 当任一命中标签模板已赋予某个文件夹的分享权限时，该文件夹分享为模板基线。管理员不得在顾客权限页将其改为仅分享其中的文件，也不得通过取消文件夹、反选父级或批量操作缩小为文件分享。
2. 当标签模板仅赋予一个或多个文件的分享权限时，管理员可以额外勾选其所在文件夹的分享权限，将该顾客升级为文件夹分享；此操作属于个人权限追加，不修改标签模板原有的文件分享配置。
3. 升级为文件夹分享后，管理员可以取消这项个人追加的文件夹分享；但模板已命中的文件分享仍须保留，最终权限回退到标签模板的文件分享范围。
4. 因文件夹分享而显示为可访问的子文件，不得被理解为可以反向取消模板命中的文件；页面和保存逻辑均以最终有效权限及其来源判定是否允许取消。

### 3.4 保存区

保存前需展示本次变更摘要：

- 标签新增 / 移除数量。
- 个人权限追加变化。

保存规则：

1. 保存后更新该顾客的 VISTA 基础信息、标签关系和个人权限追加。
2. 保存不调用 KASIKA API。
3. 保存不回写 KASIKA 顾客字段、标签或访问字段。
4. 保存成功后，C 端访问权限接口按最新结果返回。

## 4. 权限计算规则

1. 客户可拥有多个 VISTA 标签。
2. 本期最终权限 = 标签权限模板并集 + 个人权限追加。
3. 标签权限模板并集只包含当前顾客持有标签中已配置权限模板的部分。
4. 个人权限追加用于补充个别顾客需要访问、但标签模板未覆盖的内容。
5. 本期不提供“单客排除 / 单独删除标签模板权限”能力；模板命中的内容只能通过在顾客权限页的标签编辑区移除对应顾客标签，或在标签权限模板管理中修改模板配置改变。不能通过内容勾选、父子联动、批量操作或文件夹/文件层级切换减少模板已赋予的权限。
6. 标签权限模板新增或编辑后，权限接口按最新模板配置实时计算结果，不需要管理员另行执行批量应用任务。
7. 顾客权限页保存的是顾客标签关系和个人追加项，不复制一份静态模板权限快照作为最终权限。
8. 户型图、样板间、导航等既有关联规则在最终权限集合之上继续生效：例如样板间依赖对应户型图时，即使样板间来自个人追加，也必须满足对应户型图可访问；导航菜单是否显示仍按既有内容与导航关联规则判断。

## 5. 陈旧例外项处理

当标签或模板变化导致历史个人追加项变得不再直观时，本期不做自动级联删除，避免误删管理员曾经设置的单客例外。

1. 历史个人追加项继续保留。
2. 如历史数据中已存在单独排除项，本期页面不提供继续新增或编辑排除项；研发可在迁移或兼容处理中忽略其对模板权限的扣减效果，或按后台数据治理方案另行清理，但前台不表达为可操作能力。
3. 当某个内容对象已被删除或不可用时，按既有内容权限页规则展示不可用或自动忽略，不在本页新增 KASIKA 特殊逻辑。

## 6. 联动异常边界

1. KASIKA 联动异常或 API KEY 不完整时，标签编辑和 `権限` tab 不置灰。
2. 顾客权限页是 VISTA 本地能力，不依赖 KASIKA API 实时可用。
3. 权限页保存不调用 KASIKA API。
4. 权限页保存不回写 KASIKA 顾客字段、标签或访问字段。
5. 如权限变化来自 `customer_status` 同名标签配置，同步日志按 `04-统一顾客联动同步流程.md`、`07-同步日志与追溯.md` 记录；权限页只展示最终 VISTA 标签和权限结果。
6. 本页不展示 KASIKA 关联模块，不提供 KASIKA 绑定关系编辑、改绑、同步或重试入口。

## 7. 验收标准

1. 顾客详情页仅保留 `概要` 与 `権限` / `編集` 两个 tab；`連動履歴`、`履歴` 不在详情页展示，相关信息进入同步日志或概要字段。
2. 从顾客详情页点击权限编辑入口可切换到 `権限` tab。
3. `権限` tab 不展示 KASIKA 关联模块、KASIKA 字段、绑定关系操作按钮、改绑按钮、同步按钮或重试按钮。
4. `権限` tab 展示基础信息编辑表单；KASIKA 绑定顾客邮箱只读。
5. `権限` tab 可查看和修改当前顾客标签。
6. `権限` tab 可修改顾客标签，内容选择状态按标签模板规则更新。
7. `権限` tab 可对模板未赋予的内容设置个人权限追加。
8. 页面不展示“現在の権限合成結果”摘要面板。
9. 保存后返回或刷新页面仍能看到该顾客基础信息、标签和内容权限变化。
10. 保存权限不触发 KASIKA 顾客同步。
11. KASIKA 联动异常或 API KEY 不完整时，基础信息、标签编辑和权限编辑仍可用。
12. 权限页不展示标签来源、自动标签 / 手动标签区分或 `customer_status` 配置来源；但通过 KASIKA 同步取得的结构化 `customer_status` 仍用于后续同步校准。
13. 尝试取消标签模板已赋予内容时，页面保持勾选并展示 toast 提示，不保存为单独排除。
14. 户型图与样板间、内容与导航之间的既有关联逻辑在顾客权限页继续生效。
15. 标签模板已赋予文件夹分享时，顾客权限页不得将其降级为文件分享；标签模板仅赋予文件分享时，允许管理员通过个人权限追加升级为文件夹分享。

## 8. 用户用例

### 用例 1：在顾客权限页增删标签
- 前置：销售或管理员进入顾客详情页 `権限` tab。
- 操作：勾选或取消 VISTA 标签。
- 预期：
  - 页面实时重算已配置权限模板标签命中的权限模板并集。
  - 系统提示该顾客访问权限将按标签权限模板重新计算。
  - 不区分标签来源或标签类型。
  - 不触发 KASIKA 顾客同步。

### 用例 2：查看标签带来的权限
- 前置：顾客已有一个或多个标签。
- 操作：用户进入 `権限` tab。
- 预期：
  - 页面展示当前顾客标签。
  - 页面不展示“現在の権限合成結果”摘要面板。
  - 未配置模板的标签不会新增权限。

### 用例 3：在権限 tab 修改标签
- 前置：管理员位于顾客详情页 `権限` tab。
- 操作：勾选或取消顾客标签并保存。
- 预期：
  - 页面保存顾客标签关系。
  - C 端访问权限按最新标签模板结果计算。
  - 保存不调用 KASIKA API。

### 用例 4：在権限 tab 单独调整内容
- 前置：管理员位于顾客详情页 `権限` tab。
- 操作：勾选一个模板未赋予的内容，或尝试取消一个模板已赋予的内容。
- 预期：
  - 前者作为个人权限追加保存。
  - 后者不允许取消，页面保持勾选并展示 toast 提示。
  - 最终权限按“标签权限模板并集 + 个人权限追加”计算。

### 用例 5：联动异常时编辑权限
- 前置：项目 API KEY 不完整或 KASIKA 连接异常。
- 操作：用户进入顾客 `権限` tab，修改标签或单独权限并保存。
- 预期：
  - 标签编辑和权限编辑仍可操作。
  - 保存只更新 VISTA 本地权限。
  - 不调用 KASIKA API，不回写 KASIKA 顾客字段。
  - 页面不出现 KASIKA 绑定关系操作、同步或重试入口。

### 用例 6：`customer_status` 补充标签后的权限展示
- 前置：KASIKA -> VISTA 同步、绑定或 KASIKA入口页流程读取并单独保存 `customer_status` 后，通过同名标签配置为顾客补充了 VISTA 标签。
- 操作：用户进入顾客 `権限` tab。
- 预期：
  - 页面展示顾客当前 VISTA 标签和对应权限模板。
  - 不展示该标签是否来自 `customer_status` 自动配置。
  - 不展示自动配置来源。
  - 最终权限按当前标签和模板实时计算。

### 用例 7：模板权限取消被阻止
- 前置：顾客持有的一个或多个标签权限模板赋予内容 A。
- 操作：用户在 `権限` tab 取消内容 A 的勾选、通过父级反选取消，或通过批量操作移除内容 A。
- 预期：
  - 内容 A 保持有效勾选；多个模板同时命中时，只要仍有任一命中标签保留，内容 A 就不得取消。
  - 页面 toast 提示该权限来自标签权限模板，不能在顾客权限页单独取消。
  - 保存后不产生单独排除或覆盖项；如需减少权限，只能在标签编辑区移除使内容 A 命中的标签。

### 用例 8：保留既有关联逻辑
- 前置：B 样板间依赖 B 户型图；某导航菜单依赖对应内容可访问。
- 操作：用户在 `権限` tab 调整标签或个人追加内容。
- 预期：
  - B 户型图未可访问时，B 样板间仍不可单独选中。
  - 对应内容不可访问时，关联导航仍不展示或不可选。
  - 这些联动不受权限来源是标签模板还是个人追加影响。

### 用例 9：模板文件夹分享不可降级
- 前置：顾客持有标签 A，标签 A 的权限模板已分享文件夹 F。
- 操作：管理员尝试取消文件夹 F，或仅保留其中的文件 f1。
- 预期：
  - 文件夹 F 的分享保持有效，页面提示该权限来自标签权限模板，不能在顾客权限页单独取消或降级。
  - 不产生仅分享文件 f1 的单客排除或覆盖记录。
  - 如需取消文件夹 F 的分享，只能在标签编辑区移除标签 A，或进入标签权限模板管理修改模板。

### 用例 10：模板文件分享可升级为文件夹分享
- 前置：顾客持有标签 B，标签 B 的权限模板仅分享文件 f1。
- 操作：管理员在顾客权限页额外勾选 f1 所在文件夹 F。
- 预期：
  - 文件夹 F 分享作为个人权限追加保存，顾客获得文件夹 F 的访问权限。
  - 标签 B 的模板配置不被修改，模板原有的文件 f1 分享仍保持受保护。
  - 后续取消个人追加的文件夹 F 分享时，顾客仍保有模板赋予的文件 f1 分享。

## 9. 修订记录

| 日期 | 修订内容 |
| --- | --- |
| 2026-07-13 | 明确顾客权限以当前标签模板命中的权限并集为不可减少的基线，仅允许追加个人权限；模板命中的内容不得通过取消勾选、父子联动、批量操作或文件夹/文件层级切换反向删除，并补强既有用户用例覆盖多模板命中和批量操作。补充文件与文件夹分享的单向规则：模板文件夹分享不得降级为文件分享，模板文件分享可通过个人权限追加升级为文件夹分享；取消升级后仍保留模板文件分享。 |
