﻿# VISTA Link 产品需求文档

| 项目 | 内容 |
|---|---|
| 产品名称 | VISTA Link |
| 文档类型 | 产品需求文档 |
| 所属产品体系 | HOMEVISTA 模块化数字展示产品体系 |
| 关联系统 | HOMEVISTA 统一账号、A 端运营管理端、VISTA ADMIN 装配系统、素材目录提供方、HOMEVISTA 展示端 |
| 主要用户 | 销售人员、销售经理、营销企划、项目管理员 |
| 文档范围 | 帮助销售人员使用当前项目素材创建、管理、现场讲解并分享页面，并查看客户访问与项目总体情况 |

---

## 文档状态

| 项目 | 内容 |
|---|---|
| 当前版本 | V0.250 |
| 最近更新 | 2026-09-01 |
| 完整修订记录 | [查看修订记录](./VISTA_Link_产品需求文档_修订记录.md) |
| 最近修订说明 | 页面不再保存草稿或等待发布；用户预览并确认保存后，固定链接立即使用最新保存内容；访问和讲解记录只保留实际行为信息，不保存旧页面副本 |

---

## 本次需求下发范围

本次 PRD 用于 B 端需求评审和技术设计。本版明确登录、项目选择、项目切换、个人信息、项目成员和权限规则，并把客户、配置和其他业务数据统一限定在当前项目内。功能优先级仍按 §4 和 §8 标注。

- §4.7 使用项目级成员、角色和权限；其他项目成员通过邮件邀请，系统设置不提供成员或角色导入入口。
- VISTA Link 是独立产品，使用 HOMEVISTA 统一账号和统一登录状态；登录方式、账号状态和登录安全规则由统一账号管理。
- 已有 HOMEVISTA 统一账号继续使用原账号和密码。旧 B 端账号是否纳入统一账号由现有统一账号规则处理，VISTA Link 不单独制定账号迁移规则。
- §4.8 使用统一登录页完成登录、忘记密码和重置密码；VISTA Link 保留个人信息和修改密码页面。
- §4.7 邀请成员时填写显示名称、邀请邮箱并选择一个或多个角色；项目管理员可以修改成员在当前项目中的显示名称和角色。
- §4.6 已补充数据追踪、客户追踪和营销统计需求，作为后续统计开发的产品依据；这些功能仍不属于 §8 定义的当前 B 端 MVP。
- §4.9 将项目总览作为选择项目后的统一首页，展示当前项目的客户、页面、链接和负责人总体数据；详细趋势、排行和逐级查看继续由 §4.6 营销统计提供。该功能不属于当前 B 端 MVP。
- §4.6.3 保留每次访问的 IP、User-Agent、浏览器、操作系统、设备类型和来源地址等基础信息；当前统计原型不展示这些详细字段。
- §4.6.4 已定义页面打开邮件通知；该功能为 P2-B，不属于当前 B 端 MVP。
- §4.3.8 已定义销售使用页面最新保存内容进行现场讲解的规则；现场讲解复用页面展示能力，但使用独立的讲解状态和讲解记录。该功能为 P1，不属于当前 B 端 MVP。
- §2.2、§7.1.1 和 §8.4 已定义销售从现场接待或远程咨询开始，经过讲解、页面发送、客户自主访问、再次推荐和手动更新客户状态，直到签约或未签约的常用工作流程与验收方式；不改变当前内部 MVP 范围。
- AI 内容制作、外部工具授权与读写范围不在本次下发范围内，后续单独评审和补充。
- AI 历史需求已移至 [VISTA Link AI 相关历史需求](./archive/VISTA_Link_AI相关历史需求.md)，不得作为本次开发依据。

---

## 术语约定

本 PRD 使用以下术语，优先用销售能理解的说法。

