﻿# 系统状态与错误页规则

版本：v0.5
状态：第一阶段 MVP 范围已确认；403/404 响应式原型已制作，待开发
适用表面：VISTA C

## 修订记录

| 日期 | 版本 | 变更类型 | 变更摘要 |
| --- | --- | --- | --- |
| 2026-07-29 | v0.1 | 初始创建 / 重大范围确认 | 确认 MVP 只定义 403 和 404 两种整页状态；未登录、会话过期和登录失败由顾客登录组件处理，Widget 局部错误不升级为整页状态。 |
| 2026-07-29 | v0.2 | 重大：切换顾客清理规则 | 403 使用其他账号登录前，必须清除当前登录、本地顾客记录和前一顾客的页面临时状态，避免后续页面访问和数据上报继续关联原顾客。 |
| 2026-07-29 | v0.2 | 非重大：原型交付同步 | 已完成 403、404 两种响应式整页状态原型；Widget 局部异常仍在所在页面内展示。 |
| 2026-08-03 | v0.3 | 重大：退出登录入口补充 | 确认退出登录是受限页面页尾的低频动作；退出后清除顾客身份与临时状态。 |
| 2026-08-04 | v0.4 | 术语同步 | 顾客认证失败统一按 B端分享验证规则处理，不在状态页规则中固化密码错误分支。 |
| 2026-08-09 | v0.5 | 重大：状态页文案与内容来源收敛 | 将 403/404 顾客表达确认为固定功能文案；禁止项目识别、营销文案、英文副标题、技术原因和自创动作进入状态页。 |

## 1. 文档目的与适用对象

本文档定义顾客无法进入目标 C 端页面时的两种统一整页状态：

- 403：顾客已经登录，但没有当前页面访问权限。
- 404：项目或页面不存在、未发布、已下线或链接无效。

本文档面向产品、设计、C 端开发、测试及 Codex。状态触发条件以 [`05-权限与访问控制规则.md`](05-权限与访问控制规则.md) 为准；本文档负责触发后顾客看到什么和可以做什么。

## 2. MVP 范围

### 2.1 包含

- 一个可复用的系统状态页结构。
- 403 与 404 两种状态内容和动作。
- 从 403 切换顾客登录。
- 安全返回来源规则。
- 手机、PAD、PC 响应式表达。
- 防止页面内容和内部信息泄露。

### 2.2 明确不做

- 401、410、429、500、502、503、504 或其他状态页。
- 登录页、注册页、密码重置页或顾客中心。
- 把登录失败、登录失效、频率限制或登录服务异常升级为整页状态。
- 把地图、图片、POI、户型或联系方式的局部失败升级为 403/404。
- 在状态页中展示项目营销内容、推荐页面、预约、广告或联系方式。
- 展示接口错误、堆栈、内部 ID、权限来源和技术排障信息。

## 3. 状态对象与边界

| 状态 | 触发条件 | 不得误用为 |
| --- | --- | --- |
| 403 无访问权限 | 顾客已经成功认证，但 B 端确认该顾客不能访问当前页面；或原有权限已被撤销。 | 未登录、分享验证失败、登录失效、页面权限检查超时、页面不存在。 |
| 404 页面不可用 | 路由无法识别；项目/页面不存在；页面未发布或已下线；链接无效。 | 已登录顾客缺少权限、Google 地图加载失败、户型为空、图片失败。 |

MVP 不建立 401 页面。受限页面未登录、登录失效或需要重新登录时，直接调用顾客登录组件。

## 4. 页面共同结构

| 区域 | 必需内容 | 规则 |
| --- | --- | --- |
| 品牌识别 | HOMEVISTA/VISTA 通用品牌识别 | 不使用项目 Logo、项目名称或项目图片，避免泄露目标资源。 |
| 状态标识 | `403` 或 `404` | 可见但不显示后端错误码明细。 |
| 状态标题 | 本文第 5、6 节固定标题 | 不使用“鉴权失败”“资源对象不存在”等技术语言，也不自行改写。 |
| 状态说明 | 本文第 5、6 节固定说明 | 不解释权限来源、页面下线原因或内部处理流程。 |
| 主操作 | 一个安全动作 | 403 优先返回来源；404 返回来源。 |
| 辅助操作 | 403 可使用其他账号登录 | 调用顾客登录组件；404 不提供登录以试探资源。 |

状态页是独立系统表面，不挂载 M-01、M-20、M-10、项目联系组件、图片查看器、导航、分享或语言切换组件。

受限页面的正常页尾可提供低频“退出登录”。它不是“切换顾客”组件；点击后清除当前顾客身份、会话和页面临时状态，再次访问受限页时调用顾客登录组件。页尾的精确视觉规格为 **待设计系统补充**。

## 5. 403 状态页

### 5.1 顾客表达

- 状态标识：`403`
- 固定标题：`无法访问此页面`
- 固定说明：`当前登录账号没有该页面的访问权限。`
- 主操作：`返回上一页`
- 辅助操作：`使用其他账号登录`

最终多语言逐字文案不在 MVP 中扩展；页面使用当前部署确定的发布语言，不自动翻译或跨语言回退。

### 5.2 交互规则

