﻿# 页面导航组件 PRD

版本：v0.3
状态：当前正式需求

## 修订记录

| 日期 | 版本 | 变更类型 | 变更摘要 |
| --- | --- | --- | --- |
| 2026-08-03 | v0.1 | 初始创建 | 建立 C端导航、返回与当前页状态的组件定义。 |
| 2026-08-03 | v0.2 | 合并旧 PRD / 重大范围确认 | 合并原“页面导航组件”规则；明确同级页面集合、权限过滤、全屏导航和状态恢复，不引入固定首页或猜测式返回。 |
| 2026-08-09 | v0.3 | 重大：导航内容来源收敛 | 明确页面标题为基础展示项；摘要、图标只有在页面发布对象和调用方 PRD 均定义来源时才显示，组件不得自行生成。 |

## 1. 定义与目标

唯一标识：`page-navigation`。在当前顾客已允许访问的同级页面集合中提供页面切换和当前页识别；不自行授予访问权限、枚举未授权页面、定义页面层级或将项目概览设为首页。本文所称“返回”仅指从已打开的全屏导航关闭并回到当前页面，不是通用的上一页返回能力。

页面可独立完成任务。仅当同一发布集合还存在其他可访问页面时，才显示导航入口。

## 2. 内容与调用边界

| 输入 | 必需性 | 规则 |
| --- | --- | --- |
| 当前页面 | 必需 | 用于当前项识别，不重复加载。 |
| 已过滤的可访问同级页面 | 必需 | 由上层提供，组件不计算权限；展示顺序只表达导航顺序。 |
| 页面标题 | 必需 | 使用已发布页面名称；组件不得改写或追加营销描述。 |
| 页面摘要/图标 | 条件可选 | 只有页面发布对象提供已发布内容，且调用方 PRD 明确该字段来源和显示条件时才展示；否则隐藏。 |

- 入口为单一 Menu / 导航操作；打开后以全屏导航承载完整页面集合。
- 关闭操作、`Esc` 或系统返回只关闭导航并回到当前页面；不猜测浏览器历史或默认返回项目概览。
- 选择目标后进入目标自身 URL，不把目标嵌入当前页面或 Widget。
- 不展示未发布、失效或无权限项目，亦不以禁用态泄露其名称。
- 不显示原型说明、页面优先级、内部编号、实现说明或“仅显示……”等评审提示。

## 3. 核心流程与状态

1. 页面权限完成后，上层提供当前顾客可访问的同级页面。
2. 其他可访问页面至少存在一个时显示入口；否则隐藏入口，不显示单项菜单。
3. 顾客打开导航，查看当前项与其他页面，选择目标或关闭。
4. 关闭后恢复调用前的滚动、筛选、地图或查看状态及焦点；切换后由目标页面自身状态规则接管。

| 状态 | 处理 |
| --- | --- |
| 入口可见 | 至少一个其他可访问页面。 |
| 入口隐藏 | 没有其他可访问页面；当前页面继续独立使用。 |
| 展开 | 全屏展示有效页面项，背景不可误操作。 |
| 目标失效 | 切换时按既有 403/404 规则处理，不在组件内另建状态页。 |
| 清单/组件失败 | 当前页面继续可用；隐藏入口或显示可关闭的局部提示。 |

## 4. UI、响应式与设计系统

采用 **VISTA C** 导航：完整入口使用 Menu，全屏导航用于页面集合；非首页内容页可按设计系统选用右侧或底部的轻量切换入口，但不得遮挡主体图像、3D、VR 或 WALK 内容。当前项应通过整体卡片状态识别，而非只变更文字颜色。

320px、375px 下全屏导航须始终可关闭、页面项可纵向滚动；768px 以上可扩展列数和留白，不改变页面集合、权限或切换结果。入口位置、卡片布局、转场动效和焦点视觉为 **待设计系统补充**。

## 5. 验收

| AC | Given | When | Then |
| --- | --- | --- | --- |
| AC-NAV-01 | 集合中至少有两个可访问页面 | 打开任一页面 | 显示一个导航入口，点击后全屏展开。 |
| AC-NAV-02 | 导航已展开 | 查看页面项 | 仅显示同一集合内已发布、有效且有权访问的页面；当前项明确。 |
| AC-NAV-03 | 当前页存在滚动或临时选择 | 打开后关闭导航 | 状态保留，焦点返回入口。 |
| AC-NAV-04 | 无其他可访问页面 | 页面渲染 | 隐藏入口，页面仍独立可用。 |
| AC-NAV-05 | 顾客选择目标页面 | 执行切换 | 进入目标自身 URL，不形成首页/子页关系。 |

## 6. 明确不做与待确认

- 不做固定首页、面包屑、父子层级、账号菜单、分享、语言切换、预约或 B端导航配置。
- 不提供通用“返回上一页”能力；如特定页面需要显式返回目标，应由该页面规则定义。
- 页面集合的上游发布对象与精确视觉规格待实现/设计系统补充。