| 术语 | 说明 |
|---|---|
| 页面库 | VISTA Link 中浏览和管理分享页面的一级模块。页面库展示的都是可直接预览和分享的页面实例，包括默认页面和销售自己创建的页面 |
| 默认页面 | 由 A 端为当前项目提供、销售可以直接预览和分享的页面。A 端是系统内部来源，VISTA Link 界面统一显示为「默认」，不显示「A 端创建」 |
| 分享页面 | 页面模板的实例，包含已配置的 Widget 实例、素材及其排列顺序，可直接供购房客户查看，本文可简称为“页面”。页面只有一个对象，由 A 端提供或由销售创建不会形成不同页面类型。VISTA Link 不单独展示或管理模板对象；销售自行创建页面时使用 A 端提供的自由模板 |
| 分享链接 | 分享页面进入 B 端后对应的唯一固定链接。A 端本身没有固定链接概念；A 端创建的页面进入 B 端页面库时，由 B 端创建链接并默认启用。B 端创建的页面首次保存成功时自动创建链接并默认启用。一个分享页面只有一条分享链接，编辑并保存页面不改变固定链接。销售可直接复制不带客户标识参数的固定链接，也可先指定客户，再复制带客户标识参数的访问地址。带参数的访问地址不是新的分享链接 |
| 公开访问 | 固定链接的访问设置。设为公开后，未识别访客无需完成邮箱验证码即可查看页面；取消公开后，访客必须通过客户标识参数、客户访问会话或邮箱验证码完成身份识别。公开状态不改变固定链接地址 |
| 客户标识参数 | 销售指定客户后，由系统添加到固定链接中的随机参数。参数由系统映射到客户，不直接包含客户编号、邮箱、手机号等信息。有效参数用于识别本次访问对应的客户，不产生新的分享链接 |
| 客户身份认证 | 无有效客户标识参数且浏览器尚未识别客户时，购房客户通过邮箱验证码确认身份。认证成功后，系统匹配或创建客户并展示分享页面 |
| 客户访问会话 | 客户身份认证或有效客户标识参数识别成功后，系统在当前浏览器中保存的客户身份凭证。该凭证不出现在访问地址中，也不是客户标识参数。同一浏览器再次访问当前项目下的其他分享链接时，可直接使用已识别身份；会话失效、客户删除或客户主动切换身份后需要重新认证 |
| 访问行为记录 | 已识别客户成功打开分享页面后，系统按实际发生情况保存页面访问、内容浏览、浏览操作和明确动作。记录关联当时实际打开的 Widget、素材或操作对象，并保存必要的名称、标识、参数和时间；不保存可重新展示的旧页面副本 |
| 访问数据状态 | 说明一次访问及其内部记录是否能够确认到客户、固定链接、本次访问和实际操作对象。状态包括正常、部分缺失、待检查、异常和已排除；用于决定哪些数据可以进入客户追踪、营销统计和 AI 建议 |
| 客户访问端 | HOMEVISTA 面向购房客户的展示端。购房客户在该端打开分享链接、完成身份认证并查看分享页面，不登录 VISTA Link |
| 客户 | 买房的人，即销售人员跟进的对象。等同于 MRD 中的"购房客户" |
| 房地产公司 | 购买 HOMEVISTA 服务的公司 |
| 租户 | 使用 VISTA Link 的房地产公司。一个租户可以包含多个项目；VISTA Link 的日常业务数据按项目隔离 |
| HOMEVISTA 统一账号 | HOMEVISTA 多个产品共同使用的用户账号。统一账号管理登录方式、账号资料、密码、账号状态和登录安全规则 |
| 登录用户 | 使用 HOMEVISTA 统一账号进入 VISTA Link 的人 |
| 可访问项目 | 登录用户在 VISTA Link 中已启用项目成员关系的项目集合 |
| 当前项目 | 用户在项目选择页选择，或通过有权访问的具体业务页面地址进入后正在使用的住宅项目。VISTA Link 一次只使用一个当前项目 |
| 项目成员 | 登录用户在一个项目中的成员关系。同一用户可以属于多个项目，并在不同项目拥有不同角色和状态 |
| 成员显示名称 | 项目成员在当前项目中的显示名称。邀请成员时由项目管理员填写，之后可以在成员详情中修改；只影响当前项目，不修改用户的账号姓名或其他项目中的显示名称 |
| 项目成员状态 | 项目成员在当前项目中的状态，包括待接受、启用和停用。待接受成员尚未完成邀请，不能进入项目；停用某个项目成员不影响其登录账号和其他项目 |
| 项目管理员 | 管理当前项目成员、角色、权限和基础配置的默认角色；可以查看当前项目内全部分享页面，并管理当前项目内全部固定链接的启停状态 |
| 旧 B 端账号兼容 | 旧 B 端账号是否纳入 HOMEVISTA 统一账号，由统一账号现有规则处理；VISTA Link 不单独制定账号迁移规则 |
| 素材 | 当前项目内可以被 Widget 使用的内容单位。素材可以包含文件地址和结构化业务信息，也可以只保存对原业务数据的引用，不要求复制全部原始数据 |
| 素材分类 | 说明素材属于哪一类项目内容。B 端使用 [A 端 Widget 管理 PRD §5.5](https://vista-new-c.homevista.work/docs/a/01-A%E7%AB%AFWidget%E7%AE%A1%E7%90%86PRD.md#55-%E6%95%B0%E6%8D%AE%E6%9D%A5%E6%BA%90%E5%88%86%E7%B1%BB) 定义的数据来源分类及产品标识，不另行维护一套素材分类；素材列表和 Widget 候选素材列表均可按该分类筛选 |
| 素材预览 | B 端用户在素材详情中核对素材内容的内部查看能力。素材预览不是分享链接，不提供可对外复制或发送的固定地址；购房客户只能通过分享页面的固定链接查看素材 |
| 页面预览 | B 端用户在保存前核对当前未保存修改和不同设备尺寸的内部查看能力。普通页面预览不表示销售正在接待客户，不产生现场讲解记录或客户访问记录 |
| 现场讲解 | 销售在 VISTA Link 中明确进入讲解模式，使用分享页面最新保存内容向身边客户展示。现场讲解不是普通页面预览，也不是客户通过分享链接进行的自主访问 |
| 现场讲解记录 | 销售开始现场讲解后形成的使用记录，保存讲解人、客户关联、开始与结束情况，以及实际打开的内容、展示次数和展示时长。现场讲解记录不保存旧页面副本，也不计入客户自主访问统计 |
| 使用地址打开的素材 | WALK、VR、BUILDING VISTA 3D Lite、BUILDING VISTA 3D、CITY VISTA 等通过来源系统地址打开的素材。地址只是素材的打开信息，不是素材分类。来场预约等 Widget 提供的操作入口不作为素材 |
| 部件（Widget） | 面向购房客户的独立业务能力，围绕一个明确的客户任务形成完整体验，并可被分享页面使用。Widget 定义、内容对象、配置规则和 C 端体验以 [C 端 Widget 需求目录](https://vista-new-c.homevista.work/docs/c/02-Widget%E4%BD%93%E7%B3%BB/Widget%E9%9C%80%E6%B1%82/) 中对应的单项 Widget PRD 为准。A 端提供当前可选列表和启停状态；B 端只添加 Widget 并管理页面中的 Widget 实例，不展示、创建或修改 Widget 定义 |
| 明确动作 | 由页面公共组件或 Widget 定义并提供、具有明确业务含义的客户操作，例如来场预约提交。图片切换、内容展开、播放暂停和 Widget 切换等浏览操作不属于明确动作。系统记录客户触发了已定义操作，不表示预约已经完成；当前 C 端没有资料下载操作，VISTA Link 不要求上报或统计下载；未被 C 端定义的联系等操作不进入当前统计 |
| 浏览操作 | 由 Widget 按自身需求定义并上报、用于还原浏览过程的普通交互，例如选择列表条目、切换命名视角或查看地图地点。浏览操作不属于明确动作，也不表示客户完成了业务操作 |
| 项目主题 | 当前项目中页面统一使用的显示主题。每个项目同时只有一套正在使用的主题；没有自定义主题时使用 VISTA 默认主题。主题由 A 端设置，B 端不提供主题设置或页面单独选择主题的功能 |

企业、租户、项目和首个项目管理员的项目成员关系由 A 端运营管理端开通。其他项目成员由项目管理员通过邮件邀请。用户通过 HOMEVISTA 统一登录页完成登录；VISTA Link 管理项目成员关系、项目角色和功能权限。项目素材由 VISTA ADMIN 制作并上线，再由素材目录提供方整理成 B 端可使用的素材记录。

---

## 1. 产品概述

### 1.1 产品背景

HOMEVISTA 已在日本房地产销售市场完成商业测试，累计服务 34 家房地产公司、147 个住宅项目。但随着已交付项目增多，一个新的问题浮现出来：**房地产公司有了展示内容，却不知道这些内容是否真正帮助了销售。**

当前的核心困境是：

```text
已有展示内容和项目素材太分散
→ 销售人员难以快速组合成适合具体客户使用的材料
→ 材料发出去以后，房地产公司不知道谁看了、看了什么、看了多久
→ 销售跟进缺少依据
→ 销售和销售经理看不清内容是否有用、客户是否有意向
```

普通网站统计只能告诉房地产公司「有多少访问」。但房地产销售需要回答更具体的问题——客户看了哪些样板间？是否比较了户型？有没有提交来场预约？哪些分享页面产生了客户访问？

VISTA Link 正是为解决这些问题而设计。它使用已经注册的 Widget 和已经上线的素材，不负责制作 Widget 类型、页面模板或原始素材。VISTA Link 允许销售直接分享 A 端创建的页面，也允许销售使用 A 端提供的自由模板新建页面，或复制 A 端创建的页面后修改。

### 1.2 产品定位

> **VISTA Link 是为房地产销售人员服务的营销跟进平台。它让销售快速选择已有页面，或用现有 Widget 和素材创建页面并分享给客户。**

VISTA Link 不负责制作原始素材、Widget 或页面模板。Widget 的业务定义和使用规则来自 C 端对应的单项 Widget PRD；A 端提供自由模板、当前可选的 Widget 和启停状态；B 端使用自由模板新建页面，但不展示或管理模板对象。

几条核心判断：

1. **这个产品首先为销售人员服务。** 销售是每天用它的人——发材料、看反馈、决定下一步。销售经理查看的团队数据来自销售人员的使用。
2. **不是通用统计工具。** 普通的访问统计回答不了"这个客户对哪个户型更感兴趣""该不该现在打电话跟进"。VISTA Link 需要回答这些销售真正关心的问题。
3. **商业目标是帮 HOMEVISTA 从项目交付延伸到长期服务收入。**

### 1.3 产品目标

销售人员用 VISTA Link 解决三个问题：

| 问题 | VISTA Link 的回答 |
|---|---|
| 发什么？ | 直接选择 A 端创建的页面；也可以使用自由模板新建页面，或复制 A 端创建的页面后修改 |
| 购房客户看了没有？ | 后续通过购房客户追踪查看访问次数、浏览页面、浏览内容、访问时长和访问记录 |
| 下一步怎么做？ | 后续根据客户的客观访问行为判断；当前 B 端 MVP 先完成可分享页面的创建和管理 |

### 1.4 产品范围

VISTA Link 包含以下内容：

- 浏览 A 端创建和自己创建的页面，取得分享链接；需要时使用自由模板新建页面，或复制 A 端创建的页面后编辑
- 销售可以使用页面最新保存内容进行现场讲解；可以关联已有客户，也可以先作为未关联客户的临时讲解，后续再关联客户
- 在当前项目内浏览素材，并在 Widget 自身定义的候选范围内按数量规则选择素材
- 项目成员从 VISTA Link 独立地址进入，通过 HOMEVISTA 统一账号登录，在进入业务界面前选择项目，并在进入后切换有权访问的项目；已登录用户打开有权访问的具体业务页面地址时直接进入对应页面
- 系统提供访问地址复制和二维码展示，不负责发送分享链接或销售消息
- 维护购房客户基础资料和标签

### 1.5 产品结构

VISTA Link 是 HOMEVISTA 产品体系中的独立 B 端营销跟进产品。它使用 HOMEVISTA 统一账号确认用户身份，接收 A 端的企业、项目、主题、可选 Widget 和 A 端创建页面，并读取素材目录提供方整理的已上线素材，通过 C 端向购房客户展示分享页面。

#### 1.5.1 VISTA Link 系统边界图

```mermaid
flowchart LR
    MEMBER["项目成员<br/>4 个默认角色"]
    BUYER["购房客户"]
    ACCOUNT_AUTH["HOMEVISTA 统一账号<br/>登录、账号资料与密码"]
    AUTH["客户认证服务<br/>邮件验证码"]
    ACCOUNTMAIL["账户邮件服务<br/>页面打开通知"]
    MATERIAL_CATALOG["素材目录提供方<br/>装配后台或独立处理程序"]

    subgraph HOMEVISTA["HOMEVISTA 产品体系"]
        direction LR
        AEND["A 端<br/>运营管理"]
        ADMIN["VISTA ADMIN<br/>项目素材制作与上线"]
        subgraph LINKBOX["VISTA Link"]
            LINK["B 端营销跟进平台"]
        end
        CEND["C 端<br/>HOMEVISTA 展示"]
    end

    AEND -->|"企业、项目、首个项目管理员关系<br/>项目主题、可选 Widget 和 A 端创建页面"| LINK
    ACCOUNT_AUTH -->|"登录状态和用户身份"| LINK
    LINK -->|"账号资料和密码修改"| ACCOUNT_AUTH

    ADMIN -->|"原始内容及结构化业务数据"| MATERIAL_CATALOG
    MATERIAL_CATALOG -->|"当前项目素材目录"| LINK
    ADMIN -->|"已装配并上线的展示内容"| CEND

    MEMBER -->|"登录、选择项目和页面操作"| LINK
    LINK -->|"操作结果"| MEMBER

    LINK -->|"页面首次打开邮件请求"| ACCOUNTMAIL
    ACCOUNTMAIL -->|"邮件发送结果"| LINK
    ACCOUNTMAIL -->|"页面打开通知邮件"| MEMBER

    LINK -->|"链接状态、识别结果、最新分享页面"| CEND
    CEND -->|"访问请求和身份凭证"| LINK

    LINK -->|"验证码发送和校验请求"| AUTH
    AUTH -->|"认证结果、稳定用户标识"| LINK

    BUYER -->|"打开链接、身份识别、浏览"| CEND
    CEND -->|"展示最新保存内容"| BUYER
```

项目成员包括销售人员、销售经理、营销企划和项目管理员。用户从 VISTA Link 独立地址进入，通过 HOMEVISTA 统一账号完成登录，项目成员关系和权限由 VISTA Link 判断。旧 B 端账号是否纳入统一账号，由现有统一账号规则处理。

#### 1.5.2 本次下发模块关系图

```mermaid
flowchart LR
    PERM["系统设置"]
    CUST["购房客户管理"]
    MAT["素材管理"]
    SHARE["页面库"]
    CEND["客户访问端"]

    PERM -.->|"功能权限、数据权限和当前项目"| CUST
    PERM -.->|"功能权限、数据权限和当前项目"| MAT
    PERM -.->|"功能权限、数据权限和当前项目"| SHARE
    CUST -->|"客户信息、客户标识参数和链接关联关系"| SHARE
    MAT -->|"素材和类型约束"| SHARE
    SHARE -->|"固定链接和最新保存内容"| CEND
```

实线表示数据关系，虚线表示权限或功能调用关系。箭头不表示操作先后，实际使用顺序见 §1.7。

### 1.6 数据归属与当前项目

- 用户登录后，系统只展示该用户处于启用状态的可访问项目
- 用户从独立地址或邀请链接进入时，先选择一个项目再进入 VISTA Link 业务界面；已登录用户打开有权访问的具体业务页面地址时，系统直接将对应项目设为当前项目
- 用户进入业务界面后可以切换到其他可访问项目
- 一个用户在不同项目中的角色、功能权限和项目访问状态分别保存
- 系统保存用户当前选择的项目；业务请求必须使用当前项目限定数据
- 项目切换后，系统重新读取目标项目的角色和功能权限，并停止展示原项目数据
- 业务模块内部不再重复提供项目筛选；素材、页面、客户、统计和系统设置均使用全局当前项目
- 企业、租户、项目和首个项目管理员关系来自 A 端运营管理端的开通结果
- 其他项目成员通过邮件邀请；旧 B 端账号是否纳入统一账号，由现有统一账号规则处理
- 当前项目素材来自现有系统、A 端或其他正式发布来源，已上线素材进入 VISTA Link
- 客户、客户状态、客户标签、素材标签、素材、页面、固定链接、访问记录、统计和操作日志都归属于项目；页面记录创建来源为 A 端创建或 B 端创建
- A 端创建的页面可由具备对应功能权限的项目成员查看和分享，销售不能直接编辑或删除
- B 端创建的页面默认只向创建人和项目管理员展示；创建人可编辑、分享和删除，不提供「私有 / 公司共享」切换设置
- Widget 定义以 C 端对应的单项 Widget PRD 为准；A 端提供当前可选的 Widget 和启停状态；B 端只管理页面和页面中的 Widget 实例
- HOMEVISTA 客户访问端按页面中已经保存的 Widget 实例展示；Widget 后续停用不影响已经保存的页面继续显示
- 分享链接归属于对应分享页面，一个分享页面只有一条固定链接；销售指定客户时，系统通过客户标识参数建立客户与固定链接的关系；销售直接复制无参数固定链接时，客户在访问中完成身份认证后建立关系。一条固定链接可以关联多个客户
- 项目成员在当前项目被停用后，其在该项目创建的分享页面和固定链接继续保留
- B 端不提供跨项目复制页面；新建、复制、选材和预览只使用当前项目

### 1.7 总体流程

总体流程以销售创建或选择一个可用页面并分享给客户为主线，分为创建或选择、取得链接、客户打开页面三段。A 端创建的页面可直接分享；销售也可以使用自由模板新建页面，或复制 A 端创建的页面后编辑。

```mermaid
flowchart TB
    INPUT["A 端创建的页面和可用素材持续准备"]
    CREATE["销售直接选择 A 端创建的页面<br/>使用自由模板新建或复制后编辑"]
    LINK["A 端页面进入 B 端时创建固定链接<br/>B 端页面首次保存时创建"]
    SHARE["销售直接复制固定链接<br/>或指定客户后复制访问地址"]
    OPEN["购房客户在 HOMEVISTA 客户访问端<br/>打开链接"]
    ACCESS["客户访问端通过客户标识参数识别客户<br/>或要求客户完成身份认证"]
    SHOW["客户访问端展示最新页面"]

    INPUT -. 提供可用页面和素材 .-> CREATE
    CREATE --> LINK --> SHARE --> OPEN --> ACCESS --> SHOW
```

**流程规则：**
- A 端本身没有固定链接；A 端创建的页面进入 B 端页面库时，由 B 端创建唯一固定链接并默认启用；B 端创建的页面首次保存成功时自动创建唯一固定链接并默认启用
- 用户预览并确认保存后，固定链接立即展示最新保存内容；编辑已有页面不会改变链接地址和二维码
- 销售直接复制时，系统复制不带客户标识参数的固定链接；销售也可以先指定客户，再复制带客户标识参数的访问地址
- 复制前不选择发送渠道。VISTA Link 不记录逐次复制或二维码展示，真实发送由销售在外部工具中完成
- 带有效客户标识参数的地址用于直接识别客户；无有效参数时，公开链接直接展示内容，非公开链接先检查客户访问会话，仍未识别时要求客户通过邮箱验证码完成身份认证
- 二维码只是无参数固定链接的另一种形式，访问规则与该固定链接完全相同；公开链接扫码后无需认证，非公开链接在无法识别客户时需要完成身份认证
- 一条固定链接可以通过不同客户标识参数或客户身份认证结果关联多个客户

现场讲解使用同一个分享页面，但不经过固定链接和客户访问认证：

```mermaid
flowchart LR
    PAGE["销售选择一个已保存页面"]
    MODE["选择已有客户<br/>或选择临时讲解"]
    START["进入现场讲解模式"]
    DISPLAY["展示最新保存内容<br/>记录实际打开内容和时长"]
    END["销售结束讲解<br/>或处理未正常结束记录"]
    TRACK["关联客户后<br/>显示在客户追踪时间线"]

    PAGE --> MODE --> START --> DISPLAY --> END --> TRACK
```

现场讲解不创建新的分享链接，也不受固定链接公开或停用状态影响。销售结束讲解后如需让客户自行查看，再单独复制该页面的对外分享地址。

---

## 2. 用户角色

### 2.1 默认角色

| 角色 | 使用目标 |
|---|---|
| 销售人员 | 发材料给购房客户、看客户反馈、决定下一步怎么跟 |
| 销售经理 | 查看客户资料，并可分配或转移客户负责人 |
| 营销企划 | 维护素材标签和素材说明 |
| 项目管理员 | 管理当前项目的成员、角色、权限、标签库和客户状态列表；查看当前项目内全部分享页面并管理当前项目内全部固定链接的启停状态 |
| 购房客户 | 通过分享链接查看分享页面，不是 VISTA Link 登录用户 |

**角色规则：**
- 销售人员、销售经理、营销企划和项目管理员是系统默认角色
- 销售经理为可配置角色，默认权限可按项目需要调整
- 每个项目可以基于功能权限点创建自己的自定义角色
- 项目成员必须在当前项目绑定一个或多个角色；多个角色的功能权限合并计算
- 同一登录用户在不同项目中的角色和功能权限互不影响
- 角色用于分配功能权限；成员可访问的数据范围限定为当前项目，并继续受各业务对象规则限制
- 项目管理员只对当前项目生效
- A 端负责企业、租户、项目和首个项目管理员关系的开通
- 具备相应功能权限的项目成员可以邀请项目成员，并设置其项目角色
- VISTA ADMIN 负责项目素材的制作与上线
- 用户只能使用自己可访问范围内的数据和功能
- 购房客户不登录 VISTA Link，只在 HOMEVISTA 展示端访问分享页面

### 2.2 销售人员工作流

销售人员是 VISTA Link 的核心日常用户。VISTA Link 支持销售从现场接待开始，反复进行页面讲解、页面发送、客户访问查看和再次推荐，直到客户签约或不再购买。它不代替预约、通讯、购买申请、贷款和合同系统。

#### 2.2.1 常用销售场景

| 场景 | 销售的实际工作 | VISTA Link 的作用 |
|---|---|---|
| 接待前准备 | 了解客户需求，准备当天要讲的项目和户型内容 | 查找客户，查看资料、标签、状态和历史记录；选择已有页面，或制作、预览并保存新页面 |
| 已有客户现场接待 | 面对预约或已经建档的客户介绍项目、户型、样板间、眺望等内容 | 从客户详情选择已保存页面并开始现场讲解；结束后把讲解记录放入客户追踪 |
| 临时客户现场接待 | 面对没有预约、尚未建档或暂时不知道身份的客户进行简短讲解 | 从页面详情开始临时讲解；结束后可以创建或选择客户并关联讲解记录 |
| 远程咨询与首次发送 | 客户通过电话、LINE、邮件或资料请求了解项目，尚未到访 | 查找或创建客户，选择或制作页面，指定客户后复制访问地址；不要求先产生现场讲解 |
| 到访后发送资料 | 根据现场反馈重新整理客户真正需要的内容，通过 LINE 或邮件发送 | 选择或制作新的页面，预览并确认保存后指定客户并复制访问地址；实际发送在外部工具中完成 |
| 根据访问继续推荐 | 查看客户回家后是否打开、反复查看了哪些内容，再决定下一次沟通和推荐 | 在客户追踪中区分现场讲解和客户自主访问；查看页面、内容、次数和有效时长，判断客户可能关注的内容 |
| 购买申请与签约 | 客户确认候选房源后进行购买申请、资金确认、贷款预审、重要事项说明和合同签署 | 销售只手动更新客户状态；购买申请、贷款、合同和付款仍在外部业务系统中处理 |

#### 2.2.2 销售主流程

```mermaid
flowchart TD
    ENTRY{"客户接触方式"}
    ARRIVE["客户来到售楼处<br/>预约客户或临时到访"]
    REMOTE["远程咨询或资料请求<br/>查找或创建客户"]
    KNOWN{"是否已有客户资料"}
    CUSTOMER["打开客户详情<br/>查看资料、标签、状态和历史"]
    TEMP["从页面详情<br/>选择临时讲解"]
    PAGE["选择一个已保存页面"]
    PRESENT["使用平板进行现场讲解"]
    FEEDBACK["销售确认客户反馈<br/>关注内容和疑问"]
    FINISH_PRESENT["结束现场讲解"]
    LINKED{"是否已经关联客户"}
    BIND["创建或选择客户<br/>关联讲解记录"]
    TRACK["讲解记录进入客户追踪"]
    UPDATE["销售更新备注、标签和客户状态"]
    NEWPAGE["根据反馈选择或制作新页面<br/>预览并确认保存"]
    COPY["指定客户并复制访问地址"]
    SEND["通过 LINE 或邮件发送<br/>在 VISTA Link 外完成"]
    OPEN["客户自主打开页面"]
    DATA["记录页面、内容、次数和有效时长"]
    REVIEW["销售查看客户追踪<br/>判断客户可能关注的内容"]
    CONTACT["通过电话、LINE 或邮件联系客户<br/>在 VISTA Link 外完成"]
    NEXT{"客户下一步情况"}
    APPLY["按项目状态设置<br/>手动标记购买申请阶段"]
    EXTERNAL["购买申请、资金确认和贷款预审<br/>在外部业务系统完成"]
    CONTRACT{"是否完成签约"}
    SIGNED["把客户状态改为<br/>签约"]
    LOST["把客户状态改为<br/>未签约"]

    ENTRY -->|来到现场| ARRIVE --> KNOWN
    ENTRY -->|尚未到访| REMOTE --> NEWPAGE
    KNOWN -->|已有客户| CUSTOMER --> PAGE --> PRESENT
    KNOWN -->|临时客户| TEMP --> PRESENT
    PRESENT --> FEEDBACK --> FINISH_PRESENT --> LINKED
    LINKED -->|已关联| TRACK
    LINKED -->|未关联| BIND --> TRACK
    TRACK --> UPDATE --> NEWPAGE --> COPY --> SEND --> OPEN --> DATA --> REVIEW --> CONTACT --> NEXT
    NEXT -->|继续比较| NEWPAGE
    NEXT -->|再次到访| CUSTOMER
    NEXT -->|准备购买| APPLY --> EXTERNAL --> CONTRACT
    NEXT -->|不再购买| LOST
    CONTRACT -->|暂未签约| NEWPAGE
    CONTRACT -->|完成签约| SIGNED
```

#### 2.2.3 流程规则与产品边界

- 现场讲解和客户自主访问分开记录；销售讲解不增加客户访问次数
- 销售可以根据现场反馈或客户访问数据选择、复制、编辑、预览并保存新的页面，再向同一客户提供新的访问地址
- 访问次数、反复查看和有效时长只能帮助销售判断客户可能关注的内容，不能直接证明客户喜欢某个房源、准备购买或已经预约
- 客户状态由销售根据实际沟通和外部业务结果手动修改，不能由讲解记录或访问数据自动改变
- 「再次到访」「发送新页面」「客户打开页面」都是发生过的事情，不作为客户状态
- VISTA Link 不管理预约、到场人数、电话、LINE、邮件、购买申请表、贷款、重要事项说明、合同、付款或交房
- 销售在外部完成购买申请和合同后，只在 VISTA Link 中把客户状态更新为对应销售进度

### 2.3 角色与操作路径

不同角色面对相同的功能模块，但日常操作的起点和界面复杂度不同：

| 角色 | 日常入口 | 核心路径 |
|------|---------|---------|
| 销售人员 | 项目总览、客户管理、页面库、营销跟进 | 查看客户资料和历史 → 选择或制作页面 → 现场讲解或复制访问地址 → 查看客户自主访问 → 再次推荐页面 → 手动更新客户状态 |
| 销售经理 | 项目总览 | 查看项目总体情况 → 查看负责人分布 → 按权限进入客户追踪或营销统计 |
| 营销企划 | 项目总览、素材管理 | 查看当前项目总体情况 → 浏览素材 → 维护素材说明和标签 |
| 项目管理员 | 项目总览、成员管理、权限配置 | 查看当前项目总体情况 → 管理成员和角色 → 维护标签库和状态列表 |
| 全能销售 | 以上全部 | 角色叠加后可以完成上述全部操作 |

- 销售人员在编辑自己创建的页面时查看和选择当前项目素材
- 通过功能权限控制各角色可见的模块入口

---

## 3. 核心功能

### 3.1 功能结构树

```mermaid
flowchart LR
    access["登录与账号访问"]
    access --> login["统一登录与找回密码"]
    access --> projectSelect["选择项目"]
    access --> projectSwitch["切换项目"]
    access --> profile["个人信息"]
    access --> changePassword["修改密码"]
    access --> logout["退出与登录状态过期"]

    vista["VISTA Link"]
    access --> vista

    vista --> overview["项目总览"]
    overview --> customerOverview["客户总体情况"]
    overview --> pageOverview["页面与链接总体情况"]
    overview --> teamOverview["团队负责情况"]

    vista --> customer["客户管理"]
    customer --> customerInfo["客户资料"]
    customer --> customerStatus["客户状态"]
    customer --> customerTags["客户标签"]
    customer --> customerImport["导入与导出"]

    vista --> material["素材管理"]
    material --> materialList["素材列表与详情"]
    material --> materialTags["素材标签"]
    material --> materialSearch["素材检索"]

    vista --> sharing["页面库"]
    sharing --> sharingInfo["创建与管理"]
    sharing --> fixedLink["固定链接"]
    sharing --> shareAction["直接复制与指定客户"]
    sharing --> customerBinding["客户标识参数"]
    sharing --> presentation["现场讲解"]

    vista --> follow["营销跟进"]
    follow --> customerTracking["购房客户追踪"]
    follow --> marketingStats["营销统计"]
    follow --> myPresentations["讲解记录<br/>次级页面"]
    customerTracking --> presentationRecord["现场讲解记录"]

    customerAccess["客户访问端<br/>HOMEVISTA 展示"]
    customerAccess --> visitorAccess["分享页面访问与身份认证"]
    sharing -.->|"固定链接和分享页面"| customerAccess

    vista --> settings["系统设置"]
    settings --> members["项目成员"]
    members --> memberList["项目成员列表"]
    members --> memberAdd["邮件邀请成员"]
    members --> memberRoles["设置角色"]
    members --> memberStatus["停用或启用项目访问"]

    settings --> roles["角色"]
    roles --> roleList["角色列表"]
    roles --> defaultRoles["默认角色"]
    roles --> customRoles["自定义角色"]
    roles --> functionPermissions["功能权限"]
    settings --> settingsLogs["操作日志"]
```

### 3.2 功能清单

VISTA Link 包含以下功能。用户从独立地址或邀请链接进入时，登录和首次项目选择发生在进入业务界面前；已登录用户打开有权访问的具体业务页面地址时直接进入对应页面。项目切换是进入后的全局操作，不作为左侧业务模块。

| 模块 | 子功能 | 说明 |
|---|---|---|
| **登录与账号访问** | 统一登录与找回密码 | 用户从 VISTA Link 独立地址进入；统一账号登录状态失效时进入 HOMEVISTA 统一登录页，忘记密码和重置密码也在该页面完成 |
| | 项目选择与切换 | 登录后用项目卡片选择可访问项目；进入业务界面后从左侧栏顶部切换项目 |
| | 个人信息 | 查看和修改统一账号姓名，查看只读的统一账号绑定邮箱 |
| | 修改密码 | 从账号菜单独立进入，修改 HOMEVISTA 统一账号密码 |
| | 退出 | 结束当前浏览器中的 HOMEVISTA 统一账号登录状态并返回统一登录页 |
| **项目总览** | 项目首页 | 查看当前项目的客户、页面、链接和负责人总体情况，并按权限进入客户追踪或营销统计 |
| **客户管理** | 基础信息维护 | 创建、搜索、编辑、删除购房客户基本信息 |
| | 标签标注 | 给购房客户打标签（高净值、改善型、有子女等），独立操作，非匹配副产品 |
| **素材管理** | 素材浏览与维护 | 在当前项目内浏览和搜索素材，并按 [A 端 Widget 管理 PRD §5.5](https://vista-new-c.homevista.work/docs/a/01-A%E7%AB%AFWidget%E7%AE%A1%E7%90%86PRD.md#55-%E6%95%B0%E6%8D%AE%E6%9D%A5%E6%BA%90%E5%88%86%E7%B1%BB) 定义的素材分类筛选；营销企划维护素材说明和标签 |
| **页面库** | 页面选择 | 浏览 A 端创建和自己创建的页面，预览后直接分享 |
| | 创建与编辑 | 使用自由模板新建页面，或输入新页面名称后复制 A 端创建的页面；添加、删除和排序 Widget，并按 Widget 使用规则调整内容和展示形式 |
| | 素材选择 | Widget 先按自身声明的数据来源分类和使用规则决定当前项目内的候选素材；用户可继续按名称搜索，或按分类和标签筛选，这些条件不会增加候选素材 |
| | 页面预览 | 使用与 C 端相同的 Widget 规则预览未保存内容，并切换 PC、平板和手机查看尺寸 |
| | 现场讲解 | 使用页面最新保存内容进行现场讲解；可以关联已有客户，也可以开始临时讲解；记录实际打开的内容、次数和时长 |
| | 固定链接 | 在页面详情中复制无参数链接、指定客户后复制带参数地址、展示二维码、设置公开访问、管理链接状态和查看关联客户 |
| **营销跟进** | 购房客户追踪 | 从单个客户角度分开查看客户自主访问、现场讲解、内容浏览和客户操作记录 |
| | 讲解记录 | 营销跟进内的次级页面，不作为左侧一级菜单；销售查看自己进行的现场讲解，处理未关联客户和未正常结束的记录；关联客户后的日常查看以客户追踪为主 |
| | 营销统计 | 从访问数据角度查看整体访问情况、页面排行、页面内容表现和客户排行 |
| **系统设置** | 项目成员 | 查看项目成员，通过邮件邀请成员或重发邀请，设置角色，停用或启用项目访问 |
| | 角色 | 查看当前项目默认角色，创建和维护当前项目自定义角色，配置功能权限 |
| | 操作日志 | 集中查看当前项目内需要留存的操作记录 |

---

## 4. 功能详情

---

### 4.1 客户管理

> 本次只下发客户基础资料、状态、标签、负责人、导入导出和客户与固定链接的关联规则。最近活动时间、最近行为、浏览记录和客户追踪按 §4.6 定义，不属于当前 B 端 MVP。

#### 4.1.1 客户列表

**功能优先级：**

| 功能 | 优先级 |
|---|---|
| 浏览客户列表 | P1 |
| 按姓名搜索客户 | P1 |
| 按标签或客户状态筛选客户 | P2-A |
| 查看客户详情 | P1 |
| 从客户详情开始现场讲解 | P1 |

**操作：**
- 搜索购房客户：按姓名查找
- 按一个或多个标签筛选购房客户
- 按一个客户状态筛选购房客户
- 购房客户的默认视图是购房客户列表，按创建时间倒序排序
- 打开客户详情
- 从客户详情选择一个已保存且可用的页面并开始现场讲解
- 从客户列表进入编辑客户资料
- 导入客户
- 导出客户列表
- 删除购房客户

**展示字段：**
- 姓名
- 当前状态
- 标签

**规则：**
- 姓名可以重复
- 每个客户在创建时由系统生成一个内部唯一标识；手动创建、CSV 导入和链接访问认证自动创建都遵守同一规则
- 客户内部唯一标识不可修改，不在客户列表中展示
- 列表需分页展示，每页条数可配置
- 无客户时显示空状态提示「暂无客户」
- 不支持批量删除，也不支持勾选部分客户后导出
- 列表中标签过多时，默认展示前 3 个标签，其余标签显示为「+N」
- 完整标签在客户详情中查看和编辑
- 选择多个标签时，客户必须同时包含全部已选标签
- 客户状态一次只能选择一个；状态和标签同时使用时，客户必须同时满足所选状态和全部已选标签

#### 4.1.2 创建客户

- **优先级**：P1

**操作：**
- 新建购房客户

**字段：**
- 姓名
  - 必填
  - 文本
- 联系渠道
  - 选填
  - 手机号
  - 备用电话
  - 邮箱
  - LINE
  - WhatsApp
- 来源
  - 选填
  - 可选值：官网咨询 / 线下活动 / 朋友介绍 / 门店咨询 / 外部 CRM / 其他
- 客户状态
  - 选填
  - 来源：项目内未停用客户状态列表
  - 不选时使用当前项目默认状态
- 负责人
  - 选填
  - 用户引用（单选本项目内处于启用状态的成员）
  - 默认填入当前登录用户
- 购房意向
  - 选填
  - 多行文本
  - 填写提示：例：购房目的：自住改善；预算：8,000 万 - 1.2 亿日元；意向区域：世田谷、目黑；意向户型：3LDK；入住时间：1 年内；付款方式：贷款为主
- 备注
  - 选填
  - 多行文本
- 系统生成
  - 客户编号（内部唯一标识）
  - 创建时间

**规则：**
- 创建客户时只要求姓名必填
- 联系渠道、购房意向和备注由销售按已知信息填写
- 来源、客户状态和负责人由销售按需选择
- 客户状态不填时使用当前项目默认状态
- 创建时间在保存时生成
- 客户编号在保存时生成，不提供填写或修改入口，也不在客户列表中展示
- 手机号、邮箱、LINE、WhatsApp 在项目内必须唯一；备用电话不参与判重
- 手机号和 WhatsApp 比较时将全角数字转为半角，忽略空格、横杠和括号；日本国内 `0` 开头号码与对应的 `+81` 号码视为相同，未填写国家码时按日本号码处理
- 邮箱比较时去除首尾空格且不区分大小写；邮箱内部的横杠、点号、加号等字符必须保留
- LINE ID 比较时只去除首尾空格，不删除或替换内部字符；大小写按 LINE 本身的账号规则处理
- 创建客户、编辑客户、导入客户和客户身份认证分别按上述对应字段规则判断
- 已删除客户不占用手机号、邮箱、LINE ID 和 WhatsApp；再次使用相同联系方式时创建新客户，不继承原客户资料或历史记录
- 保存时如与已有客户重复，只提示重复字段，不展示其他客户的姓名、负责人、完整联系方式或其他资料；不创建客户

#### 4.1.3 编辑客户资料

**功能优先级：**

| 功能 | 优先级 |
|---|---|
| 编辑客户基础资料 | P1 |
| 修改客户状态 | P1 |
| 调整客户标签 | P2-A |
| 分配或转移客户负责人 | P2-A |

**操作：**
- 从客户详情进入编辑客户资料

**可编辑字段：**
- 姓名
  - 必填
  - 文本
- 客户状态
  - 选填
  - 来源：项目内未停用客户状态列表
- 联系渠道
  - 选填
  - 手机号
  - 备用电话
  - 邮箱
  - LINE
  - WhatsApp
- 来源
  - 选填
  - 可选值：官网咨询 / 线下活动 / 朋友介绍 / 门店咨询 / 外部 CRM / 其他
  - 由无参数链接访问认证后自动创建的客户，当前来源可显示为「链接访问认证」
  - 销售修改来源时只能选择上述值
- 负责人
  - 选填
  - 用户引用（单选本项目内处于启用状态的成员）
  - 展示客户当前负责人；没有负责人时留空
- 购房意向
  - 选填
  - 多行文本
  - 填写提示：例：购房目的：自住改善；预算：8,000 万 - 1.2 亿日元；意向区域：世田谷、目黑；意向户型：3LDK；入住时间：1 年内；付款方式：贷款为主
- 标签
  - 选填
  - 可选择已有客户标签
  - 可新建客户标签
  - 可从当前客户移除标签
- 备注
  - 选填
  - 多行文本

**只读字段：**
- 创建时间

**规则：**
- 创建时间不可编辑
- 客户状态表示当前项目对客户的整体销售进度，一个客户只有一个当前状态
- 移除标签只影响当前客户
- 家庭情况、生活偏好、学校、通勤、景观、预算敏感等内容不做固定字段，先通过客户标签记录
- 如后续需要按预算筛选或换算，再新增预算下限、预算上限、币种和汇率时间
- 修改客户状态时，系统自动记录状态变更历史（原状态 → 新状态、操作人、操作时间）
- 没有负责人的客户可以分配一名负责人；已有负责人的客户可以转移给其他成员
- 分配或转移负责人只改变该客户的主要跟进人
- 分配或转移负责人不会把固定链接或分享页面转交给新的客户负责人
- 客户已有的固定链接关联关系继续保留
- 成员被停用后，其负责的客户继续保留该负责人，并显示为「姓名（已停用）」
- 已停用成员不出现在新建客户、分配负责人和转移负责人的选择项中
- 成员重新启用后，其原负责客户恢复显示正常负责人名称，不需要重新分配
- 客户负责人只表示主要跟进人，不是客户查看权限；具备「查看客户」功能权限的成员仍可查看当前项目内全部客户，具体操作继续按对应功能权限判断
- 客户资料、客户状态、客户标签、负责人和客户与固定链接的关联关系发生修改时，系统自动记录操作日志：修改项、修改前值、修改后值、操作人或系统来源、操作时间
- 客户与固定链接的关系日志只记录销售指定客户时首次建立关系、无参数链接认证后建立关系，以及删除满 90 天后解除关系，不记录链接内容、链接状态、复制动作或二维码展示
- 上述记录统一从系统设置的操作日志查看，客户详情不提供操作日志入口
- 客户删除和恢复均记录操作人、操作时间和内部删除记录编号；删除后 90 天内，项目管理员查看日志时仍可识别原客户；删除满 90 天完成最终匿名化后，日志不再展示已清除的客户资料，但继续保留操作人、操作时间和内部删除记录编号
- 修改手机号、邮箱、LINE、WhatsApp 时，按 §4.1.2 的对应字段规则比较；如与项目内其他已有客户重复，只提示重复字段，不展示其他客户资料；不保存修改

#### 4.1.4 客户状态管理

**功能优先级：**

| 功能 | 优先级 |
|---|---|
| 查看客户状态列表 | P1 |
| 新增客户状态 | P1 |
| 修改客户状态名称 | P2-A |
| 调整客户状态排序 | P2-A |
| 设置默认客户状态 | P2-A |
| 停用客户状态 | P2-A |
| 重新启用客户状态 | P2-A |
| 删除未使用客户状态 | P2-B |

客户状态管理用于维护项目内客户状态列表。客户状态表示当前项目对客户的整体销售进度。

**操作：**
1. 查看客户状态列表
2. 新增状态
3. 修改状态名
4. 调整排序
5. 设置默认状态
6. 停用状态
7. 重新启用状态
8. 删除未使用状态

**规则：**
- 客户状态在项目内生效
- 一个客户只有一个当前状态
- 系统为每个项目自动创建「未设置」「签约」「未签约」三个系统预置客户状态
- 「未设置」是项目初始的默认客户状态
- 当前项目始终只有一个默认客户状态
- 项目管理员可以将任一未停用的客户状态设为默认状态
- 当前默认客户状态不提供「设为默认状态」操作
- 三个系统预置客户状态不能改名或删除，且始终保留
- 当前默认状态不能停用或删除；项目管理员需要先将其他未停用状态设为默认状态
- 项目管理员可以按当前项目的需要维护系统预置客户状态以外的状态名称
- 客户状态名称在当前项目内不能重复
- 新增或修改客户状态名称时，如名称已存在，系统不保存并提示「该状态已存在」
- 未保存过手动排序时，客户状态默认按添加时间倒序显示
- 保存后的顺序用于客户状态列表和所有客户状态选择项
- 新增状态显示在第一位，其他状态保持当前顺序
- 每次修改客户状态时，系统自动记录状态变更历史：原状态、新状态、操作人、操作时间
- 状态变更历史在客户详情中可查看
- 新建客户未选择状态时使用当前项目的默认状态
- 停用状态不能再被选择，已有客户保留原状态
- 停用的客户状态可以重新启用
- 重新启用后，该状态恢复到新建客户和修改客户状态的选择项中
- 重新启用不改变客户状态的显示顺序，不自动设为默认状态，也不修改已有客户的当前状态
- 已使用状态不能删除
- 未被客户使用、不是系统预置状态且不是当前默认状态的客户状态可以直接删除，不要求先停用
- 删除客户状态前，系统展示状态名称并要求项目管理员二次确认
- 不提供合并状态操作
- 新增、修改、排序、默认、停用、重新启用和删除状态属于客户状态维护权限，默认由项目管理员使用
- 销售人员可修改自己可编辑客户的当前状态，但不能维护状态列表

**客户状态在销售流程中的使用：**
- 客户状态由项目管理员按当前项目需要动态维护；除系统预置的「未设置」「签约」「未签约」外，PRD 不规定必须创建哪些中间状态
- 不同项目可以使用不同的状态名称、数量和排序，销售业务流程不依赖某个固定状态名称
- 系统不规定客户状态的变化顺序，也不要求客户必须经过某个中间状态后才能进入其他状态
- 销售可以从当前状态改为任一未停用状态；是否修改以及选择哪个状态，由销售根据实际沟通和外部业务结果判断
- 客户状态不控制现场讲解、页面制作、页面发送、客户追踪或再次推荐；同一状态下可以发生多次讲解、发送和客户访问
- 再次到访、发送新页面、客户打开页面、反复查看或浏览时长变化都不能自动修改客户状态
- 销售完成外部买卖合同后，可以把客户状态改为系统预置的「签约」；本文所说的成交以签约为准
- 客户明确不再购买、申请取消或未完成合同时，销售可以把状态改为系统预置的「未签约」
- 「已接待」「考虑中」「购买申请中」只可作为某个项目配置或销售场景验收的数据示例，不是系统预置状态，也不是所有项目必须采用的状态

#### 4.1.5 客户标签管理

**功能优先级：**

| 功能 | 优先级 |
|---|---|
| 查看客户标签库 | P2-A |
| 新增客户标签 | P2-A |
| 修改客户标签名称 | P2-A |
| 搜索客户标签 | P2-B |
| 合并客户标签 | P2-B |
| 删除未使用客户标签 | P2-B |

客户标签管理用于维护项目内客户标签。客户标签和素材标签分开管理。

**操作：**
1. 查看客户标签列表
2. 新增客户标签
3. 搜索客户标签
4. 查看标签使用人数
5. 修改标签名
6. 合并重复标签
7. 删除未使用标签

**规则：**
- 客户标签在项目内生效
- 客户标签库默认按创建时间倒序展示；没有客户标签时显示空状态
- 搜索客户标签时，名称包含关键词即为匹配
- 销售人员在给自己可编辑客户打标签时，可以选择已有客户标签，也可以新增客户标签
- 是否允许销售人员新增客户标签由当前项目权限配置决定，默认允许
- 修改标签名、合并标签、删除未使用标签属于客户标签库维护权限，默认由项目管理员使用
- 新增客户标签时，需要检测项目内是否已有同名标签；已有同名标签时不允许保存
- 修改标签名时，需要检测项目内是否已有同名标签；已有同名标签时不允许保存
- 新增客户标签后，使用人数为 0
- 新增客户标签不会自动加到任何客户身上
- 修改标签名会影响所有带有该标签的客户
- 合并标签时，旧标签会替换为目标标签
- 合并标签时，目标标签必须是项目内已存在的其他客户标签，不能是当前标签
- 确认合并前，系统展示源标签、目标标签和受影响的客户数量，并要求项目管理员确认
- 合并后，如同一客户同时带有旧标签和目标标签，只保留目标标签
- 已使用标签不能直接删除，需先从客户身上移除或合并到其他标签
- 删除未使用客户标签前，系统展示标签名称并要求项目管理员二次确认
- 客户标签用于记录不适合做固定字段、但销售判断时常用的信息，如「有子女」「学区房」「三代同堂」「年轻夫妇」「首次置业」「预算有限」「通勤优先」「眺望」

#### 4.1.6 客户导入

- **优先级**：P2-A

**操作：**
1. 在客户列表点击导入客户
2. 上传 CSV 文件
3. 预览客户数据和检查结果
4. 确认导入

**导入字段：**
- 姓名
- 手机号
- 备用电话
- 邮箱
- LINE
- WhatsApp
- 来源
- 购房意向
- 备注

**规则：**
- 客户导入只用于批量新增客户，不更新已有客户
- 姓名必填，缺少姓名的行不能导入
- 创建时间使用导入时间
- 每条成功导入的客户记录由系统生成客户编号
- 来源为空时保持为空
- 导入创建的客户使用当前项目默认状态，不自动添加客户标签

**判重规则：**
- 系统在当前项目和本次导入文件中，按 §4.1.2 的手机号、邮箱、LINE、WhatsApp 对应字段规则检查重复
- 姓名不参与判重
- 任一联系方式与当前项目已有客户重复时，该导入行不可导入
- 任一联系方式在本次导入文件中重复时，所有使用该字段值的导入行均不可导入

**重复处理：**
- 导入预览中标记重复行，展示原文件行号和重复字段名称；不展示系统中其他客户的姓名、负责人、完整联系方式或其他资料
- 重复行自动不导入，不提供覆盖或跳过选项
- 重复行不修改系统中的已有客户
- 其他通过检查的数据继续导入

#### 4.1.7 客户导出

- **优先级**：P2-A

**操作：**
1. 在客户列表点击导出
2. 确认导出范围和字段
3. 导出 CSV 文件

**导出字段：**
- 姓名
- 客户状态
- 手机号
- 备用电话
- 邮箱
- LINE
- WhatsApp
- 来源
- 负责人
- 标签
- 购房意向
- 备注
- 创建时间

**规则：**
- 导出客户需要「导出客户」功能权限
- 默认导出当前筛选结果
- 不支持勾选部分客户后导出
- 导出范围不得超出用户当前可查看的客户
- 「已删除客户」不进入普通客户导出
- 每次最多导出 10,000 条；超过时提示用户缩小筛选范围
- 不脱敏
- 导出操作记录到操作日志，包括操作人、操作时间、筛选条件和导出条数；日志不保存导出文件或具体客户资料

#### 4.1.8 删除与恢复客户

- **优先级**：P2-A

**删除操作：**
1. 在客户列表或客户详情中点击删除客户
2. 系统弹出二次确认，提示删除后的影响：客户将从普通客户列表移除，完整资料保留 90 天且仅项目管理员可以查看和恢复；原客户标识参数和浏览器识别结果立即失效；90 天后自动清除个人资料且不能恢复
3. 确认后删除该客户

**恢复操作：**
1. 项目管理员打开「已删除客户」
2. 系统展示尚未超过 90 天的已删除客户
3. 项目管理员查看被删除客户的原姓名、客户编号、删除人、删除时间、删除前负责人和删除前客户资料
4. 项目管理员选择恢复客户
5. 系统按 §4.1.2 的对应字段规则重新检查手机号、邮箱、LINE 和 WhatsApp
6. 检查通过后，系统恢复客户，并继续使用原客户编号

**规则：**
- 删除客户需要二次确认，不能直接删除
- 删除后客户进入「已删除客户」，不再出现在普通客户列表中，不立即执行最终匿名化
- 完整客户资料从删除时间起保留 90 天，仅项目管理员可以查看和恢复
- 删除日志记录被删除客户、删除人和删除时间
- 删除后，该客户对应的客户标识参数以及浏览器 Cookie / 会话中的客户识别结果立即失效
- 删除后暂时保留客户与固定链接的关系；恢复客户时继续使用原客户编号，但不恢复原客户标识参数或浏览器访问状态，销售需要重新取得访问地址
- 恢复时任一联系方式已被当前项目其他客户使用，系统提示冲突字段且不恢复客户；项目管理员处理冲突后可以再次恢复
- 删除客户不限制访客再次打开仍启用的分享链接；访客再次访问时需要重新验证身份
- 访客重新验证身份后，系统不自动恢复已删除客户；没有其他现有客户匹配时，系统创建新客户并生成新的客户编号
- 新客户不与已删除客户合并，已删除客户的链接关联关系和其他历史数据不转入新客户
- 删除满 90 天后，系统自动执行最终匿名化：清空姓名、手机号、备用电话、邮箱、LINE、WhatsApp、来源、购房意向、标签和备注，解除负责人和固定链接关系，不再允许恢复
- 最终匿名化后，系统继续保留内部客户标识、所属项目、创建时间和删除时间，用于连接匿名历史记录和统计；这些字段不作为客户资料向用户展示
- 数据追踪功能启用后，删除客户的历史记录和统计按 §4.6.3 保留，并统一显示为「已删除客户」
- 最终匿名化后，删除日志继续保留删除人、删除时间和内部删除记录编号，不保留已经清除的客户资料

---

### 4.2 素材管理

素材库是当前项目内所有可被 Widget 使用内容的统一入口，不只管理普通文件。素材来自现有系统、A 端或其他正式发布来源；B 端不上传、创建或删除素材。

素材管理默认由营销企划使用，负责维护素材说明和素材标签。销售人员在编辑自己创建的页面时，可以查看、筛选和选择当前项目内的素材。

**装配侧素材的操作边界：**
- 营销企划和有对应权限的项目管理员：查看和筛选素材、维护 VISTA Link 素材标签、编辑素材说明
- 销售人员：在编辑自己创建的页面时查看、筛选和选择素材
- 所有角色都不能在 B 端上传、创建或删除素材
- 所有角色都不能修改素材分类、来源、原始地址、文件内容或结构化业务数据

**素材目录输入要求：**
- 素材进入 VISTA Link 前，素材目录提供方必须为每条素材准备稳定的素材标识、所属项目、名称、分类、状态、来源信息、来源内容更新时间或版本、结构化业务信息，以及可用的内部预览能力或内容打开信息
- 素材分类使用 [A 端 Widget 管理 PRD §5.5](https://vista-new-c.homevista.work/docs/a/01-A%E7%AB%AFWidget%E7%AE%A1%E7%90%86PRD.md#55-%E6%95%B0%E6%8D%AE%E6%9D%A5%E6%BA%90%E5%88%86%E7%B1%BB) 定义的数据来源分类及产品标识；B 端不另行维护一套素材分类
- 素材目录可以由装配后台直接提供，也可以由独立处理程序根据装配数据生成；采用哪种方式由技术团队确定，不在本 PRD 规定具体实现
- 无论采用哪种方式，素材分类都必须在素材进入 B 端前确定；B 端用户不能补录或修改分类，也不能自行猜测缺失值
- 素材分类缺失、不属于 A 端已定义分类或来源信息不完整时，该记录不进入可供用户使用的素材列表，并作为素材目录数据不完整处理
- C 端不使用素材分类判断展示内容；Widget 能否使用某条素材，仍由 Widget 声明的数据来源分类和自身使用规则决定

**素材同步与下线规则：**
- 来源系统中的素材变更后，VISTA Link 同步展示最新内容（改名、更新等）
- 来源内容更新且素材标识不变时，VISTA Link 将其视为同一条素材，素材库直接展示更新后的内容，不保留旧内容供用户选择，也不另外生成一条新素材
- 同一条素材更新后，VISTA Link 保留该素材原有的素材标签和素材说明
- 素材目录提供方需要通过来源内容更新时间、版本或更新标记，让 VISTA Link 能够识别素材内容已经变化
- VISTA Link 识别到来源内容更新后，在普通素材列表、Widget 候选素材列表和素材详情中显示「内容已更新」及最近更新时间；该提示不改变 Widget 候选范围
- 已使用更新素材的分享页面，在页面库、页面详情、编辑和预览中提示「页面素材有更新」，并指出发生更新的素材
- B 端页面详情、编辑和预览直接读取更新后的素材内容，不提供旧素材版本选择
- 客户页面读取素材最新可用内容；素材来源更新后，页面详情、预览和固定链接均使用更新后的素材，不要求用户重新保存页面
- 来源内容被删除后重新创建并产生新的素材标识时，VISTA Link 将其视为新素材，不继承原素材的标签和说明
- 素材标签和素材说明始终按稳定素材标识关联，不按素材名称、文件名、文件地址或打开地址关联
- 已下线或已删除的素材不再在素材库中展示
- 已被加入分享页面的素材如下线或删除：页面库和页面详情提示该页面使用了已下线或已删除的素材；页面内容中指出具体素材状态
- B 端预览遇到已下线素材时，不再展示原素材内容，在对应位置显示「内容已经下线」

后续 AI 正式发布结果接入素材库时，也必须遵守相同的素材信息、当前项目和 Widget 候选范围规则；AI 发布接口和特殊标记不在本次下发范围内。

**素材分类要求：** 每条素材必须使用 [A 端 Widget 管理 PRD §5.5](https://vista-new-c.homevista.work/docs/a/01-A%E7%AB%AFWidget%E7%AE%A1%E7%90%86PRD.md#55-%E6%95%B0%E6%8D%AE%E6%9D%A5%E6%BA%90%E5%88%86%E7%B1%BB) 已定义的数据来源分类及产品标识，不能只保存一个没有含义的文件地址或 URL。VISTA Link 使用素材目录提供方给出的分类，不在 B 端补录或修改。

- B 端不再定义跨全部素材使用的素材类型枚举；WALK、VR、CITY VISTA、PDF、图片、视频等具体形式按来源信息原样保留
- 同一素材分类下可以存在不同内容形式；素材列表按分类筛选，不把具体形式当作另一套素材分类
- Widget 先按自身声明的数据来源分类取得候选素材，再按该 Widget 自身使用规则判断哪些素材可用
- 每个项目只有一条 `project-overview-content` 分类的项目概览内容，包含项目名称、项目背景图和项目简介；三个字段作为一个整体使用，不拆成多条素材
- WALK 和 VR 是公共空间、样板间等素材中的内容形式，不单独作为素材分类
- 每份完整的预约配置是一条素材，包含预约配置名称和可在线使用的预约表单；来场预约 Widget 使用预约配置，Widget 中的预约操作入口不单独作为素材
- 素材分类不包含外部服务
- 资料文件夹及其文件均使用 `material-folder` 分类；素材目录分别提供文件夹或文件记录时，同时保留父子关系和 PDF、图片、视频等文件信息
- 建筑环视作为三维建筑的内容信息保存，不单独作为素材分类或素材；三维建筑的产品类型只能是 `BUILDING VISTA 3D Lite`、`BUILDING VISTA 3D` 或 `CITY VISTA`
- WALK、VR、3D 等内容可以继续引用原系统地址；地址只作为素材的打开信息，不作为素材分类

**原始信息与关联信息：** 素材库可以保存对原业务数据的引用，不要求复制全部数据。户型等结构化内容继续保留面积、LDK、楼栋、楼层等字段和关联关系，不能压成普通图片或标签。VISTA Link 使用来源端提供的数据结构展示各分类的关键信息，第一版不按这些结构化信息筛选。

#### 4.2.1 素材列表

**功能优先级：**

| 功能 | 优先级 |
|---|---|
| 浏览素材列表 | P1 |
| 按名称搜索素材 | P1 |
| 按分类或标签筛选素材 | P2-A |
| 查看素材详情 | P1 |

当前项目内已经上线、素材目录信息完整并可被 Widget 使用的素材，在 VISTA Link 中可见。页面、Widget、页面模板和客户不属于素材。素材目录按 `project-overview-content` 分类为每个项目提供一条项目概览内容，该内容包含项目名称、项目背景图和项目简介，不能拆成多条素材。

**操作：**
- 打开素材管理，默认进入素材列表
- 搜索素材：输入名称关键词，查找名称中包含该关键词的素材
- 按分类筛选素材
- 按一个或多个标签筛选素材
- 打开素材详情

**展示字段：**
- 素材名称
- 分类：显示 [A 端 Widget 管理 PRD §5.5](https://vista-new-c.homevista.work/docs/a/01-A%E7%AB%AFWidget%E7%AE%A1%E7%90%86PRD.md#55-%E6%95%B0%E6%8D%AE%E6%9D%A5%E6%BA%90%E5%88%86%E7%B1%BB) 定义的分类名称
- 标签
- 来源内容更新状态和最近更新时间
- 来源端提供的简要信息

不同分类使用各自来源端提供的简要信息，不在 B 端建立跨全部分类的固定字段表。`material-folder` 分类下，文件夹记录可以显示文件夹名称和文件数量；文件记录可以显示文件类型、文件名和所属文件夹。

**规则：**
- 素材列表默认按更新时间倒序展示
- 素材列表分页展示
- 名称关键词与当前选择的分类和标签筛选条件同时生效
- 素材列表只显示当前项目内的素材，不显示项目筛选器
- 分类筛选项只显示当前项目素材实际使用的 A 端分类，不显示没有素材的空分类
- 已下线或已删除的素材不在普通素材列表和 Widget 候选素材列表中展示
- 素材分类使用 A 端数据来源分类及产品标识，B 端不允许修改素材分类
- 素材原有分类被 A 端停用、删除或移除后，该素材不再进入普通素材列表和 Widget 候选素材列表
- 素材分类失效不等于素材下线或删除；使用该素材的页面显示分类失效提示，固定链接不再展示该素材内容
- 编辑包含分类失效素材的页面时，系统提示更换或移除该素材；处理完成前不能保存
- Widget 先按自身声明的数据来源分类和使用规则生成候选素材
- 用户再在候选素材列表中按名称搜索，或按分类和标签筛选；这一步只能缩小当前候选列表，不能把 Widget 候选范围外的素材加入列表
- 文件类型属于 `material-folder` 分类下文件记录的来源信息，第一版不提供文件类型筛选

#### 4.2.2 使用地址打开的素材

- **优先级**：P2-B

WALK、VR、BUILDING VISTA 3D Lite、BUILDING VISTA 3D 和 CITY VISTA 可以继续使用来源系统地址。每条素材仍按 §4.2 定义的 A 端分类进入素材目录，并包含打开地址和必要的结构化信息。打开地址不是素材分类，也不能替代素材分类。

**在 VISTA Link 中的使用：**
- 使用地址打开的素材进入素材列表后，可按名称搜索，或按分类和标签筛选并选择进分享页面；维护标签仍需对应权限
- 来源系统地址只作为 Widget 打开素材或 B 端内部预览所需的信息；B 端不把来源系统地址显示为可复制或发送的素材链接
- 链接通过 VISTA Link URL 跳转，系统记录点击行为；外部页面中的后续行为默认不记录，除非后续接入回传
- 来场预约等 Widget 提供的操作入口不进入素材列表

#### 4.2.3 素材详情

**功能优先级：**

| 功能 | 优先级 |
|---|---|
| 查看素材详情 | P1 |
| 编辑素材说明 | P2-A |
| 调整素材标签 | P2-A |

**操作：**
1. 查看素材详情
2. 编辑素材说明
3. 添加素材标签
4. 从当前素材移除标签

**展示内容：**
- 素材名称
- 内容预览：来源端支持受限预览时展示
- 分类：显示 A 端数据来源分类名称
- `material-folder` 分类下，文件夹记录显示文件夹名称和文件数量；文件记录显示文件类型、文件名和所属文件夹
- 标签
- 素材说明
- 来源内容更新状态和最近更新时间
- 素材目录提供方提供的完整结构化信息和关联信息

**规则：**
- 查看素材权限包含查看来源端支持的内部内容预览，不单独设置预览权限
- 素材预览只供已登录且具备当前项目访问权限的 B 端用户核对内容，不作为对外分享方式
- 素材详情不显示来源系统地址，也不提供复制素材预览地址的操作
- 素材预览不得形成无需登录和当前项目权限即可访问的固定地址；浏览器中的预览地址被复制后，仍不能绕过登录和当前项目权限检查
- 购房客户只能通过分享页面的固定链接查看素材，不能直接使用 B 端素材预览入口
- 来源端无法提供满足上述访问限制的预览时，素材详情只展示缩略图、素材信息和结构化信息，不直接使用公开来源地址代替预览
- 素材预览不创建或修改分享页面和固定链接，也不产生购房客户访问记录
- 素材预览入口统一显示为「预览」，不使用「打开完整预览」等可能被理解为独立分享地址的文案
- 素材详情中的可维护内容为素材说明和标签
- 素材说明为可选自由文本，由营销企划记录素材用途、使用建议和经验信息；不展示给购房客户
- 素材说明可以留空或清空
- 素材说明在编辑销售自己创建的页面时带入，供销售查看
- 新增、修改或清空素材说明时，系统记录素材、修改前内容、修改后内容、操作人和操作时间
- 素材标签可选择已有素材标签，也可新建素材标签
- 移除标签只影响当前素材

#### 4.2.4 素材标签管理

**功能优先级：**

| 功能 | 优先级 |
|---|---|
| 查看素材标签库 | P2-A |
| 新增素材标签 | P2-A |
| 修改素材标签名称 | P2-A |
| 搜索素材标签 | P2-B |
| 合并素材标签 | P2-B |
| 删除未使用素材标签 | P2-B |

素材标签管理用于维护项目内素材标签。素材标签和客户标签分开管理。

**操作：**
1. 查看素材标签列表
2. 新增素材标签
3. 搜索素材标签
4. 查看标签使用素材数
5. 修改标签名
6. 合并重复标签
7. 删除未使用标签

**规则：**
- 素材标签在项目内生效
- 素材标签名称不能为空，且在当前项目内不能重复
- 素材标签库默认按创建时间倒序展示；没有素材标签时显示空状态
- 搜索素材标签时，名称包含关键词即为匹配
- 使用素材数统计当前项目内的素材
- 营销企划和项目管理员可以按自身权限给素材添加或移除已有标签，也可以新增素材标签
- 销售人员在编辑自己创建的页面选材时可以查看素材标签，但默认不能给素材添加、移除或新增标签
- 修改标签名、合并标签、删除未使用标签属于素材标签库维护权限，默认由营销企划和项目管理员使用
- 新增素材标签时，需要检测项目内是否已有同名标签；已有同名标签时不允许保存
- 修改标签名时，需要检测项目内是否已有同名标签；已有同名标签时不允许保存
- 新增素材标签后，使用素材数为 0
- 新增素材标签不会自动加到任何素材身上
- 修改标签名会影响所有带有该标签的素材
- 合并标签时，旧标签会替换为目标标签
- 合并标签时，目标标签必须是项目内已存在的其他素材标签，不能是当前标签
- 确认合并前，系统展示源标签、目标标签和受影响的素材数量，并要求操作人确认
- 合并后，如同一素材同时带有旧标签和目标标签，只保留目标标签
- 已使用标签不能直接删除，需先从素材身上移除或合并到其他标签
- 删除未使用素材标签前，系统展示标签名称并要求操作人二次确认
- 新增、修改名称、合并和删除素材标签时，系统记录操作人和操作时间
- 素材标签用于素材检索

---

### 4.3 页面库

#### 4.3.1 页面库

**功能优先级：**

| 功能 | 优先级 |
|---|---|
| 浏览页面库 | P0 |
| 按名称搜索分享页面 | P1 |
| 查看页面详情 | P0 |
| 新建页面 | P1 |
| 复制页面 | P1 |
| 复制自己创建的页面 | P1 |
| 复制自己创建的页面 | P1 |
| 删除分享页面 | P2-A |

页面库用于浏览、查找和管理当前项目内可直接分享的页面实例。列表同时展示默认页面和当前销售本人创建的页面，不展示独立的模板对象。默认页面可直接预览和分享；需要修改时，销售必须先复制为新页面。销售也可以使用 A 端提供的自由模板新建页面。

**列表展示：**
- 页面缩略图
- 页面名称
- 来源页面状态：正常 / 来源页面已下架 / 来源页面已删除；只在 A 端来源页面下架或删除时展示
- 页面素材状态：正常 / 页面素材有更新 / 存在已下线或已删除素材

**支持操作：**
- 输入页面名称关键词，查找名称中包含该关键词的分享页面
- 新建页面
- 打开页面详情
- 分享页面
- 复制默认页面或自己创建的页面
- 编辑或删除自己创建的页面

**规则：**
- 页面库只显示当前项目内的页面，不提供项目筛选
- 页面只有一个对象；由 A 端提供或由销售创建不会形成两种页面类型
- 默认页面对具备对应功能权限的项目成员可见
- 自己创建的页面对创建人和项目管理员可见，不提供公司内共享开关
- 默认页面不显示编辑和删除操作；项目成员只能使用、预览、分享或复制
- 默认页面的发布、更新和下架由 A 端负责，VISTA Link 不向项目成员显示 A 端名称或提供维护入口
- A 端更新自己创建的页面后，原固定链接展示最新内容；因此更新会同时影响所有使用该页面的销售
- A 端页面下架后，B 端保留页面基本信息和固定链接，页面标记「来源页面已下架」；页面内容和固定链接不可访问，下架期间不能复制
- A 端页面恢复上线后，B 端恢复原关联并继续同步 A 端最新内容；固定链接地址和状态不变
- A 端删除来源页面后，B 端保留页面基本信息和固定链接，并与原 A 端页面永久解除关系；页面标记「来源页面已删除」，页面内容和固定链接不可访问，此后不再同步且不能复制
- A 端以后创建的新页面即使名称相同，也视为新页面，不与来源已删除的 B 端页面或原固定链接重新关联
- A 端页面下架或删除不改变 B 端固定链接地址、启用状态、公开状态和客户关联关系，但固定链接不能展示已经不可用的来源页面内容
- B 端不为 A 端来源页面保存可继续展示的旧内容副本
- 销售只能编辑和删除自己创建的页面
- 复制默认页面后生成一个独立的自己创建页面，创建人为执行复制操作的销售；A 端之后修改原页面，不改变已经复制出的页面
- 复制自己创建的 B 端页面后同样生成独立页面，创建人为执行复制操作的销售；不能复制其他成员创建的页面
- 使用自由模板新建页面和复制默认页面时必须先输入新页面名称
- 新建和复制得到的页面自动使用当前项目，不要求选择项目，也不能跨项目复制
- 自己创建的页面只保存一份最新内容；用户预览并确认保存后，固定链接立即使用该内容
- 页面缩略图使用页面保存的封面图，不从页面素材中自动截取
- 页面封面和页面缩略图统一使用 16:9 比例
- 页面使用的素材内容更新后，列表显示「页面素材有更新」
- 页面使用的素材下线或删除后，列表提示页面存在已下线或已删除素材
- 列表默认按最近更新时间倒序排列

**B 端对 A 端页面管理权限的理解：**
- A 端可以查看 B 端创建的页面
- A 端具备编辑和删除 B 端创建页面的能力；原则上 A 端日常只查看，其他操作用于 B 端请求平台代为处理问题的情况
- A 端编辑 B 端创建的页面后，页面的创建来源和创建人不变；B 端读取修改后的最新内容，固定链接地址不变
- A 端没有固定链接概念，不查看或修改 B 端固定链接的启用、公开、客户关联和访问状态
- A 端删除 B 端创建的页面后，B 端沿用 §4.3.6 的页面删除规则
- A 端由哪些角色执行这些操作、操作入口、确认步骤和操作日志要求，由 A 端 PRD 规定；上述说明只描述 B 端需要识别和显示的结果

#### 4.3.2 页面详情

**功能优先级：**

| 功能 | 优先级 |
|---|---|
| 查看页面详情 | P0 |
| 预览客户页面 | P0 |
| 编辑自己创建的分享页面 | P1 |
| 复制页面 | P1 |
| 复制无参数固定链接 | P0 |
| 指定客户并复制带参数访问地址 | P1 |
| 展示无参数固定链接二维码 | P2-B |
| 设置或取消公开访问 | P1 |
| 停用或启用固定链接 | P1 |
| 查看关联客户列表 | P2-B |
| 开始现场讲解 | P1 |
| 删除分享页面 | P2-A |

页面详情用于查看一个分享页面的内容、包含的 Widget 和素材，以及该页面唯一的固定分享链接。

**展示内容：**
- 页面名称
- 备注
- 来源页面状态：A 端来源页面下架时显示「来源页面已下架」，删除时显示「来源页面已删除」
- 页面内容：按页面顺序展示 Widget 及其已配置内容；使用素材的 Widget 同时显示素材名称、分类和 §4.2.1 规定的关键信息；来场预约等功能型 Widget 显示功能名称和功能说明
- 页面素材状态：素材有更新时显示「页面素材有更新」并指出对应素材；素材已下线或已删除时显示对应状态
- 固定分享链接

**分享链接展示：**
- 链接状态：启用 / 停用
- 访问设置：公开 / 需要认证
- 关联客户数
- 页面创建人
- 创建时间

**关联客户列表展示：**
- 客户姓名
- 客户编号
- 首次关联来源
- 首次关联时间

**支持操作：**
- 预览客户实际看到的页面效果
- 编辑自己创建的分享页面
- 复制默认页面或自己创建的页面
- 直接复制无参数固定链接
- 指定客户后复制带客户标识参数的访问地址
- 展示无参数固定链接二维码
- 设置或取消公开访问
- 停用或启用固定分享链接
- 查看关联客户列表
- 使用最新保存内容开始现场讲解
- 删除分享页面

**规则：**
- 页面预览作为操作打开，不在页面详情中重复展示一块静态预览
- 页面预览使用当前页面内容，不要求客户身份认证，也不产生客户访问记录
- 普通页面预览只用于内部检查，不表示现场讲解开始，也不产生现场讲解记录
- 现场讲解必须通过「现场讲解」入口进入；讲解中的页面展示可以复用页面预览的渲染能力，但必须显示「现场讲解中」和结束操作
- 页面预览自动使用当前项目主题，并与 C 端客户页面保持相同的主题显示
- 页面使用的素材内容更新后，页面详情和预览读取最新素材内容，并显示「页面素材有更新」
- 素材内容更新后，固定链接和页面预览均读取最新可用内容，不要求用户重新保存页面
- 页面使用的素材已下线时，页面详情标记该素材已下线，预览在原内容位置显示「内容已经下线」
- 页面使用的素材已删除时，页面详情标记该素材已删除，预览不再展示原素材内容
- 默认页面只读，不显示编辑和删除操作
- 销售只能编辑和删除自己创建的页面
- A 端本身不保存固定分享链接；默认页面进入 VISTA Link 页面库时，系统自动创建一条固定分享链接并默认启用；自己创建的页面首次保存成功时，系统自动创建一条固定分享链接并默认启用
- 同一个分享页面不能再创建第二条链接
- 分享链接展示页面最新保存内容；再次编辑并保存后立即展示新内容，链接地址和二维码不变
- 复制默认页面或自己创建的页面会创建一个独立的自己创建页面，并为新页面自动创建另一条固定链接
- 销售直接复制时取得无参数固定链接，复制前不选择发送渠道
- 点击直接复制后先完成复制；公开链接显示「已复制。任何取得链接的人都可以查看」，非公开链接显示「已复制。客户首次访问时需要验证身份」
- 浏览器无法自动写入剪贴板时，系统显示完整访问地址和「自动复制失败，请手动复制」，不显示「已复制」
- 销售指定一位客户后，系统在固定链接后添加随机客户标识参数并复制访问地址，同时建立该客户与固定链接的关系
- 客户标识参数不直接包含客户编号、邮箱、手机号等信息
- 带客户标识参数的访问地址不是新的分享链接，不单独出现在分享链接列表中，也不改变一个分享页面只有一条固定链接的规则
- 同一固定链接与同一客户只保留一个有效客户标识参数；重复指定该客户时返回同一访问地址，避免同时存在多条无法管理的参数地址
- 客户标识参数只对当前固定链接和目标客户的关系有效，不能移到其他固定链接上使用
- 停用固定链接前，系统必须要求用户确认，并说明无参数固定链接和所有带客户标识参数的访问地址都将停止访问
- 固定链接停用期间，无参数固定链接和带客户标识参数的访问地址均不能访问；客户与固定链接的关系和客户标识参数继续保留
- 固定链接重新启用后，无参数固定链接和原带客户标识参数的访问地址恢复可用
- 删除客户后，该客户对应的客户标识参数永久失效
- 当前不提供按客户单独停用参数的操作
- 指定客户用于身份识别，不是账号级访问授权；任何取得该带参数地址的人都可能被识别为目标客户
- 有效客户标识参数可以识别客户；参数无效或对应客户已删除时，按无参数固定链接处理
- 非公开的无参数固定链接由浏览器会话识别客户；无法识别时，客户必须完成邮箱验证码后才能查看内容
- 固定链接创建时默认不公开
- 销售可以把本人创建页面对应的固定链接设为公开或取消公开；项目管理员可以设置当前项目内全部固定链接的公开状态
- 设置公开前，系统提示任何取得链接的人都可以直接查看，且匿名访问不进入客户追踪或营销统计，并要求确认；取消公开不要求二次确认
- 公开状态与启用状态分别生效；公开但停用的固定链接仍不能访问
- 公开链接被未识别访客打开时，不要求邮箱验证码，不创建客户，不建立客户与固定链接的关系，也不进入购房客户追踪或营销统计
- 公开链接带有有效客户标识参数，或浏览器已有有效客户访问会话时，系统仍按已识别客户记录访问
- 公开链接取消公开后，未识别访客再次打开时需要完成身份认证；已有客户关联关系和客户标识参数继续保留
- 设置或取消公开访问不改变固定链接地址、二维码、启用状态、客户关联关系和客户标识参数
- VISTA Link 只生成和复制访问地址，不负责发送，也不读取外部聊天或邮件工具中的内容
- 系统不为直接复制、重复复制指定客户访问地址或展示二维码生成用户可见记录或操作日志
- 销售指定客户且客户与固定链接尚未建立关系时，系统记录首次关联来源、关联时间和操作人；重复取得同一访问地址时不新增记录
- 客户与固定链接的首次关联来源包括销售指定客户和客户通过无参数固定链接完成身份认证
- 关联客户列表不展示客户联系方式和备注
- 二维码始终对应无参数固定链接
- 公开链接的二维码旁提示「任何取得二维码的人都可以查看」；非公开链接提示「首次访问需要验证身份」；当前不生成指定客户二维码
- 停用的固定链接不能复制、不能为指定客户生成访问地址，也不展示二维码；页面提示先启用链接
- 停用分享链接后，客户打开该链接时看到失效提示
- 非公开链接的未识别客户不能查看内容

#### 4.3.3 固定链接

**功能优先级：**

| 功能 | 优先级 |
|---|---|
| 查看固定链接 | P0 |
| 设置或取消公开访问 | P1 |
| 停用或启用固定链接 | P1 |
| 查看关联客户列表 | P2-B |

固定链接不设独立管理列表。系统在页面详情中展示该页面唯一的固定链接，购房客户通过固定链接查看分享页面。

**支持操作：**
- 复制无参数固定链接
- 指定客户并复制带参数访问地址
- 展示无参数固定链接二维码
- 设置或取消公开访问
- 停用或启用分享链接
- 查看关联客户

**规则：**
- 一个分享页面与一条固定分享链接一一对应
- A 端创建的页面进入 B 端页面库时，由 B 端自动创建固定链接；B 端创建的页面首次保存成功时自动创建固定链接；两种链接均默认启用且默认不公开
- 分享链接不单独命名，以页面名称识别
- 项目管理员可以查看当前项目内全部固定链接
- 项目管理员可以手动停用或启用当前项目内全部固定链接
- 项目管理员可以设置当前项目内全部固定链接的公开状态
- 其他具备「停用或启用链接」功能权限的项目成员，只能手动停用或启用本人创建页面所对应的固定链接；不能停用或启用 A 端创建页面的固定链接
- 其他具备「设置或取消公开访问」功能权限的项目成员，只能设置本人创建页面所对应固定链接的公开状态；不能设置 A 端创建页面的公开状态
- 编辑、删除分享页面和指定客户分别按相应功能权限判断
- 关联客户列表入口需要「查看客户」功能权限
- 固定链接状态变化记录目标链接、变化前后的状态、操作人和操作时间
- 公开状态变化记录目标链接、变化前后的公开状态、操作人和操作时间
- 停用固定链接前，系统必须要求用户确认，并说明无参数固定链接和所有带客户标识参数的访问地址都将停止访问
- 固定链接停用期间，无参数固定链接和带客户标识参数的访问地址均不能访问；客户与固定链接的关系和客户标识参数继续保留
- 固定链接重新启用后，无参数固定链接和原带客户标识参数的访问地址恢复可用
- 客户与固定链接的关系来源包括销售指定客户、客户通过无参数固定链接完成身份认证；一条链接可关联多个客户
- 同一客户可关联多个分享页面对应的不同链接
- 直接复制、重复复制指定客户访问地址和展示二维码不生成用户可见记录或操作日志
- 平台不接入销售人员发送分享链接所用的 LINE、邮件或短信工具；销售在外部工具中完成发送
- 系统不读取销售人员在外部聊天或邮件工具中的内容
- 系统不要求销售在复制前选择发送渠道，也不按发送渠道统计分享效果
- 同一条链接被转发到其他工具后，系统不能只靠 Referer 可靠判断实际发送渠道
- 分享链接不能单独删除；不再使用时通过停用处理
- 停用的固定链接不能复制、不能为指定客户生成访问地址，也不展示二维码；使用前必须先启用
- 停用分享链接后，购房客户打开该链接时看到失效提示
- 分享页面删除后，对应固定链接继续保留并自动停用，且不能手动重新启用
- 分享页面删除后，客户关联关系和客户标识参数继续保留

#### 4.3.4 新建与复制分享页面

**功能优先级：**

| 功能 | 优先级 |
|---|---|
| 新建页面 | P1 |
| 复制页面 | P1 |
| 按名称检索素材 | P1 |
| 按分类筛选候选素材 | P1 |
| 按素材标签筛选候选素材 | P1 |

销售可以使用 A 端提供的自由模板新建页面，也可以把 A 端创建的页面或自己创建的 B 端页面复制为一个独立的 B 端创建页面。新建和复制都先输入页面名称，并自动使用当前项目。B 端不展示、选择或管理模板对象。新页面归当前销售管理，可添加 A 端当前可选的 Widget，并按 C 端对应的单项 Widget PRD 删除、排序和配置内容。

**自由模板规则：**
- 开发评审中所称的空白模板就是自由模板
- 所有项目共用同一套自由模板，不按项目分别配置
- 自由模板是系统必备项，必须始终存在且不允许停用
- 自由模板由 A 端提供和维护；B 端只使用，不展示、选择或管理模板对象
- 自由模板更新后，所有使用该自由模板创建的页面，其页头和项目联系页脚等固定公共部分跟随最新模板变化
- 自由模板更新不增加、删除或修改已有页面中的 Widget 实例、素材、Widget 顺序及销售填写的页面内容

**入口：**
- 页面库的「新建页面」
- A 端创建页面的页面详情和操作菜单

**管理信息：**
- 页面名称：必填
- 备注描述：选填
- 页面封面：必填；系统从多张默认封面图中自动选中一张，销售可以换成其他默认封面，也可以上传自己的图片

**编排设置：**
- Widget 列表
- 添加当前可选的 Widget
- 按 Widget 使用规则删除 Widget
- Widget 排序
- Widget 中已配置的内容及内容顺序

**展示内容：**
- 页面名称
- 各 Widget 及其素材或功能
- 素材入口或预览
- 素材说明

**Widget 编辑规则：**
- B 端只管理页面和页面中的 Widget 实例；Widget 的定义、内容对象、配置规则和 C 端体验以 [C 端 Widget 需求目录](https://vista-new-c.homevista.work/docs/c/02-Widget%E4%BD%93%E7%B3%BB/Widget%E9%9C%80%E6%B1%82/) 中对应的单项 Widget PRD 为准，B 端不展示、创建或修改 Widget 定义
- 添加 Widget 时只展示当前可选的 Widget；销售每次添加后，页面中产生一个独立的 Widget 实例
- 同一个 Widget 可以在同一页面中添加多次，各实例的素材、内容和顺序互不影响
- 每个 Widget 可使用的内容对象、必选性、选择数量、组合方式和内容选择方式，以 C 端对应的单项 Widget PRD 为准；A 端只提供当前可选状态和 B 端使用所需的对应信息
- 使用素材的 Widget 只能放入当前项目内、属于当前 Widget 自身候选范围的素材
- 项目概览 Widget 自动使用当前项目唯一的项目概览内容，不需要用户分别选择项目名称、项目背景图或项目简介；其他内容对象和显示规则按 C 端《[项目概览 Widget PRD](https://vista-new-c.homevista.work/docs/c/02-Widget%E4%BD%93%E7%B3%BB/Widget%E9%9C%80%E6%B1%82/01-%E9%A1%B9%E7%9B%AE%E6%A6%82%E8%A7%88Widget-PRD.md)》处理
- 来场预约 Widget 自动使用当前项目适用的预约配置，不要求用户把预约操作入口作为素材选择；其他业务内容对象和配置方式按 C 端对应的单项 Widget PRD 处理
- B 端不允许输入任意宽度或高度，不提供自由拖动和任意网格排版
- 手机、平板和 PC 的响应方式由 Widget 与 C 端定义，B 端不分别配置三套内容
- 销售不能创建 Widget 定义，也不能修改 Widget 的内容对象、配置规则或字段结构
- 页头和项目联系页脚由 A 端提供的自由模板自带，属于页面固定公共部分，不是 Widget，不进入 B 端 Widget 列表，也不作为页面中的 Widget 实例
- B 端不提供页头和项目联系页脚的添加、删除、排序或配置入口；其内容和显示规则由 A 端自由模板定义

**Widget 停用处理：**
- Widget 由 A 端停用后，不再出现在 B 端的可选 Widget 列表中，不能新增到页面
- 已经保存的页面实例不受 Widget 停用影响；页面预览、固定链接和客户访问继续按已保存内容显示
- 再次编辑包含已停用 Widget 的页面时，B 端在对应实例上提示必须替换或删除；处理完成前不能保存
- 用户删除已停用 Widget 实例后，不能从当前可选 Widget 列表重新添加
- 复制页面时复制页面中的 Widget 实例，不根据当前可选 Widget 列表重新生成；复制出的实例与原页面实例互不影响
- 复制后的未保存页面包含已停用 Widget 时，必须先替换或删除已停用 Widget，才能保存新页面；原页面不受影响

**项目主题规则：**
- 每个项目同时只有一套正在使用的主题；项目没有自定义主题时使用 VISTA 默认主题
- 项目主题由 A 端设置，B 端不提供主题设置、主题选择或页面单独修改主题的入口
- 页面不保存独立的主题副本；A 端创建和 B 端创建的页面都自动使用所属项目当前正在使用的主题
- 新建、复制、编辑和预览页面时，B 端使用当前项目主题；复制页面不复制主题设置
- B 端页面预览与 C 端客户页面使用同一项目主题和显示规则
- C 端页面通用组件可以按 C 端显示规则出现在 B 端预览中，但不进入 B 端 Widget 编辑内容
- A 端修改项目主题后，A 端创建和 B 端创建的页面都使用新主题，不要求重新保存页面
- 项目主题变化不改变页面固定链接和页面封面
- 已经打开的客户页面不要求立即变化；下次刷新或重新打开时使用最新项目主题

**选择素材：**
1. 销售在支持选择素材的 Widget 中打开素材选择
2. 系统先限定当前项目，再按当前 Widget 声明的数据来源分类和其他使用规则取得候选素材
3. 销售可继续按素材名称搜索，或按分类和素材标签缩小候选范围
4. 系统展示素材名称、分类、标签，以及 §4.2.1 规定的来源端简要信息；`material-folder` 分类下的文件记录同时展示文件类型
5. 销售按 Widget 允许的数量选择素材并确认
6. 系统将确认的素材加入当前页面的未保存内容

**按素材标签筛选候选素材：**
1. 销售在支持选择素材的 Widget 中打开素材选择
2. 系统展示当前候选素材使用的素材标签
3. 销售选择一个或多个素材标签
4. 系统展示同时带有全部已选标签的候选素材
5. 销售移除部分标签后，系统按剩余标签重新筛选候选素材
6. 销售移除全部标签后，系统恢复其他条件下的候选素材

**使用自由模板新建页面的操作：**
1. 销售在页面库选择「新建页面」
2. 系统使用 A 端提供的自由模板打开新页面编辑内容，并显示页面名称、备注和多张默认封面图，自动选中一张
3. 销售输入页面名称，按需换成其他默认封面或上传自己的图片；名称为空时不能继续
4. 系统显示带有自由模板固定公共部分的新页面内容
5. 销售添加 Widget，并按 Widget 使用规则完成选材、排序和内容调整
6. 销售打开预览，确认客户将看到的页面内容
7. 系统检查页面名称、Widget 当前状态、素材状态及内容选择是否符合 C 端对应的单项 Widget PRD
8. 检查通过且销售确认保存后，系统保存页面，自动创建新的唯一固定链接并默认启用；固定链接立即展示最新保存内容

**复制页面的操作：**
1. 销售在 A 端页面或自己创建的 B 端页面卡片、详情中选择「复制页面」
2. 系统显示页面名称、备注和多张默认封面图；名称默认为「原页面名称（复制）」，封面默认使用原页面封面
3. 销售确认或修改新页面名称，并保留原封面、换成其他默认封面或上传自己的图片；名称为空时不能继续
4. 系统复制原页面的备注、封面及其中的 Widget 实例；每个复制出的实例保留原实例的素材、内容和顺序，并与原页面实例相互独立
5. 销售按 Widget 使用规则添加、删除和排序 Widget，并修改允许编辑的内容；页面包含已停用 Widget 时必须先替换或删除，才能保存
6. 销售打开预览，确认客户将看到的新页面内容
7. 系统检查页面名称、Widget 当前状态、素材状态及内容选择是否符合 C 端对应的单项 Widget PRD
8. 检查通过且销售确认保存后，系统以当前销售为创建人保存新页面，自动创建新的唯一固定链接并默认启用；固定链接立即展示最新保存内容

**规则：**
- 页面名称和页面封面必填，备注选填
- 系统提供多张 16:9 局部抽象意向图作为默认封面；以植物、材质、光影、墙角等不可识别具体项目的局部内容为主，不使用容易被误认为真实项目图片的完整建筑或全景
- 新建页面时系统自动选中一张默认封面，销售可以保留或换成其他默认封面
- 销售可以上传自己的图片替换当前页面封面；上传图片只属于当前页面，不进入素材库
- 上传图片在封面选择区显示 16:9 预览，页面库和页面详情按同一 16:9 画面展示
- 页面封面不从素材库选择
- A 端创建的页面和销售自己创建的页面都可以复制；不能复制其他成员创建的 B 端页面
- 复制操作不修改 A 端创建的页面
- 新建页面和复制 A 端创建的页面前必须确认新页面名称
- 新页面自动使用全局当前项目，页面表单不再要求选择项目，也不允许跨项目复制
- B 端不展示、创建或修改 Widget 定义；Widget 的内容对象、内容选择方式和配置规则以 C 端对应的单项 Widget PRD 为准
- A 端只提供当前可选的 Widget、启停状态和 B 端使用所需的对应信息；B 端不能自行增加或改变 Widget 能力
- 检索结果只包含当前项目内、处于上线状态且属于当前 Widget 自身候选范围的素材
- 系统先按 Widget 声明的数据来源分类和选择规则生成候选素材，再允许用户在候选列表中按名称搜索，或按分类和标签筛选
- 用户不能通过修改或清空名称、分类和标签条件扩大 Widget 自身的候选范围
- 没有符合条件的素材时，系统显示空状态并保留当前检索或筛选条件
- 销售确认选材只修改当前页面的未保存内容，不修改素材或素材标签
- 素材标签筛选项只包含当前候选素材使用的标签
- 选择多个素材标签时，候选素材必须同时带有全部已选标签
- 素材标签筛选与名称和分类条件同时生效
- 调整或清空素材标签筛选不修改素材标签，也不改变当前页面已经选择的素材
- 复制后的页面名称默认为「原页面名称（复制）」，销售可以修改
- 新页面的创建人为执行新建或复制操作的销售
- 复制 A 端创建的页面或自己创建的 B 端页面时，都复制备注、封面和页面中的 Widget 实例，不复制原页面的固定链接、链接状态、关联客户或客户标识参数
- 复制出的 Widget 实例保留原实例的素材、内容和顺序，但与原页面实例相互独立；修改复制页面不会改变原页面
- 新页面第一次保存成功后创建新的唯一固定链接并默认启用，固定链接立即使用最新保存内容
- 内容选择不符合 C 端对应的单项 Widget PRD 中定义的必选性、选择数量或组合方式时不能保存
- 已选素材不属于 Widget 自身候选范围、已下线或已删除时不能保存
- 已选素材的分类已停用、删除或被移除时不能保存；固定链接不再展示该素材内容
- B 端不通过修改素材分类，把候选范围外的素材变成可选素材
- 分享页面自动归入当前项目，页面编辑表单不提供项目字段
- A 端来源页面的备注由 A 端填写，B 端只读展示；B 端创建页面的备注由创建人填写和修改
- 备注只供有权查看页面的销售查看，不进入客户页面、页面预览或固定链接展示内容
- 素材说明为素材级别的可选自由文本，由营销企划记录素材用途、使用建议和经验信息
- 素材说明在素材详情中维护，编辑销售自己创建的页面时自动带入供销售查看
- 来场预约等 Widget 提供的操作入口不作为素材进入素材列表
- 分享页面中的素材来源为素材列表
- 页面详情支持直接复制无参数固定链接，也支持指定客户后复制带客户标识参数的访问地址；客户通过无参数固定链接完成身份认证后，系统建立客户与固定链接的关系
- B 端创建的页面首次保存成功时，系统自动创建唯一固定链接并默认启用、默认不公开，不提供手动生成入口
- 复制链接或展示二维码前不要求选择发送渠道；这些操作不影响固定链接

#### 4.3.5 编辑分享页面

- **优先级**：P1

编辑分享页面用于修改当前销售自己创建的页面。A 端创建的页面只读，销售需要调整内容时必须先复制为独立的 B 端创建页面。销售必须先预览并确认保存；保存成功后，原固定链接保持原启用状态和公开状态，并立即展示最新保存内容。

**可编辑内容：**
- 页面名称
- 备注描述
- 页面封面：显示当前封面，并可换成系统提供的其他默认封面图或上传自己的图片
- 添加当前可选的 Widget
- 按 Widget 使用规则删除 Widget
- Widget 顺序
- Widget 中允许编辑的内容和内容顺序
- Widget 允许的展示形式

**操作：**
1. 打开页面详情
2. 进入编辑
3. 修改页面名称、备注描述、页面封面或 Widget 配置
4. 预览当前尚未保存的页面内容
5. 确认保存
6. 系统检查页面名称、必需 Widget、Widget 数量、Widget 可用状态、素材状态和 Widget 候选范围
7. 系统保存页面，固定链接立即展示最新保存内容

**规则：**
- A 端创建的页面不得由销售直接编辑
- 销售只能编辑自己创建的页面
- 保存页面不改变固定链接地址、二维码、启用状态、公开状态、客户关联关系和客户标识参数
- 页面名称不能为空
- 页面封面不能为空，可以使用系统提供的默认封面图或用户上传的图片
- 编辑页面时可以保留当前封面、换成系统提供的其他默认封面图，或上传自己的图片
- 用户上传的封面只属于当前页面，不进入素材库；页面封面不从素材库选择
- 编辑页面不提供项目主题字段或主题选择；页面始终使用所属项目当前主题
- 页头和项目联系页脚由自由模板自带，不属于 Widget；B 端不提供添加、删除、排序或配置入口
- 其他 Widget 是否允许删除、是否允许多个、最少和最多实例数量，按当前 Widget 使用规则处理
- 每个 Widget 的允许素材类型、其他候选限制、素材数量、内容、数据来源、可编辑项和展示形式，按当前 Widget 使用规则处理
- 页面使用的素材必须属于当前项目，且未下架、未删除
- Widget 缺少必需素材、实例数量不符合当前使用规则或所选素材不属于 Widget 候选范围时，不能保存
- 页面包含已停用 Widget 时，对应实例显示停用提示；完成更换前不能保存，原页面和固定链接继续按已保存内容正常访问
- 页面保存是整页保存，不存在单独保存页面名称或备注的操作；即使只修改名称、备注或封面，也必须先替换或删除页面中的已停用 Widget
- 页面只保存一份最新内容，不保存草稿、历史版本或可回退版本
- 新页面首次保存成功后，固定链接立即按当前启用和公开状态提供访问
- 再次编辑并保存后，固定链接立即展示最新保存内容
- 保存失败时，系统不改变当前已保存内容；只在当前仍然打开的编辑界面中临时保留用户尚未保存的输入，允许处理问题后再次保存。刷新、关闭页面、退出登录或换设备后不保证保留，系统也不把这些输入保存为草稿
- 页面使用的素材内容更新后，编辑页读取最新素材内容，并在对应素材上显示更新提示
- 页面使用的素材已下线或已删除时，编辑页显示对应状态；用户更换为当前可选素材后才能保存
- 销售不能创建 Widget 类型、修改 Widget 字段结构、输入任意尺寸或自由拖动排版
- 预览使用当前尚未保存的页面内容、当前项目主题，以及与 C 端相同的 Widget 展示规则
- 预览可以切换 PC、平板和手机查看尺寸，但不能分别编辑三套页面内容
- 预览不会创建或修改固定链接，也不产生客户访问记录
- 页面存在已停用 Widget、素材超出 Widget 候选范围或必需 Widget 缺失等问题时，预览中明确提示；已停用 Widget 处理完成前不能保存
- 预览直接显示更新后的素材内容；素材已下线时，在原内容位置显示「内容已经下线」
- 点击「预览」后，在新的浏览器标签页打开独立预览页面，不使用弹窗，也不放在编辑区旁边

#### 4.3.6 删除分享页面

- **优先级**：P2-A

删除分享页面用于移除当前销售自己创建且不再需要的页面。

**操作：**
1. 打开页面库或页面详情
2. 点击删除
3. 二次确认
4. 完成删除

**规则：**
- A 端创建的页面不能由项目成员删除
- 销售只能删除自己创建的分享页面
- 删除分享页面后，对应的固定分享链接自动停用
- 已删除页面对应的固定链接不能手动重新启用
- 删除分享页面不删除原始素材或客户关联关系
- 客户打开已删除页面对应的链接时，提示「页面已被删除」

#### 4.3.7 链接访问与客户识别

> **功能归属**：购房客户打开链接、完成身份认证和查看分享页面发生在 HOMEVISTA 客户访问端，不是 VISTA Link 页面库内的操作。本节保留在页面库中，用于说明固定链接被打开后的访问规则，以及 VISTA Link 需要提供和保存的相关数据。

**功能优先级：**

| 功能 | 优先级 |
|---|---|
| 通过无参数固定链接识别客户并查看分享页面 | P0 |
| 通过带参数访问地址识别客户并查看分享页面 | P1 |
| 通过公开固定链接直接查看分享页面 | P1 |

购房客户打开分享链接时，系统先检查链接状态和公开状态。公开链接允许未识别访客直接查看；非公开链接通过客户标识参数、客户访问会话或客户身份认证识别客户，未识别客户不能查看内容。

**访问流程：**
1. 购房客户打开销售人员分享的访问地址
2. 系统检查固定链接状态：
   - 对应分享页面已删除 → 显示「页面已被删除」，流程结束
   - 已停用 → 显示失效提示，流程结束
   - 启用 → 继续下一步
3. 系统检查固定链接公开状态：
   - 已公开，且没有有效客户标识参数或客户访问会话 → 直接展示分享页面，不创建客户或客户访问记录，流程结束
   - 已公开，且存在有效客户标识参数或客户访问会话 → 继续识别客户
   - 未公开 → 继续识别客户
4. 系统检查访问地址中的客户标识参数：
   - 参数有效且对应客户未删除 → 识别为该客户
   - 参数无效或对应客户已删除 → 按无参数固定链接处理
   - 参数对应客户与当前浏览器会话中的客户不同 → 展示脱敏身份确认页面，默认继续使用当前浏览器身份；访客也可切换为访问地址指定的客户，系统不能直接覆盖当前身份
5. 访问地址没有有效客户标识参数时，系统检查当前浏览器会话：
   - 会话有效且对应客户未删除 → 识别为该客户
   - 会话指向已删除客户 → 使原会话失效，展示身份认证页面
   - 没有有效会话 → 展示身份认证页面
6. 身份认证页面要求访客输入邮箱，并完成一次性验证码校验；验证码正确后才算认证成功。
7. 系统匹配或创建客户：
   - 认证邮箱已存在于当前客户列表 → 识别为已有客户
   - 认证邮箱在当前项目不存在 → 自动在当前项目创建新客户并生成客户编号；姓名取邮箱前缀，来源设为「链接访问认证」，状态使用当前项目默认状态，负责人为空
8. 系统检查该客户与当前固定链接的关系：
   - 已有关联关系 → 保留原关系
   - 尚未关联 → 建立关系，并记录来源为「客户访问认证」
9. 系统在当前浏览器保存客户访问会话凭证
10. 系统读取页面最新保存内容并展示分享页面；客户产生浏览或操作后，系统保存对应的访问行为记录

**规则：**
- 销售指定客户时，系统生成随机客户标识参数；参数不直接包含客户编号、邮箱、手机号等信息
- 同一固定链接与同一客户只保留一个有效客户标识参数，参数只对该固定链接有效
- 固定链接停用期间，带客户标识参数的访问地址不能访问；客户与固定链接的关系和客户标识参数继续保留
- 固定链接重新启用后，原带客户标识参数的访问地址恢复可用
- 删除客户后，该客户对应的客户标识参数永久失效
- 客户识别完成后，页面地址不再显示客户标识参数，避免购房客户从地址栏复制并转发带参数地址
- 有效客户标识参数可以直接识别客户，不再要求该客户完成邮箱验证码
- 带客户标识参数的访问地址仍指向原固定链接，不作为新的分享链接
- 客户访问会话凭证保存在当前浏览器中，不出现在访问地址中，也不是客户标识参数
- 非公开的无参数固定链接优先使用有效客户访问会话；无法识别时必须完成身份认证
- 同一访客在同一浏览器中访问同一项目下的其他无参数固定链接时，可继续使用有效会话，不重复认证
- 客户使用不同浏览器、清除 Cookie 或会话失效后，需要重新认证
- 带客户标识参数的访问地址被转发后，访问行为可能仍归入参数对应的客户；这是当前方案的已知限制
- 客户标识参数与当前浏览器身份冲突时，必须让访客确认身份，不能静默切换；选择当前浏览器身份时忽略本次参数并将行为归入当前客户，选择访问地址指定身份时更新浏览器会话
- 参数无效或对应客户已删除时，按无参数固定链接继续判断：链接公开则允许匿名查看，链接未公开则进入身份认证流程
- 公开链接允许未识别访客查看分享页面；未识别访客不创建客户、客户关联关系、客户访问会话或客户浏览记录
- 非公开链接的未识别访客不能查看分享页面
- 二维码对应无参数固定链接；公开链接扫码后可直接查看，非公开链接首次使用且没有有效会话时需要完成身份认证
- 邮箱验证码为 6 位数字，发送后 10 分钟失效，只能成功使用一次
- 验证码发送成功 60 秒后可以重新发送；重新发送后，之前的验证码立即失效
- 同一项目、同一邮箱连续 24 小时内最多发送 10 次；限制按邮箱计算，不按固定链接计算
- 连续输错 5 次后锁定 30 分钟；重新发送验证码不清除错误次数，验证成功后清除
- 验证成功后，当前浏览器在当前项目内保留 30 天客户访问会话
- 客户删除、访客主动切换身份或清除浏览器数据后，原客户访问会话立即失效
- 已删除客户不参与邮箱匹配
- 访客在原客户被删除后重新认证时，系统不恢复已删除客户；没有其他现有客户匹配时，系统创建新客户
- 新客户不继承已删除客户的链接关联关系或其他历史数据
- 客户关联的固定链接可以在客户详情和页面详情中查看
- 自动创建的客户姓名取邮箱前缀，销售人员可在客户列表中补充完整信息
- 通过链接访问认证自动创建的客户负责人为空；销售经理或项目管理员可以后续分配负责人
- 认证邮箱匹配到已有客户时，保留该客户当前的负责人
- 已识别客户每次成功打开页面时读取页面最新保存内容；页面保存新内容后，客户刷新、重新打开或继续请求页面内容时使用最新内容
- 系统不为单次访问保存可重新展示的旧页面副本
- 内容浏览、浏览操作和明确动作记录保存实际对象的名称、标识、主要参数和发生时间，不使用当前对象改写已经发生的历史行为
- 本次访问是否结束继续按 §4.6.3 和 HOMEVISTA 客户访问端已有规则判断
- VISTA Link 不负责发送分享链接或销售消息，也不要求销售选择发送渠道；邮箱验证码属于身份认证消息，只用于确认访问者邮箱

---

#### 4.3.8 现场讲解

- **优先级**：P1，不属于当前内部 MVP

现场讲解用于销售在售楼处、样板间或其他接待地点，使用分享页面最新保存内容向身边客户展示。现场讲解复用页面展示能力，但使用独立的讲解状态和讲解记录；普通页面预览、现场讲解和客户通过分享链接自主访问是三种不同场景。

**讲解记录：**
- 「讲解记录」是营销跟进中的次级页面，不作为左侧一级菜单，也不新增主要业务模块
- 该页面默认只展示当前登录销售在当前项目发起的现场讲解；项目管理员处理项目访问已停用成员留下的异常记录时，只展示 §4.3.8 允许处理的记录
- 列表按开始时间倒序展示讲解页面、关联客户或「未关联客户」、开始时间、结束状态、有效状态和页面前台总展示时长
- 可以打开讲解详情查看展示内容摘要；未关联客户的已结束记录可以在详情中关联已有客户或创建客户后关联
- 该页面主要用于处理未关联客户、未正常结束的讲解，以及查看销售自己当天讲过哪些页面
- 讲解已经关联客户后，日常查看以该客户的购房客户追踪为主
- 该列表不是团队统计，不提供按其他销售人员查看或比较的功能
- 销售误开始讲解或该记录不代表真实讲解时，可以将自己的已结束记录标记为「无效讲解」；标记前必须二次确认并填写理由
- 无效讲解保留原页面、时间、展示内容、操作人、操作时间和无效理由，但不进入任何客户的购房客户追踪，不参与待跟进客户最近活跃时间或最近行为，也不能继续讲解或修改客户关联
- 无效讲解不能恢复为有效记录；需要保留的真实讲解应重新开始并形成新记录

**开始入口：**
- 页面详情提供「现场讲解」操作；销售可以选择项目内已有客户，也可以选择「临时讲解」后直接开始
- 客户详情提供「现场讲解」操作；销售先选择当前项目内已保存且可用的页面，再开始讲解
- 临时讲解适用于客户临时到访、短时间咨询、客户资料尚未建立或销售暂时不知道客户身份的情况
- 开始前不要求选择预约，不记录预约到场，也不统计到场人数

**页面内容规则：**
- 现场讲解使用页面最新保存内容；页面保存新内容后，讲解页面刷新或重新请求内容时使用最新内容
- B 端创建的页面尚未首次保存时不能开始，入口不可用并提示「请先保存页面」
- A 端创建页面使用当前可用内容；来源页面下架或删除后不能开始或继续讲解
- 分享页面已删除时不能开始现场讲解
- 固定链接的启用、停用、公开和认证状态只控制客户对外访问，不影响销售在 VISTA Link 中进行现场讲解
- 页面、Widget 或素材后续更新或删除时，历史讲解记录继续保留讲解时实际打开对象的名称、标识和主要参数，不保存旧页面副本

**讲解中：**
- 进入后显示「现场讲解中」、讲解开始时间和「结束讲解」操作
- 页面内容、Widget 展示、项目主题和不同设备尺寸的显示能力可以复用现有页面预览与客户访问端的渲染规则
- 同一销售在所有设备和浏览器中同时只能有一条进行中的现场讲解记录；该限制由系统按用户判断，不能只依赖当前浏览器状态
- 销售在另一台设备或浏览器开始讲解时，如已有进行中的记录，系统展示原讲解并要求选择「继续讲解」或「结束讲解」，不能创建第二条进行中记录
- 销售已有未结束讲解时，再次进入该讲解可以继续；开始另一场讲解、切换项目或退出登录前，系统要求先结束原讲解
- 讲解期间可以从未关联客户状态关联项目内已有客户，或创建客户后关联
- 开始讲解前可以更换所选客户；讲解开始后或结束后需要修改客户关联时，讲解人可以改为当前项目内另一位未删除客户，但必须填写修改理由
- 修改客户关联不是一种讲解状态，不设置「关联错误」状态或标记；修改完成后以当前关联客户为准，修改前后的客户和理由保留在讲解记录中
- 修改客户关联后，记录从原客户的购房客户追踪中移除，并进入新客户的购房客户追踪；讲解记录保留修改前客户、修改后客户、修改理由、操作人和操作时间

**记录内容：**
- 讲解人和讲解人显示名称
- 所属项目
- 关联客户；临时讲解尚未关联客户时为空
- 分享页面和页面名称
- 首次开始时间、恢复时间、最后可靠记录时间、结束时间、异常处理时间和结束方式
- 实际打开过的内容或素材、第一次打开时间、最后一次打开时间和打开次数
- 每项内容在页面前台实际展示的时长；页面切到后台、设备锁屏或页面关闭后停止计算
- 页面前台总展示时长按讲解页面实际处于前台的时间计算；多个内容区域同时显示时不能重复相加
- 记录展示内容和时长只表示销售展示了什么，不表示客户关注、喜欢或具有购买意向

**结束与异常中断：**
- 销售点击「结束讲解」后正常结束，并查看本次讲解的页面、客户关联、开始与结束时间及展示内容摘要
- 销售关闭讲解页面时，系统尝试结束本次讲解；关闭浏览器、设备断电、网络中断或浏览器异常退出导致结束结果未保存时，记录标记为「未正常结束」
- 系统不按固定的无操作分钟数自动结束讲解；销售可能在同一内容上持续说明，无点击不能表示讲解已经结束
- 销售下次打开原讲解或开始另一场讲解时，如存在未正常结束的记录，系统要求选择「继续讲解」或「结束讲解」
- 未正常结束期间没有可靠展示结果的时间不计入内容展示时长
- 选择「继续讲解」时继续使用同一条讲解记录，并读取页面最新保存内容；首次开始时间不变，恢复时间另行保存，页面前台展示时长按各段可靠时长相加
- 选择「结束讲解」时，结束时间取异常发生前的最后可靠记录时间；本次选择的时间另记为异常处理时间，二者不能相互替代
- 讲解开始后页面保存新内容时，讲解页面刷新或重新请求内容后使用最新内容；来源页面下架、删除或分享页面被删除时，系统停止当前讲解，并保留已经可靠保存的展示记录
- 讲解中关联客户被删除时，当前讲解可以继续结束，客户显示为「已删除客户」；不能再把新讲解关联到已删除客户
- 当前项目停用、讲解人项目访问停用、统一账号登录失效、「进行现场讲解」权限或目标页面查看权限被收回时，系统停止讲解并将结束方式记为对应的权限或账号变化；已经可靠保存的展示记录继续保留
- 结束讲解后，如销售需要让客户自行查看，可以另外复制无参数固定链接或指定客户后复制访问地址；该操作属于对外分享，不属于现场讲解记录

**客户关联与查看：**
- 已关联客户的现场讲解显示在该客户的购房客户追踪时间线中，并明确标记为「现场讲解」
- 临时讲解结束后，讲解人可以关联项目内已有客户，或创建客户后关联；关联错误时可以按本节规则填写理由并修改客户关联
- 未关联客户的临时讲解只在讲解人自己的讲解记录中展示，不进入任何客户的购房客户追踪
- 讲解人始终可以在「讲解记录」查看自己记录的页面、时间、结束状态、有效状态和展示摘要；缺少「查看客户」权限时不显示关联客户身份或客户入口
- 查看已关联客户的身份和进入该客户的讲解记录，需要同时具备「查看客户」和「购房客户追踪查看」权限
- 讲解人项目访问被停用后不能进入当前项目；项目管理员可以查看并处理该成员留下的未正常结束、未关联客户或需要标记无效的讲解记录，但不能浏览该成员的其他正常记录
- 项目管理员处理停用成员记录时，结束未正常结束记录、修改客户关联或标记无效都必须填写理由，并保留处理人和处理时间
- 客户删除后，历史讲解记录保留，关联客户显示为「已删除客户」；恢复客户后恢复原关联显示，满 90 天最终匿名化后不再显示已清除的客户资料

**与客户访问统计的关系：**
- 现场讲解不经过固定链接，不产生客户访问会话，不触发客户身份认证
- 现场讲解不增加访问次数、浏览分享页面数、客户浏览内容数、平均访问时长、首次访问时间或最近访问时间
- 现场讲解不进入营销统计中的访问客户、页面排行、内容排行或客户排行
- 现场讲解不触发页面首次打开邮件通知
- 客户之后自行打开分享链接时，按 §4.3.7 和 §4.6 另行生成客户访问记录，不能与现场讲解合并
- 系统不根据现场讲解记录推断预约到场、客户兴趣、购买意向或客户状态，也不自动修改客户状态

---

### 4.4 AI 内容制作系统集成（后续）

AI 内容制作不属于当前 B 端需求范围，后续单独评审。历史内容见 [VISTA Link AI 相关历史需求](./archive/VISTA_Link_AI相关历史需求.md)。

### 4.5 AI 与智能体

AI 与智能体的产品目标、使用方式、业务能力、页面准备与保存、客户画像、统计问答、语言、权限、确认和验收规则，见独立的 [VISTA Link AI 与智能体产品需求文档](./VISTA_Link_AI与智能体产品需求文档.md)。

VISTA Link 标准业务页面右下角提供全局 AI 对话图标。用户点击后，在当前页面右侧打开对话面板，不跳转到独立一级菜单；登录、项目选择、购房客户访问和现场讲解页面不显示该入口。对话面板的项目、对象、权限和关闭规则以独立 AI PRD 为准。

该独立文档是 AI 与智能体功能的产品需求依据，但不改变本文已经定义的客户、素材、Widget、页面、固定链接、客户追踪、营销统计、系统设置和语言规则。AI 与智能体功能不属于当前 B 端 MVP，实施范围按独立文档处理。历史内容见 [VISTA Link AI 相关历史需求](./archive/VISTA_Link_AI相关历史需求.md)。

---

### 4.6 营销跟进

> 本节是后续数据追踪、购房客户追踪、营销统计和页面打开邮件通知的产品依据，不属于当前 B 端 MVP。各功能优先级在对应小节中标明。

#### 4.6.1 购房客户追踪

- **优先级**：P1

购房客户追踪用于查看单个客户的累计访问情况、时间变化、内容浏览分布、每次访问过程和已经关联客户的现场讲解。固定链接关系只用于筛选客户自主访问记录，不代表销售已经发送，也不代表客户已经收到。现场讲解在同一时间线中展示，但不进入客户自主访问累计数据。

**待跟进客户列表：**
- 列表展示当前项目内产生过客户自主访问记录，或已经关联现场讲解记录的客户
- 已删除客户不进入待跟进客户列表
- 待跟进客户列表不是客户状态，不新增「待跟进」或「已跟进」状态
- 列表默认按最近活跃时间倒序展示
- 列表展示客户姓名、负责人、最近活跃时间和一条最近行为
- 最近活跃时间取客户最近一次自主访问的最后活跃时间或最近一次现场讲解结束时间中的较晚者；未正常结束的讲解使用最后一个可靠记录时间
- 最近行为使用最近一次自主访问中最后一条已上报的内容浏览或客户操作记录，或最近一次现场讲解摘要中的较晚者
- 最近行为展示实际素材或内容名称和客观行为；内容浏览存在有效时长时显示时长，客户操作显示操作名称
- 最近行为来自现场讲解时必须显示「现场讲解」标识，不得表现为客户自主浏览或客户操作
- 无效讲解不用于计算最近活跃时间或最近行为
- 普通浏览操作只在客户追踪详情的访问过程中展示，不作为待跟进客户列表的最近行为
- 列表不根据停留时长自行标记「需要关注」、「长时间停留」等行为类型
- 客户没有负责人时，负责人字段留空
- 通过链接访问认证自动创建的客户进入列表后，销售经理或项目管理员可以从客户详情为其分配负责人

**权限规则：**
- 打开购房客户追踪需要「查看客户」和「购房客户追踪查看」功能权限
- 购房客户追踪显示当前项目内全部客户的追踪信息和浏览记录
- 分享页面访问记录从页面详情进入
- 打开分享页面访问记录需要「购房客户追踪查看」功能权限
- 用户必须可以查看目标固定链接
- 分享页面未删除时，页面详情中的访问记录入口还受分享页面查看范围限制
- 分享页面已删除时，历史访问记录继续在购房客户追踪中展示，原页面名称标记「页面已删除」
- 系统不向缺少「购房客户追踪查看」功能权限的用户展示待跟进客户列表、客户追踪入口或分享页面访问记录入口
- 这类用户直接访问上述内容时，系统拒绝访问

**客户追踪详情顶部：**
- 展示客户姓名和负责人
- 展示以下 6 项累计数据：
  - 访问次数
  - 浏览分享页面数
  - 浏览内容数
  - 平均访问时长
  - 首次访问时间
  - 最近访问时间
- 未选择固定链接时，6 项数据按该客户在当前项目的全部历史记录计算，不受详情页时间筛选影响
- 选择固定链接后，6 项数据改为按该客户通过该链接产生的全部历史记录计算，仍不受详情页时间筛选影响
- 浏览分享页面数按客户实际打开过的分享页面去重计算，同一页面重复打开只计 1 个
- 浏览内容数按「分享页面 + 实际内容或素材」去重计算，同一页面中的同一项内容重复浏览只计 1 个
- PDF 是 Widget 可以选择的素材，不作为 Widget 类型单独统计

**固定链接筛选：**
- 默认展示该客户全部固定链接的浏览记录
- 客户关联两条以上固定链接时显示筛选；只有一条或没有关联固定链接时不显示筛选
- 筛选项包含该客户关联的全部固定链接，并展示对应的分享页面名称和实际链接地址
- 分享页面已删除时，筛选项保留原页面名称并标记「页面已删除」；该固定链接仍可用于查看历史浏览记录，但不能进入已删除页面的编辑或预览页面
- 选择一条固定链接后，只展示该客户通过该链接产生的浏览记录
- 清除筛选后，恢复展示全部固定链接的浏览记录
- 已关联但尚未访问的固定链接仍可选择，选择后显示无浏览记录的空状态
- 停用的固定链接仍可用于查看历史浏览记录
- 固定链接筛选不改变客户基本信息
- 固定链接筛选同时作用于顶部累计数据、访问趋势、内容浏览情况和访问记录
- 选择固定链接后不展示现场讲解记录，因为现场讲解不通过固定链接；清除固定链接筛选后恢复展示

**时间筛选：**
- 时间筛选只作用于访问趋势、内容浏览情况、访问记录和现场讲解记录，不作用于顶部累计数据
- 默认显示最近 30 天
- 可选择最近 7 天、最近 30 天、全部时间或自定义开始和结束日期
- 详情页时间筛选独立于营销统计页的时间筛选

**访问趋势：**
- 位于顶部累计数据下方
- 使用折线图，横轴为日期，纵轴为该客户当天的访问次数
- 同一客户同一天访问 3 次，图中当天显示 3 次
- 不区分首次访问和回访
- 所选时间内没有访问的日期显示为 0
- 点击某个日期后，下方访问记录只显示该日期的记录

**内容浏览情况：**
- 位于访问趋势下方，先按分享页面分组，再展示该页面中客户实际浏览的素材或内容
- 页面分组展示页面名称、访问次数和累计有效访问时长
- 素材或内容项展示访问发生时的名称、素材类型和有业务意义的主要参数
- 户型图的主要参数可包含户型名称、结构和面积；其他素材按素材类型展示适合销售识别的主要参数
- 每一项按「分享页面 + 实际内容或素材」统计浏览次数和累计有效浏览时长
- 页面内的素材或内容默认按累计有效浏览时长从高到低排列
- 点击某一项后，下方访问记录只显示与该项有关的记录
- 来场预约等已经定义的明确动作在页面中统一以「客户操作」展示，并显示操作名称、发生次数和最近发生时间
- 某项没有有效浏览时长但产生了客户操作时，保留操作记录，不补造浏览时长
- 购房客户追踪页面不向销售展示 Widget 名称、Widget 类型或 Widget 实例编号

**访问记录：**
- 按每次访问展示分享页面名称、实际固定链接地址、进入时间和本次访问总时长
- 访问数据部分缺失时，该次访问显示「数据不完整」，并只展示和计算能够确认的记录
- 访问数据进入待检查时，该次访问显示「待检查」，并显示已提交的问题类型
- 可以查看访问记录的项目成员可以报告归属错误、重复计算、异常时长、非客户访问或其他数据问题
- 具备「纠正访问数据」功能权限的项目成员可以在访问记录中处理待检查数据
- 从分享页面访问记录进入时，按该页面的固定链接展示不同客户的访问记录，并显示客户姓名
- 单次访问过程按「发生时间 + 客观行为 + 具体对象 + 有效浏览时长」展示；只有该条记录包含完整有效时长时才显示时长
- 具体对象优先使用客户实际看到的内容、素材、列表条目、命名视角或地图地点名称，不显示技术事件名称
- 补充信息只展示对象在访问发生时的结构化参数，参数必须同时显示名称和值，并按对应内容类型的固定顺序排列
- 同一对象名称或参数值不得在同一条记录中重复展示；主行已经展示点击对象时，补充信息不再重复该对象
- 客户操作只展示操作名称、操作对象和发生时间，不显示第二行，也不展示预约时间、联系方式、处理结果等实际业务信息
- 每次访问按进入时间倒序展示，同一次访问内的行为按发生时间顺序展示

**访问记录的数据来源：**
- 分享页面名称、实际固定链接地址、进入时间、本次访问总时长和访问数据状态来自单次访问记录
- 客户实际浏览或操作过的内容、素材名称、分类和主要参数来自对应的访问行为记录，不读取当前对象来改写历史记录
- 浏览操作和客户操作的名称、具体对象与发生时间来自 HOMEVISTA 客户访问端按照对应 Widget 需求实际上报的结果
- Widget 实例只在系统内部用于确定记录所属的内容区域、还原顺序和计算数据，不作为销售页面的展示内容

**现场讲解记录：**
- 已关联当前客户的现场讲解与客户自主访问按时间顺序显示在同一时间线中，并使用「现场讲解」标签明确区分
- 现场讲解主记录展示讲解页面、讲解人、开始时间、结束时间、结束状态和页面前台总展示时长
- 讲解详情展示实际打开过的内容或素材、打开次数和页面前台展示时长
- 现场讲解不显示固定链接，不使用客户访问来源、客户访问会话或客户身份认证字段
- 现场讲解记录不能增加或改写顶部 6 项累计访问数据、访问趋势和内容浏览情况
- 未关联客户的临时讲解不进入客户追踪；讲解人后续关联客户后，记录才出现在该客户时间线中
- 讲解人修改客户关联后，记录从原客户时间线移除并进入新客户时间线；客户追踪不展示修改前客户和修改理由，这些信息只保留在讲解记录中
- 标记为「无效讲解」的记录从客户时间线移除，不再进入任何客户的购房客户追踪

**空状态和错误状态：**
- 所选时间内没有访问时，顶部累计数据保持不变，访问趋势、内容浏览情况和访问记录显示空状态
- 客户只有现场讲解、没有自主访问时，顶部 6 项累计访问数据按无访问显示；时间线正常展示现场讲解记录
- 选择客户尚未访问的固定链接时，显示「该客户还没有通过这条链接访问」，不显示错误
- 数据读取失败时显示错误提示和重试操作，不得显示为没有访问

**其他规则：**
- 单次访问使用三层记录：第一层是分享页面和固定链接，包含进入时间与本次访问总时长；第二层是页面中的内容区域，在系统内部对应 Widget 实例；第三层是该内容区域实际产生的内容浏览、浏览操作或明确动作
- 每个 Widget 分别定义需要上报的内容浏览、浏览操作和明确动作，并提供面向销售的对象名称、主要参数及是否具备可计算的有效时长；不同 Widget 不要求上报相同的内部操作
- VISTA Link 只使用 HOMEVISTA 客户访问端实际提供的记录，不根据页面结构、列表内容或相邻记录推断客户没有上报的行为
- 列表型 Widget 中存在多个条目，不表示客户逐项浏览了全部条目；只有具体条目的记录实际产生并上报后，该条目才进入访问过程
- 列表条目只有点击记录时，展示点击时间和具体对象，不推断详情已成功打开，也不补造浏览时长；只有另有完整的详情浏览记录时，才展示详情浏览及有效时长
- 3D 建筑外观只展示 Widget 实际上报的整体浏览、命名视角或立面等记录；旋转、缩放、拖动等未上报操作不展示
- 周边地图只展示 Widget 实际上报的整体浏览、地点分类、具体地点、路线或详情等记录；平移、缩放、回到中心等未上报操作不展示
- 同一具体对象多次产生并上报记录时，访问过程分别展示，汇总统计按实际记录次数计算
- 浏览操作不作为「客户操作」汇总；只有来场预约等已经定义的明确动作进入「客户操作」
- 客户追踪数据在内部保留 Widget 实例编号，用于区分内容所在位置和计算浏览数据，但不在销售页面展示 Widget 概念
- 每条历史明细保留访问发生时的页面名称、实际内容或素材名称、素材类型和用于展示的主要参数；页面、Widget 或素材后续修改或删除时，不改写已有历史明细
- 浏览操作和明确动作使用各 Widget 实际上报的名称、对象和发生时间；无法关联到具体对象时，只展示实际操作名称和所在内容区域，不补造对象
- 页面总时长、内容区域有效浏览时长和具体对象有效浏览时长是不同层级的记录；上层时长可以包含下层时长，不能把不同层级的时长相加
- 只有点击或切换记录时不产生有效浏览时长；有效浏览时长使用 C 端提供的开始、结束和有效时长结果，不根据点击时间推算
- 浏览记录必须标明固定链接和原分享页面名称
- 未删除的分享页面名称可以进入页面详情；是否可以查看页面详情按分享页面查看权限和素材访问范围判断
- 分享页面已删除时，历史访问记录保留，原页面名称标记「页面已删除」，且不能进入已删除页面的编辑或预览页面
- 客户识别来源、最后活跃时间和推定离开时间作为系统记录保留，不在购房客户追踪主界面展示
- 带客户标识参数的访问可以关联到对应客户与固定链接的关系；访问记录不对应某次链接复制或二维码展示
- 对来场预约等已经定义的操作，系统记录客户触发的结果；当前访问记录不保存或展示预约时间、联系方式、处理结果等实际业务信息
- 推定离开时间根据 HOMEVISTA 客户访问端最后一次有效行为确定，只用于计算本次访问总时长
- 行为记录不影响客户正常浏览
- 客户通过有效客户标识参数、邮箱验证码或已有浏览器会话完成识别，浏览行为自动归入该客户
- 一条链接可关联多个客户，每个客户的浏览行为各自独立归入
- 公开链接允许未识别访客查看，但匿名访问不进入购房客户追踪或营销统计；非公开链接的未识别访客不能查看
- 客户编号继续作为系统内部唯一标识，不在购房客户追踪和分享页面访问记录中展示
- 分享页面访问记录只展示客户姓名，不展示联系方式、备注等其他客户资料
- 客户已删除时，历史访问记录中的客户显示为「已删除客户」

#### 4.6.2 营销统计

- **优先级**：P2-A

营销统计用于查看当前项目在所选时间内的客户访问情况，不按角色显示不同统计内容。进入该菜单的用户看到相同的当前项目数据。

**权限规则：**
- 营销统计只使用一个功能权限：「查看营销统计」
- 具备该权限的用户可以进入营销统计并查看当前项目的全部统计
- 页面内不再按销售人员、销售经理或营销企划区分可见内容
- 不具备该权限时隐藏营销统计菜单；直接访问时系统拒绝访问
- 客户负责人筛选只是查看条件，不是数据权限

**页面筛选：**
- 页面使用一个公共时间筛选，默认显示本月
- 可选择本周、本月或自定义开始和结束日期
- 本周从本周一开始，统计至当天
- 本月从当月 1 日开始，统计至当天
- 修改时间后，整体访问情况、页面排行和客户排行按所选时间更新；进入页面统计详情时，详情使用相同的时间条件
- 提供「客户负责人」筛选，默认选择「不限负责人」
- 客户负责人选项包括「不限负责人」、当前项目中的负责人和「未分配」
- 「不限负责人」表示不按客户负责人限制统计范围，仍只统计产生过有效访问的数据，并包含未分配负责人客户的有效访问
- 负责人只按客户资料中的当前负责人判断，不按页面创建人、固定链接创建人或其他操作人判断
- 客户没有明确的专人负责人时归入「未分配」

**整体访问情况：**
- 位于营销统计页顶部
- 汇总当前项目全部分享页面；首次访问和回访按客户在当前项目的历史有效访问判断，不按单个页面分别计算
- 展示访问客户数、首次访问客户数和回访客户数
- 访问客户数按所选时间内产生过有效访问的客户去重计算
- 首次访问客户数按客户在当前项目的首次历史有效访问发生在所选时间内的客户去重计算
- 回访客户数按客户在当前项目的首次历史有效访问早于所选时间，且在所选时间内再次产生有效访问的客户去重计算
- 首次访问客户数和回访客户数互不重复，两者之和等于访问客户数
- 按日期展示当前项目全部分享页面的访问客户数，不区分首次访问客户和回访客户
- 同一客户同一天访问一个或多个分享页面、访问一次或多次，均只计 1 位访问客户
- 整体访问情况不展示页面数、Widget 数或素材数
- 不展示环比、同比、增加或下降比例，也不自动判断表现好坏

**页面排行：**
- 统计当前项目内各分享页面在所选时间内的访问情况
- 展示页面名称、访问客户数、访问次数、平均访问时长和最近访问时间
- 默认按访问次数从高到低排列；访问次数相同时，依次按访问客户数和最近访问时间排列
- 点击页面进入该页面的统计详情
- 页面已删除时保留历史统计，页面名称标记「页面已删除」；仍可进入该页面的历史统计详情，但不能进入已删除页面的编辑或预览页面

**页面统计详情：**
- 展示所选页面在当前筛选条件下的访问客户数、访问次数和平均访问时长
- 展示该页面中各项实际内容或素材的浏览客户数、浏览次数和累计有效浏览时长
- 内容默认按浏览客户数从高到低排列；浏览客户数相同时，依次按浏览次数和累计有效浏览时长排列
- 展示访问过该页面的客户，默认按客户通过该页面产生的访问次数从高到低排列
- 点击某项内容后，显示在当前筛选条件下浏览过该项内容的客户
- 点击客户进入该客户的购房客户追踪详情
- 从页面统计详情返回时，保留营销统计的时间和客户负责人筛选条件
- 页面统计详情不展示单次访问过程

**客户排行：**
- 客户排行包含所选时间内至少产生过 1 次有效访问的客户；同一客户重复访问或访问多个页面仍只列 1 行
- 创建或导入但没有访问记录的客户不进入客户排行
- 展示客户姓名、客户负责人、浏览页面数、访问次数、平均访问时长、最近访问时间、最近浏览内容和最近客户操作
- 最近浏览内容显示最后一条已上报的实际内容或素材名称，不展示 Widget 名称
- 最近客户操作只展示来场预约等已经定义的客观操作；没有时显示空值
- 默认按访问次数从高到低排列；访问次数相同时按最近访问时间倒序排列
- 支持按客户姓名搜索
- 点击客户进入该客户的购房客户追踪详情
- 用户没有「查看客户」或「购房客户追踪查看」权限时，仍可查看营销统计中的客户数据，但不显示进入客户追踪详情的操作
- 已删除客户在所选时间内产生过有效访问时，继续进入客户排行并显示为「已删除客户」，但不提供进入客户资料或客户追踪详情的操作
- 不展示客户分数、意向等级或系统判断的跟进优先级

**页面规则：**
- 营销统计只使用实际客户访问记录，不使用链接复制次数、二维码展示次数或发送渠道
- 访问数据异常时不进入营销统计；部分缺失时只使用能够确认的访问和行为结果，不推算缺失数据
- 内容统计只使用客户在分享页面中的实际浏览，不统计素材被加入分享页面的次数
- 客户状态和状态变更记录不进入营销统计
- 页面不提供 Excel、CSV、图片或 PDF 导出，也不提供打印或分享筛选结果
- 页面不根据停留时长、访问次数或点击动作推断客户意向
- 所选时间内没有客户访问时，显示「这段时间还没有客户访问」，不显示一排 0 或空图表
- 按客户负责人筛选后没有记录时，显示「该负责人名下暂时没有访问记录」，并提供选择「不限负责人」的操作
- 数据读取失败时显示错误提示和重试操作，不得显示为没有访问
- 页面显示统计数据最后更新时间；该时间表示统计数据最近一次实际生成或更新的时间，与时间范围、客户负责人、客户姓名搜索和页面操作无关

#### 4.6.3 数据记录与计算规则

- **优先级**：P1（C 端访问与 Widget 行为记录）

**一次访问：**
- 客户身份识别成功且分享页面成功打开后，开始一次访问并计入访问次数
- 访问开始时记录客户、分享页面、固定链接和开始时间；内容浏览、浏览操作和明确动作按实际发生分别记录
- 同一次访问中刷新页面或切换 Widget 不增加访问次数
- 客户关闭页面或连续无有效操作达到规定时长后，本次访问结束
- 本次访问结束后再次打开分享页面，新增一次访问
- 客户打开不同分享页面时，各自生成访问记录
- 页面成功打开后没有其他有效操作，仍计 1 次访问，本次有效时长为 0

**访问时长：**
- 一次访问从分享页面成功显示开始，到最后一次有效操作或系统判定的结束时间为止
- 超过连续无操作时限后的时间不计入有效访问时长
- 平均访问时长 = 已结束访问的有效访问时长总和 ÷ 已结束访问次数
- 尚未结束的访问不进入平均访问时长计算
- 有效操作、连续无操作时限、异常关闭处理和单次时长上限最终由 C 端需求定义；C 端上报结果需要支持本节已确认的 B 端统计

**计时与记录边界：**
- 同一客户、同一分享页面和同一固定链接已有访问尚未结束时，刷新或重复打开标签页仍算同一次访问
- 页面保存新内容后，当前访问在刷新、重新打开或继续请求页面内容时使用最新保存内容；已发生的访问行为记录不被改写
- 打开不同分享页面时分别生成访问记录
- 同一页面在多个标签页中的重叠时间不得重复累计
- Widget 或具体内容切换后的时长必须归入对应内容，不能重复计入两项并列内容
- 计时采集方式、有效操作判断、连续无操作时限、异常关闭处理和单次时长上限由 C 端需求与技术设计确定；B 端只使用最终访问与有效时长结果

**内容统计：**
- 单次浏览过程保留进入、离开、有效时长、Widget 实例和实际内容或素材；具体记录内容以对应 Widget 的需求为准
- Widget 实例用于内部计时和还原单次访问过程，不作为销售页面的展示或分组名称
- 购房客户追踪和营销统计按「分享页面 + 实际内容或素材」汇总；同一素材出现在不同分享页面时分别统计
- PDF 不作为 Widget，只作为某个 Widget 可以选择和展示的素材

**页面公共操作：**
- 页面公共操作指不属于任何 Widget、但有助于销售理解客户访问过程的页面操作
- 当前已确认记录成功切换语言；其他页面公共操作在独立统计定义中逐项审核后补充
- 切换语言记录切换前语言、切换后语言和发生时间，只进入客户追踪的访问时间线，不增加页面访问次数、内容浏览次数或客户操作次数
- 具体页面公共操作和各 Widget 面向 B 端统计提供的结果，集中在 [VISTA Link B 端统计需求定义](./VISTA_Link_B端统计需求定义.md) 中逐项确认

**Widget 上报与统一使用规则：**
- 每个 Widget 的需求分别确定需要上报的内容浏览、浏览操作和明确动作，以及对象名称、主要参数和有效时长条件
- 各 Widget 面向 B 端统计提供的具体内容由 [VISTA Link B 端统计需求定义](./VISTA_Link_B端统计需求定义.md) 逐项确认；该文档不替代本节的通用统计规则
- Widget 的具体统计定义尚未确认时，VISTA Link 不假定该 Widget 会提供某项浏览、操作或时长
- 列表条目、3D 命名视角、地图地点等具体对象只有实际产生并上报记录后才进入访问过程和相关统计；页面中存在该对象不等于客户浏览过该对象
- 点击、选择或切换记录只表示该操作已经发生，不表示目标内容已成功打开，也不产生有效浏览时长；详情浏览和有效时长需要对应的完整浏览记录
- 普通浏览操作是否同时形成内容浏览记录，由对应 Widget 的统计定义明确；B 端不能只根据点击、选择或切换记录自行增加内容浏览次数或浏览时长
- 未上报的旋转、缩放、拖动、平移等内部操作不展示、不统计，也不根据其他记录推断
- VISTA Link 保留 Widget 实例用于内部关联和计算，销售页面只展示内容区域、实际对象和客观行为

**客户统计：**
- 活跃客户指所选时间内至少产生过 1 次有效访问的客户
- 浏览分享页面数按实际成功打开过的分享页面去重计算
- 销售页面中的浏览内容数按「分享页面 + 实际内容或素材」去重计算；Widget 实例只在内部记录中保留
- 访问次数、浏览分享页面数、浏览内容数和浏览次数分别计算，不能互相替代

**日期归属：**
- 客户追踪和营销统计的日期范围统一按日本时间计算，开始日期和结束日期均包含在内
- 页面访问按进入时间归入日期和筛选范围；内容浏览、浏览操作和明确动作按各自发生时间归入日期和筛选范围
- 一次访问跨越日期时，页面访问次数和本次访问总时长归入进入日期；跨日后发生的内容浏览、浏览操作和明确动作归入实际发生日期
- 页面访问趋势按页面进入时间统计；内容排行和客户操作按对应记录的实际发生时间统计

**C 端至少需要记录：**
- 访问开始：客户、分享页面、固定链接和开始时间
- 访问结束：最后活跃时间、系统判定结束时间和有效访问时长
- Widget 浏览：进入时间、离开时间、Widget 名称、Widget 实例、实际内容或素材和有效浏览时长
- Widget 浏览操作：面向销售的操作名称、具体对象、发生时间和对应 Widget 定义的结构化参数
- Widget 明确动作：面向销售的操作名称、操作对象和发生时间
- 每条 Widget 浏览、浏览操作或明确动作记录至少能够关联客户、分享页面、固定链接、单次访问和 Widget 实例，并保留实际内容、素材或操作对象在发生时的名称与标识；浏览记录另外提供有效时长，操作记录不根据发生时间推算时长

**访问数据状态：**
- 正常：客户、固定链接、单次访问和实际操作对象能够确认，记录按本节规则进入客户追踪、营销统计和 AI 建议依据
- 部分缺失：本次访问可以确认，但部分浏览、操作、对象或结束结果缺失；系统保留能够确认的访问和行为，不补造缺失记录，并在单次访问中显示「数据不完整」
- 待检查：系统发现数据疑点，或项目成员已报告问题，但尚未确认应保留、纠正还是排除；待检查数据暂不进入营销统计或新的 AI 建议依据
- 异常：数据无法确认到客户、固定链接、单次访问或实际操作对象，或者与已保存记录重复、冲突；该数据不归入其他客户或链接，不进入客户追踪、营销统计或 AI 建议依据
- 已排除：经系统检查或人工确认为机器人、自动监测、内部测试、重复数据或其他无效访问；已排除数据保留排除原因，不进入客户追踪、营销统计或 AI 建议依据
- 延迟到达的数据能够确认归属时，按实际发生时间补入原访问，并更新访问数据状态；不能确认时继续按异常数据处理
- 访问数据状态只说明记录是否完整可用，不表示客户意向、关注程度或购买可能性

**统计数据可靠性：**
- 同一次真实访问只能计算一次；刷新、重复标签页和重复到达的数据不得增加访问次数或重复累计时长
- 每条页面访问、内容浏览和客户操作都必须能够确认对应的客户、分享页面、固定链接和单次访问；内容浏览和客户操作还必须能够确认实际对象
- 客户追踪和营销统计使用同一批有效访问记录；明细和汇总不一致时，不得以任一方代替另一方显示为正常结果
- 统计结果必须可以返回构成该结果的客户访问和内容记录；无法返回依据时，该结果标记为不可确认

**非客户访问：**
- 系统应识别机器人、自动监测、内部测试和其他非购房客户产生的访问
- 非客户访问的识别与排除规则由系统统一提供，项目不能自行新增、修改或停用
- 已确认属于非客户的访问不进入客户追踪、营销统计和 AI 建议依据
- 暂时无法确定是否属于非客户的访问进入待检查，不得直接算作正常客户访问
- 非客户访问的具体识别方式、判断条件和误判处理由技术设计确定

**数据问题报告与纠正：**
- 可以查看某条访问记录的项目成员可以报告问题；报告时必须选择问题类型，并可以补充说明
- 问题类型包括归属错误、重复计算、异常时长、非客户访问和其他数据问题
- 问题提交后，访问数据进入待检查；系统保留报告人、报告时间、问题类型和说明
- 具备「纠正访问数据」功能权限的项目成员可以确认原记录有效、更正客户归属，或将重复、非客户及其他无效记录标记为已排除
- 更正客户归属时，只能选择当前项目内未删除客户；无法确认正确客户时，将记录排除，不归入推测的客户
- 数据纠正不提供直接填写访问次数、浏览次数或时长的操作；不可靠的局部记录按对应数据状态保留或排除
- 确认纠正时必须填写理由；系统保留纠正前结果、纠正后结果、操作人、操作时间和理由
- 访问数据纠正只改变该记录后续的归属、展示和计算结果，不删除原始访问事实和已保存的纠正历史

**统计重新计算：**
- 延迟数据补入、访问数据状态改变或纠正确认后，受影响的客户追踪和营销统计必须重新计算
- 重新计算应同时更新访问次数、访问客户数、浏览次数、有效时长、排行和最近活动等受影响结果，不得只修改明细而保留旧汇总
- 重新计算完成前，受影响页面显示「数据更新中」；完成后更新统计数据最后更新时间
- 重新计算失败时，页面显示失败和重试操作，不得将未更新的结果显示为最新数据

**访问基础信息：**
- 每次访问需要保留访问 IP 地址、User-Agent 原始值、解析后的浏览器名称与版本、操作系统名称与版本、设备类型和来源地址（Referer）
- 访问基础信息归属于单次访问记录，不作为访问次数、浏览次数或客户意向等独立统计指标
- Referer 允许为空，也不能单独用于判断分享链接的实际发送渠道
- 这些字段供访问记录还原、问题排查和后续统计使用；当前购房客户追踪和营销统计原型不展示这些详细字段
- 原型只表达已经确认的页面结构和交互，不负责真实采集、解析或保存访问基础信息

**历史记录：**
- 删除客户后保留历史访问和统计，客户统一显示为「已删除客户」
- 时间筛选按本节“日期归属”判断；客户在访问发生后被删除，不影响该访问进入对应时间段的统计
- 多个已删除客户仍按各自原客户标识分别计算，不因界面统一显示为「已删除客户」而合并
- 删除分享页面后保留访问时的页面名称并标记「页面已删除」，不能进入已删除页面的编辑或预览页面
- 页面后续删除 Widget 时，历史记录保留访问时的 Widget 名称和实际内容或素材
- 删除素材后保留访问时的素材名称并标记「素材已删除」，不能再进入素材详情
- 停用固定链接不删除历史访问和统计
- 历史记录使用访问发生时保存的名称和对象信息，不因页面之后修改而改写
- 已保存的访问行为记录不因页面之后修改、素材更新或对象删除而改写
- 删除客户、页面、Widget、素材或停用链接，不减少已经产生的历史统计

**更新时间：**
- C 端行为事件发生后，应在 5 秒内开始上报；上报失败时自动重试
- 访问开始后，访问次数和活跃客户数据应在 1 分钟内更新
- 访问结束后，有效访问时长、平均访问时长和内容浏览时长应在 5 分钟内更新
- 延迟到达的数据按实际发生时间补入对应历史统计
- 统计页面打开时获取最新数据；页面保持打开时每 1 分钟自动刷新，并提供手动刷新操作
- 页面打开、自动刷新和手动刷新均查询当前可用的最新统计；没有产生新的统计数据时，最后更新时间保持不变
- 页面不显示客户当前是否在线
- 页面显示统计数据最后更新时间
- 数据请求失败时显示错误提示和重试操作，不得显示为没有数据

**不在本节范围内：**
- AI 跟进建议和客户意向判断

#### 4.6.4 页面打开邮件通知

- **优先级**：P2-B

页面打开邮件通知用于在客户首次通过某条固定链接成功打开分享页面时通知该客户的负责人。通知与营销统计菜单相互独立，不要求收件人具备「查看营销统计」权限。

**触发规则：**
- 客户完成身份识别并成功打开分享页面后才触发判断
- 认证页面、B 端页面预览和页面打开失败都不发送通知
- 同一客户第一次通过某条固定链接成功打开页面时发送一次
- 刷新、重复打开标签页、同一次访问中的 Widget 切换和之后再次访问都不重复发送
- 系统按客户和固定链接去重，邮件重试不能产生重复通知

**收件人：**
- 收件人为该客户的当前负责人
- 客户没有负责人时不发送，也不改发给页面创建人或项目管理员
- 收件人账号必须处于启用状态，并同时具备「查看客户」和「购房客户追踪查看」权限
- 收件人不需要具备「查看营销统计」权限
- 客户首次打开时没有负责人，之后才分配负责人，不补发过去的通知

**邮件内容：**
- 客户姓名
- 分享页面名称
- 首次打开时间
- 进入该客户追踪详情的 VISTA Link 地址
- 邮件不展示客户意向、浏览时长或系统判断的关注程度

**异常处理：**
- 邮件发送失败不影响客户浏览
- 邮件服务自动重试时不得重复发送同一次通知

### 4.7 系统设置

#### 4.7.1 账户范围

**功能优先级：**

| 功能 | 优先级 |
|---|---|
| 浏览项目成员列表 | P1 |
| 查看项目成员详情 | P2-A |
| 邮件邀请项目成员 | P1 |
| 编辑项目成员显示名称和角色 | P1 |
| 停用或启用项目访问 | P2-A |

A 端运营管理端提供已开通的企业、租户、项目和首个项目管理员关系。其他项目成员由具备「邀请成员」功能权限的项目成员通过邮件邀请。VISTA Link 使用 HOMEVISTA 统一账号，不创建独立账号和密码；VISTA Link 只管理用户可以进入的项目，以及用户在各项目中的角色和权限。

**当前用户信息：**
- 统一账号姓名和绑定邮箱
- 当前项目
- 当前项目角色：一个或多个角色
- 当前项目功能权限
- 当前项目访问状态

**项目成员列表：**
- 当前项目显示名称和统一账号绑定邮箱
- 项目访问状态
- 角色摘要

**规则：**
- 用户必须先完成登录，才能进入项目选择
- 统一账号状态决定用户能否登录 VISTA Link；项目成员状态决定用户能否进入对应项目
- 项目成员关系只代表用户可以进入当前项目，账号由 HOMEVISTA 统一账号管理
- 项目成员状态包括待接受、启用和停用；待接受成员尚不能进入项目
- 系统内置销售人员、销售经理、营销企划和项目管理员 4 个默认角色
- 每个项目可以基于功能权限点创建自己的自定义角色
- 待接受和启用状态的项目成员必须绑定一个或多个当前项目角色
- 角色用于分配功能权限；一个成员绑定多个角色时，功能权限合并计算
- 同一登录用户在不同项目中的成员状态、角色和功能权限互不影响
- 项目成员的数据范围由当前项目和各业务对象规则决定，不在角色中配置
- 用户最终可执行的操作由功能权限和数据权限共同决定
- 具备相应系统设置功能权限的项目成员，可以在当前项目内管理 VISTA Link 项目成员、角色和权限
- 四个默认角色中，只有项目管理员默认具备系统设置功能权限；自定义角色可以按需配置这些权限
- 本节按默认执行角色「项目管理员」描述系统设置操作；自定义角色获得相同功能权限时，也可以执行对应操作
- 项目管理员的成员、角色、权限、基础配置、分享页面和固定链接管理范围均为当前项目
- 邀请项目成员时填写当前项目显示名称和邮箱，并选择一个或多个当前项目角色
- 当前项目显示名称为必填项，去除首尾空格后不能为空
- 当前项目显示名称只在当前项目使用，不修改用户的账号姓名或其他项目中的显示名称
- 邀请邮箱用于识别已有统一账号或创建新统一账号，并在成员管理中只读展示；用户登录时使用统一账号当前支持的登录方式
- 系统先发送项目邀请邮件；发送失败时提示失败并提供重试，不创建项目成员关系，也不在成员列表中显示
- 项目邀请邮件发送成功后，系统创建「待接受」状态的项目成员关系
- 项目邀请邮件包含项目名称、邀请人、VISTA Link 入口和邀请链接；邀请链接有效期为 7 天
- 已有统一账号的用户只收到项目邀请邮件，并使用原账号和密码；新用户同时由统一账号通过另一封邮件获得初始密码
- 新用户使用初始密码登录时必须先设置新密码；初始密码期限和处理方式使用统一账号规则
- 成员管理为待接受成员提供「重发邀请」操作；每次发送成功后等待 60 秒可以再次发送，重发成功后旧邀请链接立即失效
- 一次邀请最多成功发送 10 次，首次发送计入；发送失败不计次数，达到 10 次后不再允许重发，次数不随时间恢复
- 用户通过有效邀请链接完成统一账号登录或首次密码设置后，成员状态从「待接受」变为「启用」
- 同一用户在同一项目中只能有一条项目成员关系
- 具备「调整成员角色」功能权限的项目成员可以修改待接受或启用成员在当前项目中的显示名称，并设置一个或多个角色；成员接受邀请后按当时最新角色获得权限
- 修改成员显示名称时，去除首尾空格后不能为空
- 修改成员显示名称不改变该用户的统一账号姓名、绑定邮箱或其他项目中的显示名称
- 成员显示名称变更记录修改前名称、修改后名称、操作人和操作时间
- 调整成员角色时，不能移除成员的最后一个角色
- 当前成员不能移除自己的项目管理员角色
- 当前项目只剩一名项目管理员时，任何人都不能移除该成员的项目管理员角色
- 角色变更记录目标成员、修改前角色、修改后角色、操作人和操作时间
- 启用状态的项目成员可以被停用；停用不删除项目成员、角色或历史数据
- 当前成员不能停用自己，也不能停用当前项目最后一名处于启用状态的项目管理员
- 停用成员前需要确认；确认内容显示该成员当前负责的客户数量，但不要求先转移客户；启用成员不需要二次确认，选择启用后直接生效
- 停用成员后，该用户不能再选择或切换到当前项目
- 停用成员后，其负责的客户继续保留该负责人，并显示为「姓名（已停用）」；客户资料、固定链接关系、访问地址和历史记录不受影响
- 已停用成员不再出现在新建客户、分配负责人和转移负责人的选择项中
- 重新启用成员后，其原负责客户恢复显示正常负责人名称，不需要重新分配
- 用户正在使用被停用的项目时，系统立即结束该项目上下文并返回项目选择页；其他项目访问不受影响
- 重新启用成员后，该项目重新出现在用户的可访问项目列表中
- 成员状态变更记录目标成员、修改前状态、修改后状态、操作人和操作时间
- A 端负责企业、租户、项目和首个项目管理员关系的开通
- VISTA ADMIN 负责项目素材的制作与上线
- 项目管理员不能修改其他用户的统一账号姓名、绑定邮箱、密码、账号状态或其他项目的成员关系

#### 4.7.2 默认角色

- **优先级**：P2-A

默认角色提供当前项目的初始功能权限。每个项目可以按需要创建自定义角色，也可以调整本项目默认角色的功能权限。角色和权限不会自动复制到其他项目。

默认角色名称固定且不能删除。默认项目管理员角色必须保留以下功能权限，避免当前项目失去系统设置入口：查看成员、邀请成员、调整成员角色、停用或启用项目访问、查看角色、创建角色、修改角色、删除角色、配置权限、查看操作日志。

| 默认角色 | 默认用途 |
|---|---|
| 销售人员 | 查看项目总览；查看和编辑项目内共享的客户资料；查看购房客户追踪和营销统计；查看和分享 A 端创建的页面；使用自由模板新建页面或复制 A 端创建的页面，并管理自己创建的页面和固定链接 |
| 销售经理 | 具备销售人员的查看与操作权限，并可分配或转移客户负责人 |
| 营销企划 | 查看项目总览；维护素材标签和素材说明；查看营销统计，默认不查看单个客户追踪 |
| 项目管理员 | 查看项目总览；管理当前项目内成员、角色、权限和基础配置；查看操作日志、购房客户追踪和营销统计；查看当前项目内全部分享页面，并管理当前项目内全部固定链接的启停状态 |

#### 4.7.3 功能权限

**功能优先级：**

| 功能 | 优先级 |
|---|---|
| 按预设权限限制用户操作 | P0 |
| 浏览角色列表和角色详情 | P2-A |
| 创建自定义角色 | P2-B |
| 修改自定义角色名称 | P2-B |
| 删除角色 | P2-C |
| 配置角色功能权限 | P2-A |

功能权限说明用户能做什么。

**说明：**
- 本节列出功能权限点和各权限的默认使用角色。
- 默认角色可执行哪些操作，以 §4.7.5 为准；数据范围按 §4.7.4 判断。

| 对象 | 功能权限 | 默认角色说明 |
|---|---|---|
| 成员 | 查看成员、邀请成员、调整成员角色、停用或启用项目访问 | 默认给项目管理员 |
| 角色 | 查看角色、创建角色、修改角色、删除角色、配置权限 | 默认给项目管理员 |
| 操作日志 | 查看操作日志 | 默认给项目管理员 |
| 客户 | 查看客户、创建客户、编辑客户、删除客户、导入客户、导出客户、分配或转移客户负责人 | 项目管理员、销售经理和销售人员可查看和编辑项目内共享的客户资料；具备「导出客户」功能权限的用户可以导出当前可查看的客户；营销企划默认不查看单个客户资料 |
| 客户状态 | 修改客户当前状态、维护状态列表 | 项目管理员、销售经理和销售人员可修改项目内客户的当前状态；状态列表仅项目管理员维护 |
| 客户标签 | 使用客户标签、新增客户标签、维护客户标签库 | 项目管理员、销售经理和销售人员可为项目内客户使用标签；销售人员新增标签默认可用，可由当前项目关闭；标签库仅项目管理员维护 |
| 素材 | 查看素材、维护素材说明 | 项目管理员、销售经理、销售人员和营销企划可查看当前项目素材及来源端支持的内部内容预览；素材预览只供 B 端内部核对，不提供对外分享地址；项目管理员和营销企划可维护素材说明；销售经理和销售人员的素材查看入口位于分享页面 |
| 素材标签 | 查看素材标签、使用素材标签、新增素材标签、维护素材标签库 | 销售经理和销售人员可在选材时查看标签，但默认不能给素材添加、移除或新增标签；项目管理员和营销企划可使用、新增和维护标签库 |
| 分享页面 | 查看分享页面、新建分享页面、复制页面、编辑分享页面、删除分享页面 | A 端创建的页面可预览、分享和复制，不可由项目成员直接编辑或删除；销售经理和销售人员可新建页面，复制 A 端页面或自己创建的 B 端页面，并预览、保存和管理自己创建的页面；不提供公司内共享设置 |
| 现场讲解 | 进行现场讲解 | 项目管理员、销售经理和销售人员默认可进行现场讲解；开始、继续、结束、关联客户、修改客户关联和标记无效均使用该权限；营销企划默认不可用 |
| 分享链接 | 查看固定链接、复制无参数固定链接、指定客户并复制带参数访问地址、展示二维码、设置或取消公开访问、停用或启用链接、查看关联客户 | 项目管理员可查看、复制、指定客户、展示二维码，并设置当前项目内全部固定链接的公开和启停状态；其他具备相应功能权限的项目成员可复制、指定客户或展示自己有权查看的固定链接，但只能设置本人创建页面对应链接的公开和启停状态；指定客户和查看关联客户时还需具备「查看客户」功能权限 |
| 营销跟进 | 购房客户追踪查看、查看营销统计、纠正访问数据 | 项目管理员、销售经理和销售人员默认拥有购房客户追踪查看和营销统计查看权限；营销企划默认只拥有「查看营销统计」；「纠正访问数据」默认给项目管理员和销售经理，其他角色可通过权限配置获得 |

**现场讲解权限说明：**
- 开始、继续和结束讲解需要同时具备「进行现场讲解」和目标页面的「查看分享页面」权限
- 从客户详情开始、选择已有客户、关联客户或修改客户关联时，还需要「查看客户」权限
- 讲解中或结束后创建客户时，还需要「创建客户」权限
- 讲解人可以从「讲解记录」查看自己的记录；未关联客户的临时讲解不向其他成员展示，只有项目管理员处理项目访问已停用成员留下的异常记录时例外
- 已关联客户的现场讲解进入客户追踪后，查看者需要同时具备「查看客户」和「购房客户追踪查看」权限
- 项目管理员只能按 §4.3.8 处理项目访问已停用成员留下的异常记录；该范围不允许查看其他成员的正常讲解记录

**角色规则：**
- 角色名称为必填项，去除首尾空格后不能为空
- 默认角色名称固定，不能修改
- 自定义角色名称在当前项目内不能与默认角色或其他自定义角色重名
- 创建自定义角色时必须选择至少一个功能权限
- 默认角色和自定义角色都必须保留至少一个功能权限
- 默认项目管理员角色必须保留的功能权限见 §4.7.2
- 默认角色不能删除
- 已分配给成员的自定义角色不能删除；移除所有成员的角色绑定后才能删除
- 角色名称、功能权限或删除状态发生变化时，记录目标角色、修改前内容、修改后内容、操作人和操作时间
- 创建角色和配置权限时，功能权限按左侧菜单对应的一级模块分组展示；组内列出该模块的具体功能权限
- 角色列表只展示角色名称、角色类型和当前使用人数，不展示功能权限数量

**标签权限说明：**
- 使用标签：给自己可编辑的数据添加或移除标签
- 新增标签：打标签时创建新的项目内标签
- 维护标签库：修改标签名、合并标签、删除未使用标签、查看使用数量
- 是否允许销售人员新增客户标签，由当前项目权限配置决定，默认允许
- 素材标签的使用、新增和标签库维护默认由营销企划和项目管理员执行；如需给其他角色开放，由项目管理员通过角色权限配置

#### 4.7.4 数据权限

**功能优先级：**

| 功能 | 优先级 |
|---|---|
| 按预设数据范围限制用户访问 | P0 |

数据权限说明用户能看哪些数据、能改哪些数据。

数据范围不作为角色字段，也不在角色页面中配置。系统根据当前项目和业务对象的固定规则确定成员可以访问的数据。

| 数据范围 | 适用规则 |
|---|---|
| 仅本人 | B 端创建页面和固定链接的查看、编辑、删除和普通成员启停范围按创建人判断；项目管理员仍可查看基本信息 |
| 项目内客户 | 「查看客户」功能权限允许用户查看当前项目内全部客户的基础资料；「编辑客户」功能权限允许用户修改这些资料 |
| 当前项目 | 客户、配置、素材、分享页面、固定链接、现场讲解记录、访问记录、统计和操作日志只在当前项目范围内使用；用户通过全局项目切换进入其他有权访问的项目 |

**数据权限规则：**
- 查看客户列表和客户详情需要「查看客户」功能权限
- 修改客户基础资料还需要「编辑客户」功能权限
- 客户列表和客户详情覆盖当前项目内全部客户
- 查看操作日志需要「查看操作日志」功能权限，入口统一放在系统设置中
- 导出客户需要「导出客户」功能权限，导出范围不得超出用户当前可查看的客户
- 导出结果为当前筛选条件下的客户
- 客户负责人用于标记客户的主要跟进人
- 素材、分享页面和固定链接都在当前项目范围内使用
- 用户不能在 B 端查看、选择或复制其他项目的数据
- 项目管理员可以查看当前项目内全部分享页面和固定链接基本信息
- A 端创建的页面对具备对应功能权限的项目成员可见，可预览、分享和复制，不可直接编辑或删除
- B 端创建的页面对创建人和项目管理员可见，不向其他项目成员展示
- 销售只能编辑和删除自己创建的页面；项目管理员查看其他成员创建的页面，不代表可以编辑或删除
- 页面不提供「私有 / 公司共享」切换设置
- 项目管理员可以停用或启用当前项目内全部固定链接；销售人员和销售经理的手动启停范围为本人创建的分享页面对应链接
- 项目管理员可以设置当前项目内全部固定链接的公开状态；销售人员和销售经理只能设置本人创建页面对应链接的公开状态
- 分配或转移客户负责人后，只改变该客户的主要跟进人
- 分配或转移客户负责人不会把固定链接或分享页面转交给新的客户负责人
- 客户已有的固定链接关联关系继续保留
- 登录成功后，系统读取用户处于启用状态的可访问项目
- 用户选择项目后，系统保存当前项目标识和项目名称
- 页面、客户、素材、固定链接、统计和系统设置请求自动限定在当前项目
- 项目总览只汇总当前项目数据，不提供跨项目合计或项目切换筛选
- 用户可以从全局项目入口切换到其他可访问项目；业务页面内部不提供项目筛选
- 当前项目已停用、删除或用户项目访问被停用时，系统结束当前项目上下文并返回项目选择页
- 没有目标功能或对象访问权限时，系统进入「401 无权限」页面，展示无权限提示并提供「返回上一页」
- 对象已删除时不使用无权限提示，显示「内容不存在或已被删除」
- 直接访问其他项目的对象地址且无权进入该项目时，进入「401 无权限」页面

#### 4.7.5 默认角色权限

- **优先级**：P0

| 权限 | 项目管理员默认 | 销售经理默认 | 销售人员默认 | 营销企划默认 |
|---|---|---|---|---|
| 成员管理 | 可用 | 不可用 | 不可用 | 不可用 |
| 角色和权限配置 | 可用 | 不可用 | 不可用 | 不可用 |
| 查看操作日志 | 可用 | 不可用 | 不可用 | 不可用 |
| 客户管理 | 可查看和编辑项目内全部客户 | 可查看和编辑项目内全部客户 | 可查看和编辑项目内全部客户 | 不可用 |
| 导入客户 | 可用 | 不可用 | 不可用 | 不可用 |
| 导出客户 | 可导出当前有权查看的客户 | 可导出当前有权查看的客户 | 可导出当前有权查看的客户 | 不可用 |
| 删除客户 | 可用 | 不可用 | 不可用 | 不可用 |
| 查看和恢复已删除客户 | 可用 | 不可用 | 不可用 | 不可用 |
| 分配或转移客户负责人 | 可用 | 可用 | 不可用 | 不可用 |
| 修改客户当前状态 | 可用于项目内客户 | 可用于项目内客户 | 可用于项目内客户 | 不可用 |
| 维护客户状态列表 | 可用 | 不可用 | 不可用 | 不可用 |
| 客户标签使用 | 可用于项目内客户 | 可用于项目内客户 | 可用于项目内客户 | 不可用 |
| 新增客户标签 | 可用 | 可用 | 默认可用，可由当前项目关闭 | 不可用 |
| 维护客户标签库 | 可用 | 不可用 | 不可用 | 不可用 |
| 项目总览 | 可用 | 可用 | 可用 | 可用 |
| 购房客户追踪查看 | 可用 | 可用 | 可用 | 不可用 |
| 查看营销统计 | 可用 | 可用 | 可用 | 可用 |
| 纠正访问数据 | 可用 | 可用 | 不可用 | 不可用 |
| 素材查看和预览 | 可查看当前项目素材及内部预览 | 可查看当前项目素材及内部预览 | 可查看当前项目素材及内部预览 | 可查看当前项目素材及内部预览 |
| 维护素材说明 | 可维护当前项目素材说明 | 不可用 | 不可用 | 可维护当前项目素材说明 |
| 素材标签使用 | 可用 | 不可用 | 不可用 | 可用 |
| 新增素材标签 | 可用 | 不可用 | 不可用 | 可用 |
| 维护素材标签库 | 可用 | 不可用 | 不可用 | 可用 |
| 分享页面查看 | 可查看当前项目内全部分享页面 | 可查看当前项目内 A 端创建的页面和自己创建的页面 | 可查看当前项目内 A 端创建的页面和自己创建的页面 | 可只读查看当前项目内 A 端创建的页面 |
| 新建、复制、编辑、保存和删除分享页面 | 可新建页面、复制 A 端页面或自己创建的页面，并管理自己创建的分享页面 | 可新建页面、复制 A 端页面或自己创建的页面，并管理自己创建的分享页面 | 可新建页面、复制 A 端页面或自己创建的页面，并管理自己创建的分享页面 | 不可用 |
| 进行现场讲解 | 可用 | 可用 | 可用 | 不可用 |
| 分享链接查看和使用 | 可查看、复制、指定客户或展示当前项目内全部固定链接；指定客户和关联客户入口还需「查看客户」权限 | 可查看、复制、指定客户或展示有权访问的固定链接；指定客户和关联客户入口还需「查看客户」权限 | 可查看、复制、指定客户或展示有权访问的固定链接；指定客户和关联客户入口还需「查看客户」权限 | 只读查看有权访问的固定链接基本信息 |
| 设置或取消公开访问 | 可用于当前项目内全部固定链接 | 可用于自己创建的分享页面对应链接 | 可用于自己创建的分享页面对应链接 | 不可用 |
| 停用或启用固定链接 | 可用于当前项目内全部固定链接 | 可用于自己创建的分享页面对应链接 | 可用于自己创建的分享页面对应链接 | 不可用 |

#### 4.7.6 权限判断规则

- **优先级**：P0

- 用户必须同时拥有功能权限和数据权限，才能完成对应操作
- 用户只有功能权限但没有数据权限时，可以看到入口，但不能操作无权数据
- 用户只有数据权限但没有功能权限时，不能执行对应操作
- 一个用户绑定多个角色时，功能权限合并计算
- 角色和权限只在当前项目内生效；同一用户切换项目后使用目标项目的成员状态和角色
- 数据范围不随角色合并；系统按当前项目和业务对象规则判断
- 权限变更即时生效；成员角色被修改后，当前项目访问状态失效，用户重新登录或重新进入项目后使用最新权限
- 权限被收回后，用户下一次读取或保存时停止操作，进入「401 无权限」页面并提示权限已变化；未保存内容不写入系统，不要求重新登录
- 没有权限的模块入口和操作入口隐藏；直接访问地址时仍按无权限规则处理
- 项目管理员查看客户和素材时，仍受数据权限限制
- 分享页面和固定链接在当前项目范围内使用，因此项目管理员可以查看当前项目内全部分享页面和固定链接基本信息
- 项目管理员默认可以停用或启用当前项目内全部固定链接
- A 端创建的页面不可由项目成员编辑或删除；B 端创建的页面只可由创建人编辑或删除
- 默认项目管理员角色必须保留的功能权限按 §4.7.2 执行
- 操作日志入口统一放在系统设置中；用户需要具备「查看操作日志」功能权限
- 客户导出跟随客户查看权限生效，每次导出记录操作日志

#### 4.7.7 客户访问端的分享链接访问规则

- **优先级**：P0

本节描述 HOMEVISTA 客户访问端使用分享链接时必须遵守的访问规则，不是项目成员的功能权限。

购房客户打开分享链接时，系统先检查分享页面、固定链接状态和公开状态，再按以下顺序处理：

- 对应分享页面已删除 → 提示「页面已被删除」
- 链接已停用 → 任何人打开都提示已失效
- 链接已公开且访客尚未识别 → 直接展示内容，不创建客户或客户浏览记录
- 带有效客户标识参数 → 识别为参数对应的未删除客户
- 客户标识参数无效或对应客户已删除 → 按无参数固定链接处理
- 无有效客户标识参数，但浏览器中有有效客户访问会话 → 识别为会话对应的客户
- 客户标识参数与浏览器会话中的客户不同 → 展示身份确认页面，由访客选择是否切换
- 链接未公开且仍未识别 → 展示邮箱验证码入口；认证成功后展示内容

**客户识别规则：**
- 邮箱必须通过一次性验证码确认，不能只凭访客输入的邮箱识别客户
- 认证邮箱已存在于当前项目时，识别为已有客户；不存在时在当前项目自动创建客户，姓名取邮箱前缀，来源设为「链接访问认证」，状态使用当前项目默认状态，负责人为空
- 认证邮箱匹配到已有客户时，保留该客户当前的负责人
- 认证后如客户与当前固定链接尚无关联关系，系统建立关系并记录来源为「客户访问认证」
- 认证或客户标识参数识别成功后，系统在当前浏览器保存客户访问会话凭证；该凭证不出现在访问地址中，也不是客户标识参数
- 一条分享链接可关联多个客户，各自保留独立的关联关系
- 公开链接允许未识别访客查看；非公开链接的未识别访客不能查看
- 已删除客户不参与邮箱匹配，新客户不继承已删除客户的历史数据
- 邮箱验证码的详细规则与 §4.3.7 一致

#### 4.7.8 购房客户数据权限

- **优先级**：P0

- 购房客户资料中不展示不必要的个人隐私信息
- 从外部导入的购房客户数据，只保存销售跟进所需字段
- 客户标识参数不得直接展示客户编号、邮箱、手机号等信息
- 操作日志不得记录邮箱验证码或完整客户标识参数

#### 4.7.9 操作日志

- **优先级**：P2-A

- 操作日志统一放在系统设置中；客户详情和其他业务详情不单独提供操作日志入口
- 具备「查看操作日志」功能权限的项目成员，可以查看当前项目内的操作日志
- 操作日志范围包括项目成员邀请、成员显示名称、成员角色和状态、角色与权限、客户资料与基础配置、素材说明、素材标签、分享页面新建/复制/编辑/删除、Widget 与页面内容修改、固定链接公开和启停、客户与固定链接关系变化，以及访问数据纠正结果
- 日志范围包括以下记录：
  - 项目成员邀请、成员显示名称、项目访问状态、成员角色、角色名称和角色功能权限的变更，以及自定义角色的创建和删除
  - 客户资料、客户状态、客户标签、负责人和客户与固定链接关联关系的变更，以及客户状态和客户标签的维护、客户导出和客户删除
  - 素材说明的新增、修改和清空；对象类型记为「素材」，素材说明记为修改字段
  - 素材标签的新增、改名、合并和删除
  - 固定链接公开状态、启停状态变化和分享页面删除
- 列表展示所属功能、对象类型、对象名称或编号、操作内容、修改前内容、修改后内容、操作人或系统来源和操作时间
- 用户可以按所属功能、对象类型、对象名称或编号、操作人和时间范围筛选
- 日志按操作时间倒序分页展示
- 日志只用于查看，不能修改或删除
- 客户删除和恢复均记录操作人、操作时间和内部删除记录编号；删除后 90 天内仅项目管理员可查看原客户资料；删除满 90 天完成最终匿名化后，日志不再展示已清除的客户资料，但继续保留操作人、操作时间和内部删除记录编号
- 日志不得记录账号认证信息、邮箱验证码或完整客户标识参数

---

### 4.8 登录与账号访问

登录与账号访问面向项目成员。VISTA Link 保持独立的产品名称和访问地址，使用 HOMEVISTA 统一账号和统一登录状态。统一账号管理登录方式、账号资料、密码、账号状态和登录安全规则；VISTA Link 管理项目成员关系、项目角色和功能权限。

用户从独立地址或邀请链接进入时，项目选择发生在进入 VISTA Link 业务界面之前；已登录用户打开有权访问的具体业务页面地址时直接进入对应页面。项目切换、个人信息和修改密码发生在业务界面内。购房客户不使用项目成员登录，其身份识别发生在 HOMEVISTA 客户访问端，规则见 §4.3.7。

#### 4.8.1 登录

- **优先级**：P0

**从 VISTA Link 独立地址进入：**
1. 用户打开 VISTA Link 独立地址。
2. HOMEVISTA 统一账号登录状态有效时，系统进入项目选择页。
3. 统一账号登录状态失效时，系统进入 HOMEVISTA 统一登录页；登录页说明登录后将进入 VISTA Link。
4. 用户使用统一账号当前支持的登录方式完成登录。
5. 登录成功后，系统返回 VISTA Link 项目选择页；即使只有一个可访问项目，也先展示项目选择页。

**从邀请链接进入：**
1. 用户打开邀请邮件中的 VISTA Link 地址。
2. 系统检查邀请链接仍有效且成员状态为「待接受」；邀请链接自发送成功起 7 天有效，重发成功后旧链接失效。
3. 用户完成统一账号登录；新用户先完成初始密码修改。
4. 系统把成员状态改为「启用」，再进入项目选择页并展示受邀项目。
5. 邀请链接无效、已过期、达到发送上限或邀请处理失败时，页面说明当前结果。
6. 当前登录账号与受邀账号不一致时，页面提示「当前登录账号与受邀账号不一致，请退出登录后重新打开邀请链接」。

**从 VISTA Link 业务页面地址进入：**
- 统一账号登录状态有效，且用户有权访问地址对应的项目和页面时，系统将该项目设为当前项目并直接进入对应页面
- 统一账号登录状态失效时，用户完成登录后进入项目选择页
- 用户无权访问地址对应的项目或页面时，按项目状态、项目成员状态和页面权限说明结果

**账号与安全规则：**
- 已有 HOMEVISTA 统一账号的用户继续使用原账号和密码
- 新用户使用初始密码登录 VISTA Link 时，需要先设置新密码，再进入项目选择页
- VISTA Link 的登录和修改密码遵循 HOMEVISTA 统一账号规则；需要额外验证、密码不符合要求或账号暂时无法登录时，页面说明原因，并引导用户完成相应操作
- 用户在统一登录页查看并同意 HOMEVISTA 隐私政策和用户条款，VISTA Link 使用该登录结果
- 统一账号状态决定用户能否登录 VISTA Link；项目成员状态决定用户能否进入对应项目
- 登录成功后，系统读取用户处于启用状态的可访问项目
- 用户从独立地址进入且没有可访问项目时，项目选择页提示「当前没有可访问的项目，请联系项目管理员」
- 旧 B 端账号是否纳入统一账号，由现有统一账号规则处理
- 登录服务暂时不可用时，页面说明当前无法登录并提供重试操作
- 账号认证信息不得写入 VISTA Link 操作日志

#### 4.8.2 忘记密码

- **优先级**：P1

**流程与规则：**
1. 用户从 HOMEVISTA 统一登录页选择「忘记密码」。
2. 用户按统一账号当前提供的方式完成身份确认并设置新密码。
3. 重置成功后，系统返回统一登录页。
4. 用户登录成功后进入 VISTA Link 项目选择页。
- 密码重置方式、身份确认、有效期、频率和结果提示使用统一账号规则

#### 4.8.3 选择项目

- **优先级**：P0

**选择流程：**
1. 系统以卡片形式展示当前用户处于启用状态的可访问项目。
2. 每张卡片展示默认意向图和项目名称；项目编号仅在需要区分同名项目时展示。
3. 用户选择一个项目。
4. 系统确认项目仍可用，且用户在该项目中的成员关系仍为启用。
5. 系统把所选项目设为当前项目。
6. 系统读取用户在当前项目中的角色和功能权限。
7. 系统进入 VISTA Link 业务界面。

用户选择项目后，系统默认进入项目总览。通过有权访问的具体业务页面地址进入时，仍直接进入该页面。

**异常与规则：**
- 即使用户只有一个可访问项目，也先展示项目选择页，不自动进入
- 用户没有可访问项目时，系统不进入业务界面，并提示联系项目管理员
- 用户通过有效邀请链接完成登录或首次密码设置、成员状态变为启用后，受邀项目出现在项目选择页
- 项目已停用、删除或用户项目访问已停用时，该项目不出现在可访问项目列表
- 用户选择项目，或已登录用户打开有权访问的具体业务页面地址后，系统才可以读取和展示该项目业务数据
- 项目选择不改变登录账号，也不改变用户在其他项目中的成员关系和角色
- 项目选择页不得展示用户无权访问的项目

#### 4.8.4 切换项目

- **优先级**：P0

**切换流程：**
1. 用户从左侧栏顶部的项目切换入口打开可访问项目列表。
2. 系统展示当前项目和其他处于启用状态的可访问项目。
3. 用户选择目标项目。
4. 系统确认目标项目仍可用，且用户在目标项目中的成员关系仍为启用。
5. 系统把目标项目设为当前项目。
6. 系统重新读取用户在目标项目中的角色和功能权限。
7. 系统刷新业务界面，只展示目标项目的数据和允许使用的模块。

**规则：**
- 项目切换入口不列出当前用户无权访问或已停用的项目
- 当前项目不作为可再次选择的目标
- 项目切换不复制、移动或修改任何业务数据
- 项目切换后，原项目的客户、素材、页面、固定链接、统计、系统设置和操作日志不得继续展示
- 同一用户在不同项目中的角色和功能权限分别生效
- 用户存在未保存修改时，系统在切换前提示未保存内容将丢失；用户取消时留在当前项目，确认后放弃未保存内容并继续切换
- 目标项目在确认前已停用、删除或用户项目访问已停用时，系统不切换，并刷新可访问项目列表
- 已登录用户直接打开其他项目的业务页面地址时，系统检查项目状态、项目成员状态和页面权限；检查通过后将目标项目设为当前项目并进入对应页面

#### 4.8.5 个人信息

- **优先级**：P1

**展示与操作：**
- 个人信息页面展示当前用户的统一账号姓名和绑定邮箱
- 用户可以修改自己的统一账号姓名，修改结果作用于 HOMEVISTA 统一账号
- 统一账号绑定邮箱在个人信息页面只读
- 项目管理员可以修改成员在当前项目中的显示名称；项目显示名称只在当前项目中使用

#### 4.8.6 修改密码

- **优先级**：P1

**展示与操作：**
- 账号菜单中的「修改密码」使用独立入口，不要求用户先进入个人信息页面
- 修改密码页面只展示当前密码、新密码和确认密码
- 用户可以提交当前密码、新密码和确认密码，修改 HOMEVISTA 统一账号密码
- 页面展示并检查 HOMEVISTA 统一账号当前的密码要求
- 修改密码成功后给出明确提示；当前密码错误、两次新密码不一致或新密码不符合要求时，在对应字段旁提示

#### 4.8.7 退出登录与登录状态过期

**功能优先级：**

| 功能 | 优先级 |
|---|---|
| 退出登录 | P1 |
| 统一账号登录状态过期后要求重新登录 | P0 |

- 用户选择退出登录后，系统结束当前浏览器中的 HOMEVISTA 统一账号登录状态，并返回统一登录页
- 使用该统一登录状态的其他标签页同时退出；其他浏览器和设备保持原有登录状态
- 同一账号允许在多台设备同时登录；关闭浏览器后凭证未过期时，重新打开仍保持登录状态
- 退出后通过浏览器返回、刷新原页面或直接打开原地址时，系统进入统一登录页
- 登录凭证过期规则优先使用 HOMEVISTA 统一账号规则；统一账号没有过期规则时，从最后一次用户操作开始计算，连续 8 小时无操作后过期，不另设持续操作中的绝对最长时限
- 登录信息过期前不提前提醒；过期时页面提示登录信息已经过期并立即退出，不因存在未保存内容阻止退出，未保存内容不保留
- 用户重新登录后进入项目选择页
- 用户在当前项目被停用后，系统立即结束当前项目上下文并返回项目选择页；其他项目访问不受影响
- 用户修改密码后，统一账号相关登录状态立即失效
- 成员角色被修改后，该项目的当前访问状态立即失效；用户重新登录或重新进入项目后使用最新角色和权限

---

### 4.9 项目总览（Dashboard）

- **优先级**：P2-A

项目总览是用户选择项目后进入的统一项目首页，用于快速了解当前项目的客户、页面、链接和负责人总体情况。项目总览只展示少量汇总结果，不展示客户活动明细、访问趋势、页面排行、内容排行或客户排行。用户需要分析一段时间内的访问情况时进入营销统计，需要查看单个客户时进入客户追踪。

#### 4.9.1 进入规则和项目范围

- 当前项目中处于启用状态的成员都可以进入项目总览，不设置独立的「查看项目总览」功能权限
- 用户选择项目或切换项目后，系统默认进入目标项目的项目总览
- 用户通过有权访问的具体业务页面地址进入时，直接进入对应页面，不先跳转项目总览
- 所有用户看到相同的当前项目总体数据，不按角色显示不同内容
- 项目总览只显示当前项目数据，不提供项目筛选、跨项目合计或公司级汇总

#### 4.9.2 时间范围

- 默认显示本月，可选择本周或本月
- 本周从本周一开始统计至当天；本月从当月 1 日开始统计至当天
- 时间范围只作用于新增客户数、访问客户数和团队访问客户数
- 客户总数、未分配负责人客户数、可访问页面数和启用链接数反映当前项目的当前状态，不随时间范围变化
- 页面展示统计数据最后更新时间；修改时间范围不改变该时间

#### 4.9.3 总体数据

项目总览展示以下数据：

- 客户总数：当前项目内尚未删除的客户数量
- 未分配负责人客户数：当前项目内尚未删除且当前负责人为空的客户数量
- 可访问页面数：当前项目内尚未删除且已经保存、来源正常的分享页面数量
- 启用链接数：当前项目内尚未删除、已经保存且固定链接处于启用状态的分享页面数量
- 新增客户数：所选时间内在当前项目创建且尚未删除的客户数量
- 访问客户数：所选时间内产生过有效访问的客户去重数量

访问客户数的计算规则与 §4.6.2 相同。项目总览不重复拆分首次访问客户和回访客户，也不展示每日趋势。

#### 4.9.4 团队负责情况

- 按客户当前负责人汇总客户数量和所选时间内访问客户数
- 客户数量反映当前状态，不随时间范围变化；访问客户数随时间范围变化
- 当前没有负责人的客户汇总为「未分配」
- 已停用成员仍负责客户时，负责人显示为「姓名（已停用）」
- 默认按所选时间内访问客户数从高到低排列；相同时按客户数量从高到低排列
- 该区域只说明客户负责和访问情况，不作为销售业绩排名，不展示成交金额、合同数量、跟进完成率或转化率

#### 4.9.5 详情入口

- 用户具备「查看客户」和「购房客户追踪查看」功能权限时，项目总览提供进入客户追踪的入口
- 用户具备「查看营销统计」功能权限时，项目总览提供进入营销统计的入口
- 用户缺少相应权限时，不显示对应入口，但仍可查看项目总览
- 项目总览不直接进入某个客户、页面或内容的统计详情

#### 4.9.6 数据状态与限制

- 页面打开时读取当前可用的最新统计，并展示最后更新时间
- 数据读取失败且没有旧结果时显示错误提示和重试操作
- 更新读取失败但已有旧结果时保留旧结果、时间条件和最后更新时间，并提供重试操作
- 项目总览只使用 VISTA Link 已有的客户、负责人、分享页面、固定链接和客户访问数据
- 项目总览不展示销售额、合同、成交、销售排名、跟进任务完成率、客户分数、意向等级或系统推断的转化率
- 项目总览不展示客户活动明细、访问趋势、页面排行、内容排行或客户排行；这些内容由客户追踪或营销统计提供

---

## 5. 接口约定

本节只说明业务能力边界，不规定接口数量、字段或技术形式。当前 B 端 MVP 使用的接口按 §8 实现；数据追踪和统计接口按 §4.6 在后续统计开发中实现；AI 与智能体的产品范围按独立产品需求文档处理，具体接口另行设计。

| 业务能力 | 说明 |
|---|---|
| 统一账号与账号访问能力 | 读取 HOMEVISTA 统一账号登录状态和用户身份；完成统一登录、忘记密码、重置密码、初始密码修改、个人姓名修改、密码修改和退出登录 |
| 项目上下文 API | 查询当前用户的可访问项目，设置和切换当前项目，并返回目标项目中的成员状态、角色和功能权限 |
| 项目主题 API | 获取当前项目正在使用的主题；项目没有自定义主题时返回 VISTA 默认主题。B 端只读取主题，不提供设置或页面单独选择主题的操作 |
| 成员与角色 API | 查询当前项目成员，通过邮箱识别或创建统一账号并邀请项目成员，重发邀请，修改成员在当前项目中的显示名称，设置项目角色，停用或启用项目访问；查询、创建、修改和删除当前项目角色及其功能权限 |
| 操作日志 API | 记录并查询本次范围内定义的成员、角色、客户、素材标签、固定链接和页面操作 |
| 素材目录 API | 获取当前项目内所有已上线素材，携带分类、类型、素材标签、来源内容更新时间或版本、更新状态、结构化属性和内部预览可用状态；同一素材更新后返回最新内容和更新标记，已下线或已删除素材不进入素材库列表；支持按 Widget 自身规则取得候选素材，并在候选范围内按名称搜索，或按分类和标签筛选；内部预览必须受登录和当前项目权限限制，不返回可直接对外使用的素材分享地址 |
| 素材维护 API | 读取和修改素材说明；给当前项目素材添加或移除已有标签；维护素材标签库 |
| 可选 Widget API | 获取当前可选的 Widget，以及 B 端编辑页面所需的选材、数量、删除、必需、内容、动作、校验、可编辑字段和展示形式等使用规则；已停用 Widget 不进入可选列表 |
| 分享页面 API | 查询当前项目内 A 端创建的页面和当前用户可见页面，并返回页面创建来源、来源页面状态、最新保存内容和页面所用素材状态；支持使用自由模板新建页面，复制 A 端页面或自己创建的 B 端页面，以及预览确认后保存页面；在本人页面中添加、删除和排序 Widget，并修改允许的内容和展示形式；A 端来源页面下架时暂停同步并停止访问，恢复上线后继续同步，删除后永久解除来源关系；A 端创建的页面不提供编辑和删除操作 |
| 页面预览输入 | 将尚未保存的页面内容、Widget 实例、展示形式、素材引用、素材当前状态和当前项目主题交给与 C 端一致的渲染规则，不创建或修改固定链接 |
| 现场讲解记录 API（P1） | 使用页面最新保存内容开始、继续和结束现场讲解；保证同一销售跨设备只有一条进行中记录；保存讲解人、客户关联及修改历史、开始与恢复时间、最后可靠记录时间、结束与异常处理情况、实际打开的对象、打开次数和展示时长；支持讲解人修改客户关联、填写理由、标记无效，以及项目管理员处理停用成员留下的异常记录；查询当前销售的讲解记录及客户追踪中的有效已关联记录 |
| 分享链接 API | 查询固定链接，设置或取消公开访问，启用或停用链接，为指定客户生成带客户标识参数的访问地址，查询关联客户 |
| 客户访问认证 API | 供 HOMEVISTA 展示端发送和校验邮箱验证码、建立或切换客户访问会话 |
| 行为数据与统计 API（后续统计开发） | 接收和查询 §4.6.3 定义的访问、Widget 浏览、浏览操作和明确动作记录，提供客户追踪、营销统计和项目总览所需的汇总结果；不属于当前 B 端 MVP，具体字段和接口形式由技术设计确定 |
| 页面打开通知 API（后续统计开发） | 按客户与固定链接判断首次成功打开事件，查询客户负责人及其权限，并请求账户邮件服务发送 §4.6.4 定义的通知；不属于当前 B 端 MVP |
| 购房客户管理 API | 创建、查询、编辑、删除、查询已删除客户、恢复客户、导入和导出客户；管理客户状态、标签、负责人和固定链接关联关系，并在删除满 90 天后完成最终匿名化 |
| AI 与智能体业务能力 | 产品范围和业务规则见独立的 [VISTA Link AI 与智能体产品需求文档](./VISTA_Link_AI与智能体产品需求文档.md)；具体接口由技术设计确定，不属于当前 B 端 MVP |

与上游系统的数据依赖：
- HOMEVISTA 统一账号提供稳定用户标识、统一登录状态、登录方式、账号资料、密码、账号状态和登录安全规则；VISTA Link 管理项目成员关系、角色和功能权限
- A 端提供租户、项目、首个项目管理员关系和当前项目主题；项目没有自定义主题时提供 VISTA 默认主题
- 旧 B 端账号是否纳入统一账号，由现有统一账号规则处理；VISTA Link 不单独制定账号迁移规则
- 项目选择或切换后，VISTA Link 当前项目上下文至少包含项目标识、项目名称、项目成员状态、角色和功能权限
- 素材来源为当前项目中已上线的内容
- 素材目录提供方至少提供素材标识、所属项目、名称、分类、类型、状态、来源信息、来源内容更新时间或版本、结构化业务信息，以及内部预览能力或内容打开信息
- 素材目录由装配后台直接提供还是由独立处理程序根据装配数据生成，由技术团队确定；两种方式都必须满足相同的素材目录输入要求
- A 端向 B 端提供当前可选的 Widget 列表，以及页面编辑所需的 Widget 标识、名称、选材、数量、删除、必需、内容、动作、校验、可编辑字段和展示形式等使用规则；已停用 Widget 不进入可选列表
- Widget 停用状态只影响 A、B 两端后续选择和页面再次保存，不改变已经保存的页面实例
- A 端创建的页面至少提供页面标识、名称、创建来源、默认封面、来源内容更新标记、Widget 实例、Widget 顺序、展示形式和素材关系；来源内容更新标记只用于判断 A 端内容是否变化，不是 B 端页面历史版本；固定链接由 B 端在页面进入页面库时创建和管理
- A 端向 B 端提供全系统共用的唯一自由模板；模板必须存在且不能停用。B 端使用其中固定的页头和项目联系页脚，但不展示、选择或管理模板对象；模板更新后，已有页面只在这些固定公共部分跟随变化，不改变 Widget 实例、素材、顺序或销售填写的页面内容
- C 端提供可供 B 端预览和现场讲解使用的同一套 Widget 和项目主题渲染规则；普通预览可以接收未保存页面内容，现场讲解读取页面最新保存内容
- 预览采用共享前端包、SDK、嵌入页面还是数据协议，由技术设计确定
- 素材说明和素材标签在 VISTA Link 内维护
- 客户批量交换首版只使用 CSV 导入和导出，不包含外部 CRM 实时同步

---

## 6. 非功能需求

### 6.1 多语言

- 系统界面只支持日文和英文，不向简体中文用户提供中文界面
- 本 PRD 使用简体中文编写，仅用于内部需求评审、设计和开发，不表示产品支持简体中文
- 默认语言可按用户保存
- 项目管理员可设置当前项目默认语言
- 用户输入内容不自动翻译
- 日期、时间、数字展示需适合日本销售场景

### 6.2 时区与日期

- 默认时区为日本时间
- 分享链接和分享页面更新时间必须记录完整时间
- 页面展示时间需使用统一格式

### 6.3 数据隔离

- 不同租户的数据必须隔离
- 同一租户中的不同项目数据必须隔离
- 用户只能访问所属项目内权限范围内的数据
- 用户进入 VISTA Link 后一次只使用一个当前项目；用户可以通过全局项目切换或有权访问的具体业务页面地址进入其他项目
- 客户、客户状态、客户标签、素材标签、页面、固定链接、现场讲解记录、Widget 选材、项目主题、统计、成员、角色、权限和操作日志都必须使用当前项目数据
- 直接访问其他项目的业务地址不能绕过项目成员状态和当前项目检查

### 6.4 安全

- 统一登录、找回密码、项目选择、项目切换、个人信息、修改密码、退出和登录状态过期规则见 §4.8
- VISTA Link 使用 HOMEVISTA 统一账号当前的密码要求、登录保护和额外身份验证规则
- 统一账号要求额外验证时，用户完成相应操作后继续进入 VISTA Link
- 新用户使用初始密码登录 VISTA Link 时，完成密码修改后进入项目选择页
- 账号认证信息不得写入 VISTA Link 操作日志
- 权限变更后，用户下一次操作必须使用新权限判断
- 分享链接停用后，客户打开该链接需看到失效提示
- 客户标识参数必须随机生成，不得直接包含客户编号、邮箱、手机号等信息
- 客户标识参数必须有足够的随机性，不能通过编号递增等方式猜出
- 客户标识参数识别完成后，系统必须建立客户访问会话
- 页面地址不再显示完整客户标识参数，浏览器历史也不得保留完整参数
- 客户标识参数不得进入页面埋点、操作日志或外部跳转来源，服务访问日志中必须隐藏完整参数
- 客户标识参数无效或对应客户已删除时，不得继续识别原客户
- 邮箱验证码必须遵守 §4.3.7 的 6 位数字、10 分钟有效、60 秒重发间隔、连续 24 小时最多发送 10 次、连续输错 5 次锁定 30 分钟及一次性使用规则
- 客户访问会话在当前浏览器和当前项目内保留 30 天；客户删除、身份切换或浏览器数据被清除后，旧会话必须失效
- 客户访问会话凭证不得出现在访问地址、页面埋点、操作日志或外部跳转来源中
- 客户标识参数与浏览器会话中的客户不同时，必须展示身份确认页面，不能直接覆盖当前身份
- 现场讲解页面必须检查 HOMEVISTA 统一账号登录状态、当前项目成员状态、「进行现场讲解」权限和分享页面查看权限；不能把讲解页面地址当作客户访问地址使用
- 现场讲解中的客户关联和展示记录不得写入客户可见的分享链接地址

### 6.5 操作日志

- 所有操作日志统一从系统设置中的操作日志查看，客户详情和其他业务详情不单独提供操作日志入口
- 成员和角色的变更，需要记录目标对象、修改项、修改前内容、修改后内容、操作人和操作时间
- 具备「查看操作日志」功能权限的项目成员，可以按 §4.7.9 查看当前项目内的记录
- 客户资料、客户状态、客户标签、负责人和客户与固定链接的关联关系发生修改时，需要记录修改项、修改前值、修改后值、操作人或系统来源、操作时间
- 销售指定客户并首次建立客户与固定链接的关系时，记录固定链接、目标客户、操作人和操作时间；重复取得同一访问地址时不新增记录，不记录完整客户标识参数
- 客户通过无参数固定链接完成身份认证并建立关系时，记录固定链接、客户、认证方式和操作时间；不记录邮箱验证码
- 客户状态、客户标签、素材标签的新增、修改、删除、合并需要记录操作人和操作时间
- 素材说明的新增、修改和清空需要记录素材名称或编号、修改前内容、修改后内容、操作人和操作时间；对象类型使用「素材」
- 客户导出需要记录操作人、操作时间、导出时的搜索与筛选条件和导出条数，不记录导出文件或完整客户数据
- 固定链接状态变化需要记录操作人、操作时间、链接和变化前后的状态
- 固定链接公开状态变化需要记录操作人、操作时间、链接和变化前后的公开状态
- 删除客户、删除分享页面需要记录操作人和操作时间
- 客户删除和恢复需要记录操作人、操作时间和内部删除记录编号；删除满 90 天完成最终匿名化时解除客户与固定链接的关系，并保留不含已清除客户资料的内部记录
- 现场讲解的开始、恢复、结束、客户关联及修改、无效标记和展示内容保存在讲解记录中，不在操作日志中重复生成相同记录；客户关联修改和无效标记必须保留理由、操作人和操作时间

### 6.6 性能

- 常用列表页在正常数据量下应快速打开
- 搜索和筛选需要在用户操作后及时返回结果
- 营销统计首次打开不超过 3 秒
- 修改营销统计的时间或客户负责人筛选后，不超过 2 秒更新
- 项目总览首次打开不超过 3 秒，修改时间范围后不超过 2 秒更新
- 打开客户追踪详情或访问记录不超过 2 秒
- 使用已保存页面开始现场讲解或打开讲解详情不超过 2 秒

### 6.7 浏览器兼容

- 支持最新版 Chrome
- 支持最新版 Safari
- 支持最新版 Edge
- 移动端浏览器至少需要正常查看主要页面，不要求完整管理操作

### 6.8 可访问性

- 关键操作按钮需要有明确文字
- 删除、停用等高风险操作必须二次确认
- 表单错误需要在字段附近展示

---

## 7. 指标与验收

### 7.1 销售场景与功能验收

以下内容用于验收完整 PRD 是否支持销售连续完成实际工作。标注“后续统计开发”“P1”或“后续单独下发”的项目不属于当前 B 端 MVP 验收；当前内部 MVP 仍按 §8.2 单独验证。

#### 7.1.1 销售场景验收

**验收准备：**
- 一个具备客户、页面、分享链接、现场讲解和购房客户追踪所需权限的销售账号
- 一个已有客户，初始状态为「未设置」
- 一个用于临时接待、尚未建立客户资料的测试身份
- 一个包含项目概览、户型、样板间和眺望等内容的已保存页面
- 一个可以由销售复制、编辑、预览并保存的页面
- 项目内至少新增一个用于表示中间销售进度的验收状态；可以使用「已接待」「考虑中」「购买申请中」等示例名称，但不要求采用固定名称、数量或顺序
- 一个与销售端分开的客户浏览器，用于打开销售复制的访问地址

**场景一：已有客户现场接待。**
1. 销售从已有客户详情进入现场讲解，选择一个已保存页面。
2. 销售在讲解中打开多个内容，结束讲解，并按当前项目配置把客户改为一个可用的中间状态；验收数据可以使用「已接待」。
3. 客户追踪显示一条与该客户关联的现场讲解，包含讲解人、实际打开内容、次数和页面前台展示时长。
4. 本次讲解不增加客户访问次数、浏览页面数、浏览内容数、首次访问时间和最近访问时间，也不触发页面打开邮件通知。
5. 销售通过普通页面预览再次检查同一页面，不能产生新的现场讲解记录。

**场景二：临时客户现场接待。**
1. 销售从页面详情选择「临时讲解」，不先创建客户。
2. 讲解结束后，记录只出现在该销售的「讲解记录」次级页面，并显示「未关联客户」。
3. 销售创建或选择客户并关联本次讲解后，记录进入该客户的客户追踪。
4. 销售发现关联错误时，选择正确客户并填写修改理由；记录从原客户追踪移除并进入新客户追踪，同时在讲解记录中保留修改前后客户、理由、操作人和操作时间。
5. 该过程不生成预约、到场或匿名客户统计。
6. 销售误开始一条不代表真实讲解的记录时，可以在结束后经二次确认并填写理由，将其标记为「无效讲解」；该记录不进入任何客户追踪或最近活跃数据。

**场景三：根据现场反馈或远程咨询发送新页面。**
1. 销售根据客户现场提出的问题或远程咨询内容，选择已有页面，或复制、编辑、预览并保存新页面；没有现场讲解时也可以直接执行本场景。
2. 销售指定该客户并复制访问地址，通过 LINE 或邮件在 VISTA Link 外发送。
3. 销售根据实际沟通决定是否修改客户状态；需要修改时，从当前项目未停用状态中选择，验收数据可以使用「考虑中」。销售还可以按需要更新备注或标签。
4. 系统保存页面与客户的关联，但不把复制地址写成已经发送，也不读取外部工具中的消息。
5. 客户尚未打开前，不产生客户访问记录。

**场景四：根据客户访问继续推荐。**
1. 客户在独立浏览器中打开销售提供的地址，完成需要的身份识别并自主浏览页面。
2. VISTA Link 生成客户访问记录，保存实际浏览的页面、内容、次数和有效时长。
3. 客户追踪按时间同时展示之前的现场讲解和本次客户自主访问，两种记录使用不同标识，数据不合并。
4. 销售根据客户反复查看、浏览时长和具体内容判断客户可能关注的内容，选择或制作另一页面并再次提供访问地址。
5. 客户再次打开后形成新的访问记录；旧讲解和旧访问明细不能被页面新内容改写。
6. 系统不能根据浏览数据自动修改客户状态，也不能直接显示客户喜欢某个房源或已经准备购买。

**场景五：购买申请到签约。**
1. 客户通过实际沟通确认准备购买后，销售按当前项目配置手动选择对应的中间状态；验收数据可以使用「购买申请中」，但不要求客户此前处于「考虑中」。
2. 购买申请、资金确认、贷款预审和重要事项说明在外部业务中完成，VISTA Link 不保存这些表单、文件和处理结果。
3. 完成买卖合同后，销售把客户状态改为系统预置的「签约」；没有完成合同或客户放弃时，可以改为「未签约」。
4. 客户详情保留每次状态变化的原状态、新状态、操作人和操作时间。
5. 现场讲解、页面发送和客户访问都不能自动修改客户状态，也不能限制销售从当前状态选择其他未停用状态。

以上五个场景连续通过，才表示 VISTA Link 可以支持本 PRD 定义的销售工作。单项功能通过但上述过程无法连续完成时，完整产品验收不能通过。

#### 7.1.2 单项功能验收

以下清单用于继续检查各功能、权限和历史数据规则。

| 链路 | 验收条件 |
|------|---------|
| 账号访问 | 用户打开 VISTA Link 独立地址 → 已有统一账号登录状态时直接进入项目选择页；登录状态失效时通过统一登录页完成登录 → 选择有权访问的项目 → 按该项目角色和权限进入业务界面 → 退出当前浏览器中的统一账号登录状态 |
| 入口地址 | 从独立地址或邀请链接进入时先到项目选择页；有效邀请对应的项目出现在项目选择页；已登录用户打开有权访问的具体业务页面地址时直接进入对应页面；未登录用户打开具体业务页面地址时，登录后进入项目选择页 |
| 统一账号资料 | 个人信息页可以修改统一账号姓名并查看只读的绑定邮箱；修改密码页修改统一账号密码；忘记密码和重置密码在统一登录页完成；新用户使用初始密码时先设置新密码 |
| 项目选择与切换 | 项目选择页只展示启用的可访问项目；用户进入项目后可以切换项目；切换后只显示目标项目数据，并使用目标项目角色和权限 |
| 客户全生命周期 | 创建客户 → 编辑资料 → 打标签 → 导入客户 → 按当前搜索和筛选结果导出 → 导出记录进入操作日志 → 删除（二次确认）→ 90 天内由项目管理员查看并恢复，或满 90 天后最终匿名化；相关操作记录统一在系统设置中查看 |
| 客户与链接关联 | 为目标客户取得带客户标识参数的访问地址，或由客户通过无参数固定链接完成身份认证 → 建立客户与固定链接的关系 → 在客户详情或页面详情查看关联；重复指定同一客户返回同一地址 |
| 页面到分享 | 在当前项目中选择 A 端创建的页面直接分享；或使用自由模板新建页面、复制 A 端页面或自己创建的 B 端页面 → 编辑 → 预览 → 确认保存 → 自动创建或保留固定链接 → 固定链接立即展示最新保存内容 |
| 现场讲解（P1） | 具备「进行现场讲解」和页面查看权限的销售从页面详情选择已有客户或临时讲解，或从客户详情选择页面 → 使用最新保存内容进入现场讲解 → 页面明确显示讲解中并记录实际打开内容、次数和展示时长 → 正常结束或处理未正常结束记录 → 已关联记录进入客户追踪，未关联记录只进入讲解人的「讲解记录」次级页面 → 关联错误时填写理由并改为正确客户，误操作记录经确认后标记无效；普通预览不产生讲解记录，讲解不产生客户自主访问数据，同一销售跨设备只能有一条进行中记录 |
| A 端来源页面状态 | A 端页面下架 → B 端保留页面基本信息和固定链接、暂停同步并停止访问 → A 端恢复上线后恢复原关联并继续同步；A 端页面删除 → B 端保留页面基本信息和固定链接、永久解除来源关系并停止访问；两种情况都不保存可继续展示的旧页面副本 |
| 素材更新、分类失效与下线 | 同一素材内容更新 → 素材库、页面详情、编辑、预览和固定链接直接读取最新内容；素材分类失效 → 素材不再进入素材库和候选列表，固定链接不再展示该素材，再次编辑时需更换或移除；素材下线或删除 → 不再出现在素材库和候选列表中 → 已使用该素材的页面显示对应状态，预览和固定链接不再展示原素材内容 |
| Widget 停用 | Widget 停用后不再出现在可选列表中；已经保存的页面继续显示和访问；再次编辑或复制包含已停用 Widget 的页面时提示更换，未完成更换不能保存，原页面不受影响 |
| 项目主题 | B 端新建、复制、编辑和预览页面时自动使用当前项目主题且不能单独修改；A 端更新主题后，B 端预览和 C 端客户页面使用新主题，不要求重新保存页面，固定链接和页面封面不变 |
| 客户浏览追踪（后续统计开发） | 完成客户识别并成功打开分享页面 → 生成访问记录 → 记录内容浏览、浏览操作和客户操作 → 在客户追踪详情查看 6 项累计数据、访问趋势、内容浏览情况和访问记录；销售页面不展示 Widget 概念，固定链接与时间筛选按 §4.6.1 生效 |
| 访问数据可靠性与纠正（后续统计开发） | 同一次真实访问只形成一条有效访问记录；访问详情与统计使用相同的有效数据；机器人、自动监测、内部测试、重复或无效访问不进入统计和新的 AI 处理；项目成员可报告访问数据问题，具备「纠正访问数据」权限的成员可确认有效、修改客户归属或排除记录，必须填写原因且不能直接修改次数、时长和内容浏览结果；处理后相关统计重新计算，处理过程和结果可追查 |
| 营销统计（后续统计开发） | 进入营销统计 → 按时间或客户负责人筛选 → 查看访问客户、首次访问客户和回访客户的变化 → 查看页面排行和客户排行 → 从页面排行查看页面中的内容和访问客户 → 从客户排行或页面统计详情进入客户追踪详情 |
| 项目总览（后续统计开发） | 用户选择或切换项目后进入项目总览 → 查看客户、页面和链接总体数据 → 按本周或本月查看新增客户、访问客户和团队负责情况 → 按权限进入客户追踪或营销统计 |
| 统计历史记录（后续统计开发） | 删除客户、页面、Widget 或素材，或停用固定链接后，历史访问和统计继续保留，并按 §4.6.3 显示删除标记和访问时名称 |
| 统计权限（后续统计开发） | 具备「查看营销统计」可查看当前项目全部统计；没有权限时菜单隐藏且直接访问被拒绝；页面内不按角色细分统计内容 |
| 项目总览入口（后续统计开发） | 当前项目中处于启用状态的成员都可查看项目总览；选择或切换项目后默认进入；客户追踪和营销统计入口继续检查各自权限 |
| 页面打开邮件通知（后续统计开发） | 客户首次通过某条固定链接成功打开页面 → 向符合权限要求的客户负责人发送一次邮件；刷新、重复打开和后续访问不重复发送；没有负责人时不发送，邮件失败不影响客户浏览 |
| AI 相关能力（后续单独下发） | 本次不作为开发或验收依据 |
| 项目成员管理 | 项目管理员发送邀请 → 发送失败不创建成员并可重试；发送成功后创建「待接受」成员，链接 7 天有效，最多成功发送 10 次 → 用户通过邀请链接完成登录或首次密码设置后变为「启用」；已有账号使用原密码，新用户另收初始密码邮件；停用前显示负责客户数量但不要求转移，停用后原负责客户仍显示「姓名（已停用）」且其他项目不受影响 |
| 角色与权限管理 | 查看当前项目默认角色和自定义角色 → 创建或修改当前项目自定义角色 → 配置功能权限；默认角色不能删除，已分配给成员的自定义角色不能删除，默认项目管理员角色保留系统设置管理权限 |
| 操作日志 | 具备相应功能权限的项目成员从系统设置集中查看当前项目内的操作记录；可按所属功能、对象、操作人和时间范围筛选；日志按操作时间倒序展示且不能修改或删除 |
| 权限隔离 | 租户数据不可跨租户访问，项目数据不可跨项目访问；同一用户切换项目后使用目标项目角色和权限 |
| 分享页面可见与编辑范围 | A 端创建的页面可预览、分享和复制，不可直接编辑或删除；B 端创建的页面对创建人和项目管理员可见，只有创建人可编辑或删除；页面均在当前项目内使用，不提供项目筛选或「私有 / 公司共享」切换 |
| 固定链接操作 | 固定链接在页面详情中展示；销售人员和销售经理只能设置本人创建页面对应链接的公开和启停状态；项目管理员可以设置当前项目内全部链接；公开和启停状态变化进入操作日志 |
| 分享链接访问控制 | 固定链接默认不公开；公开链接允许未识别访客直接查看且匿名访问不进入客户统计；非公开链接使用有效客户标识参数或浏览器会话直接识别客户，仍未识别时展示邮箱验证码入口；停用链接始终展示失效提示 |

### 7.2 质量门禁

所有页面需覆盖以下状态：

- **加载态**：列表、详情加载中提供视觉反馈
- **空状态**：无数据时展示引导文案
- **错误态**：操作失败、数据异常时有错误提示
- **权限错误态**：没有权限或跨项目访问无权对象时进入「401 无权限」页面，展示无权限提示和「返回上一页」；对象已删除时显示「内容不存在或已被删除」
- **账号访问错误态**：覆盖统一账号提示的登录和安全结果、邀请链接无效或已过期、当前账号与受邀账号不一致、没有可访问项目、项目已停用、项目访问已停用和统一账号登录状态过期
- **身份认证错误态**：覆盖验证码错误或过期、发送过于频繁、认证服务暂时不可用、客户标识参数无效、参数身份与浏览器身份冲突
- **现场讲解状态**：覆盖页面尚未保存、跨设备已有进行中讲解、讲解异常中断、恢复或结束异常记录、讲解中页面保存新内容或被删除、客户已删除、客户关联失败、修改关联缺少理由、无效标记、讲解人项目访问停用、讲解权限变化和讲解记录读取失败
- **边界情况**：删除二次确认、表单必填校验、字段格式校验

### 7.3 性能指标

| 场景 | 指标 |
|------|------|
| 客户列表、素材列表、页面库首次加载 | ≤ 2 秒 |
| 搜索、筛选响应 | ≤ 1 秒 |
| 素材检索结果返回 | ≤ 3 秒 |
| 营销统计首次打开（后续统计开发） | ≤ 3 秒 |
| 营销统计筛选更新（后续统计开发） | ≤ 2 秒 |
| 项目总览首次打开（后续统计开发） | ≤ 3 秒 |
| 项目总览筛选更新（后续统计开发） | ≤ 2 秒 |
| 客户追踪详情和访问记录打开（后续统计开发） | ≤ 2 秒 |
| 现场讲解开始和讲解详情打开（P1） | ≤ 2 秒 |

### 7.4 安全与权限

- HOMEVISTA 统一账号登录状态过期后需重新登录
- 停用项目访问即时生效，用户不得继续访问该项目，但不影响其他项目
- 项目切换后不得继续展示或请求原项目数据
- 权限变更即时生效；角色修改后当前项目访问状态失效，未保存内容不写入系统
- 操作日志覆盖：成员/角色变更、客户资料/状态/标签/负责人/关联链接变更、销售指定客户时首次建立链接关系、客户身份认证后建立关系、客户导出、固定链接公开或启停状态变化和删除客户/分享页面；日志不记录完整客户标识参数或邮箱验证码
- 现场讲解页面必须要求销售保持登录，并按当前项目、「进行现场讲解」权限和页面查看权限访问；普通预览、现场讲解和客户访问使用不同的访问状态

---

## 8. 发布计划

### 8.1 优先级定义

| 优先级 | 定义 |
|---|---|
| P0 | 内部 MVP 必须具备的功能。缺少任一 P0 功能时，无法完成或验证一次从选择 A 端创建的页面到打开客户页面的主要流程 |
| P1 | 不影响内部 MVP 完成，但进入企业试用前需要补充的常用功能 |
| P2-A | P2 中优先处理的功能，主要影响日常使用、账号安全、权限或数据正确性 |
| P2-B | P2 中随后处理的常用功能，缺少时可以暂时使用现有列表或其他入口完成工作 |
| P2-C | P2 中最后处理的功能，当前作用较弱、依赖较多或需求仍需继续明确 |

P2-A、P2-B 和 P2-C 都属于 P2，不改变 P0、P1 和 P2 的原有范围。功能优先级标注在 §4 对应的最小功能单元中。同一功能单元包含不同优先级时，分别标注；用例优先级以对应功能优先级为依据。

### 8.2 内部 MVP 验证流程

1. 在当前浏览器退出 HOMEVISTA 统一账号后，使用预先准备的销售用户打开 VISTA Link，通过统一登录页完成登录。
2. 在项目选择页选择目标项目；即使只有一个项目，也必须选择后进入。
3. 进入后确认只显示该项目允许的模块和数据。
4. 从左侧栏顶部切换到另一个可访问项目，再切回目标项目，确认角色、权限和数据随项目变化。
5. 销售在页面库打开一个预先准备的 A 端创建页面。
6. 销售在新的浏览器标签页中预览客户实际看到的页面。
7. 销售复制该页面的固定链接。
8. 购房客户打开固定链接，完成需要的身份认证并查看页面。

使用自由模板新建页面、复制 A 端创建的页面、编辑页面、Widget 编排和默认封面选择属于整体产品范围，按 P1 继续开发，但不作为本次内部 MVP 通过条件。

### 8.3 内部 MVP 准备条件

内部 MVP 开始验证前，提前准备以下数据，不要求通过 P0 管理页面创建：

- 一个租户和至少两个可用于切换验证的项目
- 一个能够使用 HOMEVISTA 统一账号登录，并在两个项目中处于启用状态的销售用户
- 该用户在两个项目中分别配置角色和功能权限
- 两个项目分别具备一套当前可用的项目主题；没有自定义主题时可以使用 VISTA 默认主题
- A 端提供一份可供 B 端新建页面使用的自由模板，模板自带页头和项目联系页脚；当前可选 Widget 列表至少包含一种业务 Widget，并提供允许素材类型、其他候选限制、数量、实例数量、删除规则、可编辑字段和展示形式等页面使用规则
- 当前项目内准备符合和不符合该业务 Widget 允许素材类型及其他候选限制的素材，用于验证 Widget 第一层候选判断，以及候选列表中的名称搜索、分类筛选和标签筛选不能扩大 Widget 候选范围
- 至少一条支持 B 端内部预览的素材，用于验证已登录用户可以预览，未登录、没有当前项目访问权限或直接复制预览地址时不能访问
- 至少一个包含已配置 Widget 实例和素材的 A 端创建页面
- A 端创建的页面已经选择一张默认封面图
- A 端创建的页面中使用的素材已上线

### 8.4 企业试用前销售场景验收

- 当前内部 MVP 通过后，继续完成 §7.1.1 五个销售场景依赖的 P1 功能
- 企业试用前，必须使用销售账号、已有客户、临时客户、已保存页面和独立客户浏览器，连续执行 §7.1.1 的五个场景
- 五个场景应至少覆盖一次现场讲解、一次临时讲解及客户关联、一次填写理由后修改客户关联、一次无效讲解标记、一次异常中断后的继续或结束、一次到访后发送、两次客户自主访问、一次访问数据问题报告和纠正、一次根据访问再次推荐、一次项目自定义中间状态修改，以及最终改为「签约」或「未签约」；不要求使用固定的中间状态名称或变化顺序
- 验收同时检查不应发生的结果，包括普通预览产生讲解记录、同一销售跨设备产生两条进行中记录、无效讲解或错误客户关联继续进入客户追踪、讲解计入客户访问、复制地址被写成已经发送、机器人或内部测试访问进入统计和新的 AI 处理、同一次访问被重复计算、访问详情与统计结果矛盾、浏览数据自动改变客户状态和新页面改写历史记录
- 单项功能已经完成但五个场景不能连续执行时，不能进入企业试用
- 本节不改变 §8.2 的当前内部 MVP 验证范围

### 8.5 当前内部 MVP 不包含的范围

- 数据追踪、项目总览、页面统计、Widget 统计和客户行为统计
- 现场讲解、讲解记录次级页面及客户追踪中的现场讲解记录
- 页面打开通知
- AI 内容制作、外部工具授权和外部工具读写
- 跨项目复制页面、客户、素材或配置

---

## 9. 风险

### 9.1 已知风险

| 风险 | 可能影响 | 处理方式 |
|---|---|---|
| 被误解为完整 CRM | CRM 通常包含线索获取、销售阶段、跟进计划、报价、合同、成交和售后等功能。若不说明边界，VISTA Link 容易被要求承担完整销售管理。 | 本次只处理客户基础资料、素材、分享页面和固定链接；完整 CRM 能力由客户现有系统负责。 |
| 公开链接被转发 | 公开链接不要求身份认证，任何取得地址的人都可以查看，且匿名访问不能进入客户追踪。 | 固定链接默认不公开；设置公开时明确提示访问范围和统计限制；不再需要时取消公开或停用链接 |
| 带参数访问地址被转发 | 指定客户只提供身份识别，不是账号级访问授权。带客户标识参数的访问地址被其他人打开时，可能被识别为参数对应客户。 | 参数与浏览器现有身份冲突时要求访客确认；参数识别后立即跳转到无参数地址；销售可改用无参数固定链接；产品内提示不要转发带参数地址 |
| 素材预览被当作分享链接 | B 端用户可能复制浏览器中的预览地址并发送给客户，绕过分享页面、固定链接和客户访问规则。 | B 端不提供复制素材预览地址的操作；预览必须检查登录和当前项目权限；购房客户只通过分享页面固定链接查看素材 |
| 无参数访问需要身份认证 | 客户首次使用无参数固定链接或更换浏览器时，需要完成邮箱验证码，可能中途退出。 | 认证成功后保存浏览器会话，同一浏览器访问当前项目其他链接时不重复认证；认证页面只保留必要步骤 |
| 可选 Widget 信息不完整 | B 端无法判断能否添加、删除、选多少素材或使用哪种展示形式。 | A 端在联调前提供 §5 列出的 Widget 列表和页面使用规则。 |
| B 端预览与 C 端不一致 | 销售预览正确，但客户打开后页面不同。 | B 端预览和 C 端正式页面使用同一套 Widget 和项目主题渲染规则；验收时用同一页面逐项比较。 |
| 普通预览被误记为现场讲解 | 销售内部检查页面时产生错误讲解记录，客户跟踪和展示时长失真。 | 普通预览不记录；现场讲解必须从明确入口进入，页面持续显示「现场讲解中」和结束操作。 |
| 现场讲解异常中断 | 关闭浏览器、断网或设备断电后没有正常结束，讲解状态和时长失真。 | 页面关闭时尝试结束；无法保存时标记为未正常结束，下次进入或开始另一场讲解前要求继续或结束；没有可靠结果的时间不计入展示时长。 |
| 现场讲解关联错客户 | 错误记录进入无关客户的时间线，影响销售理解客户历史。 | 允许讲解人填写理由后修改客户关联；原客户时间线移除该记录，新客户时间线显示该记录，讲解记录保留修改历史。 |
| 停用成员留下异常讲解 | 原讲解人无法进入项目，未结束或未关联记录无人处理。 | 项目管理员只能查看和处理该停用成员留下的异常记录，处理时必须填写理由并保留处理人和时间。 |
| HOMEVISTA 统一账号暂时不可用 | 项目成员无法完成登录或账号操作。 | 统一登录页说明当前无法登录并提供重试操作。 |
| 项目切换后残留原项目数据 | 用户可能看到无权访问的客户、页面或统计。 | 切换时重新读取角色与权限，清除原项目页面状态，所有业务请求继续检查当前项目。 |
| 错误访问数据进入统计和 AI | 重复访问、错误客户归属、机器人或内部测试访问会造成统计失真，并使 AI 建议使用错误依据。 | 区分正常、部分缺失、待检查、异常和已排除数据；待检查、异常和已排除数据不进入统计和新的 AI 处理；支持报告、纠正、重新计算和历史追查。 |

---

## 10. 外部依赖

| 系统 | 提供的能力 |
|---|---|
| HOMEVISTA 统一账号 | 统一登录状态、稳定用户标识、登录方式、账号资料、密码、账号状态、登录安全规则、邀请账号识别、新账号初始密码和密码重置 |
| A 端运营管理端 | 企业、租户、项目和首个项目管理员关系；当前项目主题；用于 B 端新建页面的自由模板；当前可选的 Widget、页面使用规则和 A 端创建的页面。B 端使用自由模板但不展示、选择或管理模板对象 |
| VISTA ADMIN 及现有内容系统 | 产生并发布当前项目的原始内容及结构化业务数据 |
| 素材目录提供方 | 将装配内容整理为 B 端可使用的素材记录，提供稳定素材标识、所属项目、名称、分类、类型、状态、来源信息、来源内容更新时间或版本、结构化业务信息及内部预览能力或内容打开信息；内部预览必须受登录和当前项目权限限制；可以由装配后台直接承担，也可以由独立处理程序承担 |
| HOMEVISTA 展示端 | 客户实际浏览的展示环境；提供与 B 端预览和现场讲解一致的 Widget 渲染规则；客户访问和现场讲解使用页面最新保存内容；在后续统计开发中按各 Widget 需求上报客户访问、Widget 浏览、浏览操作和明确动作记录 |
| 账户邮件服务 | 发送页面首次打开通知；不发送项目成员激活或密码重置邮件，也不发送客户分享链接 |
| 邮件验证码服务 | 发送客户访问认证所需的一次性验证码；只发送认证消息，不发送分享链接或销售消息 |

旧 B 端账号是否纳入 HOMEVISTA 统一账号，由现有统一账号规则处理。