- 进入 403 前不得渲染受限页面标题、封面、Widget、缩略图或联系方式。
- 返回上一页只在来源安全且不会立即再次触发相同 403 时执行。
- “使用其他账号登录”清除当前登录、本地顾客记录和前一顾客临时状态，然后调用顾客登录组件。
- 新顾客登录成功后重新校验原目标页面；有授权时进入原页面，无授权时仍停留 403，不自动循环打开登录组件。
- 403 不提供“申请权限”、联系销售、预约或查看其他项目内容。

## 6. 404 状态页

### 6.1 顾客表达

- 状态标识：`404`
- 固定标题：`未找到该页面`
- 固定说明：`链接可能无效，或页面当前不可用。`
- 主操作：`返回上一页`

### 6.2 交互规则

- 404 不区分并公开展示“从未存在”“未发布”“已经下线”或“链接错误”的具体内部原因。
- 不展示旧发布内容、项目名称、页面名称、内部编号或缓存缩略图。
- 不自动跳转项目概览页，因为三个 MVP 页面是平级独立页面，项目概览页不一定存在或可访问。
- 返回来源不可用或会再次进入同一 404 时，保持当前状态页并允许使用浏览器返回，不构造未经确认的项目安全落地页。
- 404 不显示登录入口，避免利用登录试探目标资源是否存在。

## 7. 移动端与响应式

| 视口 | 产品规则 |
| --- | --- |
| 320px / 375px | 单列、全视口居中；状态标识、标题、说明和主操作在无需横向滚动的情况下可读可操作。 |
| 768px | 可增加状态容器留白，但内容与动作顺序不变。 |
| 1024px / 1440px | 可增加品牌与状态区的间距，不增加桌面专属动作或项目内容。 |

VISTA C 当前没有完整的 403/404 状态页规格。原型采用通用品牌与普通浅色线框表达；状态插图、容器尺寸、色彩、动效和按钮精确规格标记为 **待设计系统补充**，不得自行实现液态玻璃或其他正式视觉。

## 8. 与登录和局部错误的关系

| 场景 | 正确结果 |
| --- | --- |
| 受限页面未登录 | 打开顾客登录组件。 |
| 顾客分享验证失败 | 登录组件内提示。 |
| 登录失效 | 重新打开顾客登录组件。 |
| 登录成功但没有当前页面授权 | 403。 |
| 页面权限检查暂时失败 | 显示局部提示与重试，不把未知结果写成 403。 |
| 页面不存在、未发布、下线或链接无效 | 404。 |
| Google 地图失败 | M-20 局部错误和重试。 |
| POI、户型或图片局部失败 | 对应 Widget/组件降级。 |
| 服务器或网络出现其他未定义错误 | 不在 MVP 新增状态页；至少不得白屏或泄露技术信息，具体技术兜底另行设计。 |

## 9. 验收标准

| AC | Given | When | Then |
| --- | --- | --- | --- |
| AC-ERROR-01 | 顾客未登录访问受限页面 | C 端校验 | 打开登录组件，不进入 403。 |
| AC-ERROR-02 | 顾客登录成功但没有当前页面授权 | C 端校验 | 进入 403，不展示受限内容。 |
| AC-ERROR-03 | 页面不存在、未发布、下线或链接无效 | 任意身份访问 | 进入 404，不展示旧内容和内部原因。 |
| AC-ERROR-04 | 403 页面打开 | 顾客查看 | 显示通用品牌、403、说明、返回和切换账号；不显示项目内容。 |
| AC-ERROR-05 | 顾客从 403 切换账号 | 选择使用其他账号 | 先清除当前登录、本地顾客记录和前一顾客临时状态；新账号有权限时进入原目标，无权限时保持 403。 |
| AC-ERROR-06 | 404 页面打开 | 顾客查看 | 只显示通用品牌、404、说明和安全返回，不显示登录或项目入口。 |
| AC-ERROR-07 | 地图、POI、户型图或联系方式局部失败 | 页面权限已通过 | 保持原业务页面，不进入 403/404。 |
| AC-ERROR-08 | 检查 403/404 页面源码、可见文案和网络结果 | 状态页加载 | 不泄露项目名称、页面标题、内部 ID、权限来源、账号或技术错误。 |
| AC-ERROR-09 | 320px、375px、768px、1024px、1440px | 打开 403/404 | 状态和操作可读可达，不依赖桌面布局。 |
| AC-ERROR-10 | 搜索 C 端 MVP 状态页 | 检查产品范围 | 只存在 403 和 404 两个已定义状态，不存在 401/410/429/5xx 产品页面。 |

## 10. 供 Codex 使用的执行说明

- 只能实现 403、404 两个状态；其他异常不得擅自扩展成产品状态页。
- 未登录和登录失效必须调用顾客登录组件，不得复用 403。
- 403、404 不挂载项目 Widget、联系组件、导航、分享或语言切换。
- 403、404 只使用第 5、6 节固定顾客文案，不增加英文副标题、项目信息、技术原因、联系建议或评审说明。
- 不得为 403、404 分别发明不同页面体系；应复用同一状态页结构，以状态内容切换。
- 原型必须先验证 320px、375px，再扩展到 PAD/PC。
