﻿# HOMEVISTA A端项目页面管理 PRD

> 文档版本：v0.32
>
> 所属终端：A端（装配交付与服务支持端）
>
> 适用对象：产品、服务商、供应商、设计、开发、测试、Codex

## 修订记录

| 版本 | 日期 | 变更类型 | 变更摘要 | 备注 |
|---|---|---|---|---|
| v0.1 | 2026-07-28 | 初始创建 / 文档结构重构 | 从原01、02、03、04文档迁移项目选择、项目页面新增、编辑、预览、发布、状态和验收规则，建立项目页面管理唯一事实源。 | 原文及历史修订记录见 `archive/`。 |
| v0.2 | 2026-07-28 | **重大模板固化与区块标识变更** | 项目页面创建时固化模板 Widget结构；模板后续编辑不得影响既有页面。项目页面不读取人工区块名称，重复 Widget按固化顺序显示系统编号，并以区块唯一编号保存内容。 | 产品确认。 |
| v0.3 | 2026-07-28 | **重大页面创建与内容配置变更** | 创建项目页面改为直接进入全屏配置，在页面内选择模板；页面不选择主题，统一读取项目主题。每个 Widget区块新增独立的 C端展示名称及五语言文案，可由AI生成待确认译文；项目数据改在弹窗中选择。 | 产品确认。 |
| v0.4 | 2026-07-28 | **重大发布与访问规则补充** | 测试项目允许使用明确标记的模拟数据完成发布分享，真实项目禁止使用模拟数据对客发布；发布快照覆盖页面名称、访问方式和全部模块内容；A端下线后保留B端分享记录。 | 跨文档评审后产品确认。 |
| v0.5 | 2026-07-30 | **重大 Widget元数据与页面结构规则变更** | 项目页面按只读 Widget元数据决定内容配置方式、数据来源和选择数量；删除展示规格。 | 产品确认。 |
| v0.6 | 2026-07-30 | **重大左侧导航与项目入口变更** | “选择项目”改为可点击一级导航“项目管理”；选中项目后展开“项目页面、项目主题”。 | 产品确认。 |
| v0.7 | 2026-07-30 | **重大页面来源、模块独立性与发布门槛变更** | 新增系统默认提供（A端制作）和客户自定义（B端制作）两类页面来源；模板仅生成初始模块，页面创建后模块可独立增删改；实例阶段统一使用“模块”术语；发布或重新发布前必须完成当前草稿预览。 | 产品确认；DeepSeek产品评审补齐预览完成、元数据快照和删除后顺序规则。 |
| v0.8 | 2026-07-30 | **重大页面模块排序能力变更** | 项目页面增加与页面模板一致的拖拽排序；排序只改变当前页面模块顺序，不改变稳定模块编号、模块内容或来源模板，并使已完成的当前草稿预览失效。 | 产品确认。 |
| v0.9 | 2026-08-03 | **重大页面访问与封面规则补充** | 明确系统默认页面与客户自定义页面使用同一类页面访问规则；补充实例页面封面、页面库展示、封面同步和发布边界；明确实例页面下线与模板停用的差异。 | 产品确认清单。 |
| v0.10 | 2026-08-04 | **重大下线恢复、页面来源与协同规则修订** | 下线页面必须重新预览并发布后恢复访问；A端本期仅管理系统默认页面，客户自定义页面默认不可见、不可编辑；补充并行编辑和自定义内容不上传规则。 | 对照 A端前端技术架构设计文档后的产品确认。 |
| v0.11 | 2026-08-04 | **重大项目内容选择规则补充** | 项目页面按来源 Widget 的数据来源规则，将当前项目可用数据按分类列出并供勾选；补充多来源组合、空数据和发布校验口径。 | 产品确认。 |
| v0.12 | 2026-08-04 | **重大跨端页面协同规则修订** | A端可在授权和留痕前提下查看并代为处理 B端创建的客户自定义页面；同时统一 Widget 停用后的既有引用编辑规则，并取消 A端维护全局内容来源字典的口径。 | 2026-08-04 跨端评审确认。 |
| v0.13 | 2026-08-04 | **重大内容配置方式与内容分类规则重构** | 页面模块仅支持自动带入和选择项目内容；取消自定义内容。选择项目内容时按 A端 22 项项目内容分类列出候选数据。 | 产品确认。 |
| v0.14 | 2026-08-04 | **重大数据来源分类术语同步** | 选择项目内容的候选集分类统一更名为“数据来源分类”，与 Widget 管理 PRD 的 5.5 及模板元数据快照保持一致；不改变模块配置和发布规则。 | Widget 管理方案同步。 |
| v0.15 | 2026-08-05 | 术语修正 | 将项目管理清单中用于识别当前 VISTA 项目的“项目标识”更正为“VISTA URL”；仅调整业务展示名称，不改变项目上下文、页面归属或技术字段。 | 产品确认。 |
| v0.16 | 2026-08-05 | **重大：页面代处理与删除状态收口** | 删除独立的 5.12 章节，将 A端代处理 B端创建页面、权限与并行编辑规则合并至页面来源；新增“已删除”不可恢复终态及其状态流、异常处理和验收。 | 产品确认。 |
| v0.17 | 2026-08-06 | **重大：按来源模板收口模块编辑权限** | 通用模板页面可增删排序模块，并为每个模块从支持展示模式中单选布局；其他模板页面锁定模板模块结构和 Widget 定义，仅允许按数据来源选择具体数据及修改模块名称。 | A端技术评审后产品确认。 |
| v0.18 | 2026-08-06 | 操作命名与选择项表达统一 | 通用模板页面的新增入口统一命名为“添加 Widget 模块”；选择下拉项统一显示为“Widget名称 · 数据带入方式”。不改变通用模板页面可编辑、其他模板页面结构锁定的规则。 | A端技术评审后产品确认。 |
| v0.19 | 2026-08-06 | **重大：页面国际化与项目入口调整** | 页面名称纳入五语国际化；所有页面名称、模块名称以橙色“未完成”或绿色“已完成”显示填写状态，未完成时禁止预览和发布。项目清单改以“页面管理”“主题管理”两个操作进入相应项目上下文，删除左侧子导航入口。 | 产品确认。 |
| v0.20 | 2026-08-06 | 国际化入口与状态合并 | 页面名称、模块名称编辑处不再在国际化按钮外单独展示状态；保留统一按钮样式，在“国际化”按钮上以橙色或绿色图标显示完成状态。 | 产品确认。 |
| v0.21 | 2026-08-06 | 页面访问规则名称调整 | 页面访问开关统一更名为“允许公开匿名访问”，不改变开启时可匿名访问、关闭时由 B端处理顾客访问控制的规则。 | 产品确认。 |
| v0.22 | 2026-08-06 | 项目清单操作样式统一 | 项目清单中的“页面管理”和“主题管理”使用相同按钮样式，并保留清晰间距。 | 产品确认。 |
| v0.23 | 2026-08-06 | 项目清单识别信息调整 | 删除项目列表中的“测试项目”系统标记；项目以名称、VISTA URL 和新增的只读 VISTA ID 识别及查询。 | 产品确认。 |
| v0.24 | 2026-08-06 | 项目页面操作层级调整 | “切换项目”保留在页面标题操作区；“创建项目页面”移动至当前项目摘要，紧接已上线页面数量显示。 | 产品确认。 |
| v0.25 | 2026-08-06 | 国际化列表与编辑控件精简 | 删除项目页面列表的国际化列；页面名称、模块名称的国际化按钮缩小并与对应输入框同列。 | 产品确认。 |
| v0.26 | 2026-08-06 | **重大 Widget 内容选择规则收口** | 删除项目页面对 Widget 选择数量、单选/多选规则的读取、展示和限制；数据弹窗仅按数据来源分类提供候选数据。 | 产品确认。 |
| v0.27 | 2026-08-06 | **重大非通用模板布局继承规则补充** | 非通用模板页面创建时复制模板区块已选的布局方案，并始终锁定；模板编辑时完成布局方案选择后才可保存。 | 产品确认。 |
| v0.28 | 2026-08-24 | **重大通用模板跨端规则同步** | 通用模板改由专项 PRD 定义；A端与B端实例使用一致的模块组装规则。 | 专项文档现已更名为 `05-A端自由模板PRD.md`。 |
| v0.29 | 2026-09-02 | **重大页面实例、生效与素材同步规则重构** | 页面生成后与模板完全解耦；删除页面草稿、发布、重新发布、发布快照和历史版本；页面保存成功后立即生效，并通过素材引用读取最新有效内容。 | 产品确认；统一方案见 `../修改说明/2026-09-02-ABC端页面实例统一规则修改说明.md`。 |
| v0.29 | 2026-09-02 | **重大页面状态与 B端分享授权边界补充** | 明确页面第一次保存后可直接进入已启用状态，但已启用只代表可被 B端选择和分享；顾客访问必须另有 B端有效分享权限。项目主题继续由全部页面动态读取；删除尚未上线系统的历史迁移假设。 | 产品补充确认；同一连续编辑时段沿用 v0.29。 |
| v0.30 | 2026-09-03 | 文档表达与重复内容清理 | 正文改为直接描述独立页面实例、单一有效内容、动态素材引用和分享授权的现行业务逻辑；清理以旧发布模型为参照的冗余表述。 | 初步需求评审整改。 |
| v0.31 | 2026-09-03 | **重大：B端固定链接与自由模板规则对齐** | 页面公开与顾客认证全部改由 B端固定链接管理；A端页面不再配置匿名访问。通用模板统一更名为自由模板；补充 A端来源页面更新、下架、恢复和删除对 B端固定链接的影响。 | 对齐 B端《VISTA Link 产品需求文档》V0.251。 |
| v0.31 | 2026-09-03 | **重大：多 Widget 独占窗口与尺寸配置取消** | 页面可保存多个 Widget，同一 Widget 可重复引用并有序编排；每个 Widget 在顾客端独占内容窗口。删除微、小、中、大尺寸及布局方案配置；导航或演示模式切换不由 A端配置。 | 产品纠正；同一连续编辑时段沿用 v0.31。 |
| v0.32 | 2026-09-04 | **重大：恢复 Widget 展示规格并保留独占窗口切换** | 普通模板页面复制并锁定每个 Widget 的展示规格；自由模板页面可逐 Widget 选择微、小、中、大。C端继续在独占窗口内通过导航或演示模式切换 Widget。 | 撤回 2026-09-03 17:16 的尺寸取消要求。 |

## 1. 文档目的

本文定义 A端项目页面管理的项目上下文、页面来源、页面创建、多 Widget 内容配置、素材引用、页面保存、预览、访问状态和验收标准。

页面模板登记见 `02-A端页面模板管理PRD.md`；自由模板规则见 `05-A端自由模板PRD.md`；Widget准入与能力记录见 `01-A端Widget管理PRD.md`；项目主题见 `04-A端项目主题管理PRD.md`。ABC端页面实例统一规则以 `../修改说明/2026-09-02-ABC端页面实例统一规则修改说明.md` 为准。

## 2. 产品背景与目标

模板用于提供页面初始结构，素材用于提供可复用的项目内容。页面第一次保存成功后形成独立实例，使用自身结构和配置运行，并通过素材引用持续读取最新有效内容。

本期目标：

1. 使用已启用模板形成页面初始 Widget 结构，并在第一次保存成功时生成独立实例。
2. 页面实例保存自身的多个 Widget、顺序、展示规格和配置，来源模板记录用于追溯。
3. 页面保存素材引用，并在读取或刷新时使用素材源最新有效内容。
4. 系统为每个页面维护一份当前有效内容；保存成功后立即替换。
5. 将页面内容保存、页面启用状态与 B端顾客分享授权分开管理。
6. 页面继续读取所属项目当前有效主题；主题变化不属于模板变化。

## 3. 版本范围与边界

### 3.1 本期包含

- 项目搜索、选择和切换；
- 当前项目页面列表；
- A端通过已启用模板创建系统默认页面；
- 页面来源和来源模板只读记录；
- 自由模板页面在第一次保存前添加至少一个已启用 Widget，并为每个 Widget 选择展示规格；
- 普通模板页面复制模板登记的所有 Widget、顺序及展示规格；
- 页面名称、Widget 展示名称及五语文本；
- 页面封面和素材选择；
- 页面预览；
- 保存前完整性、权限和并发冲突校验；
- 保存成功后立即生效；
- 每个页面仅维护一份当前有效内容，编辑中的输入仅在当前会话内保留；
- 已启用、已停用和已删除状态；
- A端按授权代处理 B端创建页面。

### 3.2 明确不做

- 不允许页面生成后更换来源模板；
- 不允许页面直接编辑素材源正文；
- 不在A端创建、变更或撤销B端分享权限，也不选择具体顾客；
- 不配置 CSS、脚本或自由页面布局；
- 不在单个页面中选择项目主题；
- 不设置页面有效期；
- 不在 A端展开 B端分享权限的字段、角色和页面设计，也不定义 C端具体视觉实现。

### 3.3 三端边界

| 对象 | 所属范围 | 规则 |
|---|---|---|
| 页面模板 | A端模板管理 / C端页面定义 | 提供创建页面时的初始结构；顾客访问和分享对象为页面实例。 |
| 页面实例 | A端创建或B端创建 | 保存并运行自身页面配置，来源模板记录用于追溯。 |
| 素材 | 项目内容资产 | 保存和维护素材源；所有引用页面读取最新有效内容。 |
| 固定链接与访问设置 | B端 | 为页面建立唯一固定链接，并管理链接启停、公开状态、客户关联和客户识别。 |
| 顾客页面 | C端 | 在页面可用且 B端固定链接允许访问时，读取页面实例最新保存配置、最新有效素材内容和项目当前主题。 |

## 4. 用户角色与核心场景

- A端项目配置人员：创建、维护、预览、启用或停用系统默认页面。
- A端代处理人员：在授权范围内处理 B端创建的客户自定义页面。
- B端页面制作人员：创建和维护客户自定义页面，具体流程由 B端文档定义。
- 顾客：通过 B端生成且当前可用的固定链接进入 C端；公开链接可匿名访问，需要认证的链接按 B端规则识别客户。
- 测试人员：验证模板解耦、素材同步、保存生效和访问状态。

## 5. 核心对象与业务规则

### 5.1 项目上下文

- 用户必须先选择项目，才能进入项目页面。
- 页面、素材候选和主题均限定在当前项目，不得跨项目带入。
- 切换项目时不得沿用上一项目尚未保存的输入或筛选条件。

### 5.2 页面来源与权限

| 页面显示 | 产品标识 | 创建端 | 规则 |
|---|---|---|---|
| 系统默认提供 | `system-default` | A端 | A端第一次保存页面时自动写入。 |
| 客户自定义 | `customer-custom` | B端 | B端创建时自动写入；A端可按授权代处理。 |

- 页面来源由创建端自动决定，不提供手工修改入口。
- A端代处理不改变页面来源、创建人或固定链接。
- 无查看或操作权限时，不展示页面内容或相应操作。
- 多人同时编辑同一页面时，后提交者不得覆盖已经保存的较新内容；系统提示刷新后重新确认，并保留当前未保存输入。

### 5.3 项目页面组成

项目页面至少包含：页面编号、所属项目、页面名称及多语言文本、页面来源、来源模板记录、Widget 实例、顺序与展示规格、Widget引用能力记录、素材引用、页面封面、页面状态、最近保存人和最近保存时间。

系统为每个页面维护一份当前有效内容及最近保存人、最近保存时间等审计信息。项目主题按页面所属项目读取当前有效配置。

### 5.4 页面生成与来源模板解耦

- 新建页面先进入未保存编辑状态，用户可在第一次保存前更换已启用模板。
- 更换模板时清空当前未保存的 Widget 配置，并按新模板重新生成初始配置。
- 页面第一次保存成功时生成独立页面实例，并记录来源模板标识和名称。
- 使用普通模板时，复制模板当时登记的所有 Widget、顺序、展示规格、来源记录和能力记录作为页面初始配置。
- 使用自由模板时，页面保持空白直至用户添加至少一个已启用 Widget；用户可继续添加、重复添加、排序 Widget，并为每个 Widget 选择一个支持展示规格。
- 页面生成成功后运行自身配置；来源模板仅用于追溯且不可更换。
- 模板后续对页面 Widget、页头、页脚或其他固定公共部分的修改作为之后新建页面的初始内容，既有页面继续使用自身配置。
- 页面修改只保存到当前页面实例。

### 5.5 页面 Widget

- 每个页面至少保存一个 Widget 实例，可包含多个 Widget，也可重复引用同一 Widget。
- 每个 Widget 在顾客端独占内容窗口；同一时刻不与页面中其他 Widget 并排展示。
- 普通模板页面使用创建时复制的有序 Widget 结构和展示规格，页面内不可修改；自由模板页面可添加、删除、排序 Widget，并修改各 Widget 的展示规格。
- 页面 Widget 顺序是顾客端导航和演示模式顺序的依据。A端只维护 Widget 顺序，不配置导航样式、演示模式按钮或切换动效。
- 每个 Widget 实例必须从其支持集合中选择微、小、中、大之一。该规格表示 Widget 在独占窗口内采用的展示方案，不决定页面同时展示数量；具体视觉表现由 C端重构与 Widget 设计定义。
- 页面编辑可维护每个 Widget 的展示名称、五语文本、素材选择及该 Widget 定义的内容配置。
- Widget 停用只影响新增引用，既有页面继续使用自身保存的 Widget 引用能力记录。
- 页面保存前必须校验所有 Widget 的展示规格、展示名称、五语文本和内容配置完整性。

### 5.6 素材引用与同步

- “自动带入”Widget 依据当前项目读取最新有效内容，不提供人工选择。
- “选择项目内容”Widget 从允许的数据来源分类中列出当前项目可用素材，用户保存素材标识及页面内顺序。
- 页面保存素材标识和选择关系；素材标题、说明、图片、视频或其他正文由素材源统一维护。
- 素材源变化后，页面在下一次读取或刷新时使用最新有效内容。
- 页面编辑素材选择关系并保存成功后立即生效。
- 素材被停用、删除或失去公开权限后，页面 Widget 按其空状态、隐藏或不可用规则降级。
- 页面封面属于页面目录信息，不属于 C端模块素材；封面更换随页面保存立即生效。

### 5.7 页面编辑、预览与保存

- 编辑界面的输入在保存前仅保留于当前编辑会话；离开会话后丢弃。
- 预览展示当前编辑内容、当前项目主题和最新有效素材，仅用于检查效果。
- 关闭预览后返回当前编辑会话，页面状态保持原值；保存可以直接发起。
- 保存前校验页面名称及五语文本、至少一个 Widget、所有 Widget 展示规格与内容完整性、权限和并发冲突。
- 校验通过且保存成功后，当前页面配置立即成为 A、B、C 端读取的唯一有效内容。
- 校验失败或保存失败时，页面继续使用最近一次保存成功的有效内容；本次输入在当前编辑会话内保留并显示原因，离开或关闭编辑会话后丢弃。
- 名称明确为测试用途的项目可以保存带明确模拟标识的数据；其他项目不得将模拟数据保存为有效页面内容。

### 5.8 页面访问状态

```text
第一次保存成功 → 已启用 ↔ 已停用 → 已删除
已启用 ───────────────────→ 已删除
```

- 已启用页面可进入 B端页面库。A端创建的页面进入页面库时，由 B端创建唯一固定链接并默认启用、默认需要认证。
- 页面第一次保存成功后进入已启用状态；已启用只表示页面可进入 B端页面库，不代表固定链接一定可访问。
- 顾客访问同时检查页面可用状态和 B端固定链接状态；固定链接的公开状态决定匿名直达或客户识别，A端页面不保存公开状态。
- 页面内容保存不改变固定链接地址、启停、公开状态、客户关联或客户标识参数；当前可用链接继续读取该页面最新保存内容。
- 已停用页面不可被顾客访问，但授权人员仍可编辑和保存；重新启用后直接读取最近保存内容。
- B端固定链接被停用时，顾客不可访问，但页面仍可保持已启用。
- 已删除不可恢复；A、B端不再提供普通查看、编辑或分享，C端既有链接返回页面不可用。
- 页面内容保存不自动改变启用或停用状态。
- A端来源页面下架后，B端保留固定链接地址、启停、公开状态、客户关联和客户标识参数，页面内容停止访问；A端恢复上线后继续同步同一页面，原链接按原状态恢复使用。
- A端来源页面删除后，B端永久解除来源关系并保留链接及历史关联记录；该链接停止访问且不可因同名新页面恢复。

## 6. 用户用例

### UC-P01：创建项目页面

选择项目和已启用模板。普通模板直接带入全部有序 Widget 及其展示规格；自由模板页面由用户添加、排序一个或多个已启用 Widget，并为每个 Widget 选择展示规格。完成页面名称、多语言文本及各 Widget 内容配置后，保存生成独立页面实例，状态为已启用并立即成为唯一有效内容。A端创建的页面进入 B端页面库后由 B端生成固定链接；链接公开、认证、启停和客户关联均由 B端管理。保存前可预览，但预览不是保存门槛。

### UC-P02：编辑页面并立即生效

打开已启用或已停用页面，修改允许编辑的页面或 Widget 内容配置并保存。保存成功后更新唯一有效页面内容；已启用且固定链接可用的页面，顾客再次读取时看到新内容，链接地址不变。

### UC-P03：素材更新同步到页面

页面已经引用某项素材。素材源内容修改后，页面在下一次读取或刷新时展示最新有效素材。

### UC-P04：停用和重新启用

停用页面后顾客访问立即停止；B端保留固定链接状态与客户关系，授权人员仍可编辑并保存。重新启用后，B端恢复来源同步，原固定链接按原启停和公开状态继续使用最近保存内容。

### UC-P05：删除页面

从已启用或已停用状态发起删除，二次确认后进入已删除终态；仅保留满足审计需要的最小操作记录，不保存可恢复页面内容。

## 7. 功能需求矩阵

| 功能 ID | 功能名称 | 关联用例 | 优先级 |
|---|---|---|---|
| P-001 | 项目选择与切换 | UC-P01 | P0 |
| P-002 | 使用模板生成独立页面 | UC-P01 | P0 |
| P-003 | 页面 Widget 与素材配置 | UC-P01、UC-P02 | P0 |
| P-004 | 素材引用与最新内容读取 | UC-P03 | P0 |
| P-005 | 页面预览 | UC-P01、UC-P02 | P0 |
| P-006 | 页面保存并立即生效 | UC-P01、UC-P02 | P0 |
| P-007 | 页面启用、停用与删除 | UC-P04、UC-P05 | P0 |
| P-008 | 权限、并发与操作留痕 | UC-P02、UC-P04、UC-P05 | P0 |

## 8. 页面与交互要求

### 8.1 项目页面列表

列表展示页面名称、编号、封面、页面来源、来源模板、状态、最近保存时间和操作。

- 状态筛选只提供已启用、已停用。
- 列表以最近保存时间表示当前有效内容的更新时间。
- 操作提供预览、编辑、停用/重新启用和删除。
- 当前项目摘要显示页面总数、已启用数量和“创建项目页面”。
- 列表需提示“已启用不代表已分享”；A端不展示为顾客已经可访问，也不代替 B端分享状态。

### 8.2 页面编辑

- 新建和编辑均使用全屏页面。
- 页面基本信息区展示页面名称、国际化、只读页面来源、来源模板和封面。
- 页面 Widget 区展示页面的全部 Widget、顺序和展示规格；自由模板页面可增删、排序并选择规格，普通模板页面保留创建时的 Widget 结构和规格。
- 页面不提供导航样式、演示模式按钮或切换动效配置。
- 素材选择弹窗只显示当前项目、当前语言下有效且允许使用的素材。
- 页面固定操作区提供返回、预览和保存。
- 保存按钮旁提示“保存成功后立即生效”。
- 页面状态或保存提示需说明：页面已启用后仍需由 B端固定链接提供访问；A端不管理链接启停、公开状态和客户识别。

### 8.3 状态操作

- 停用和删除使用二次确认对话框。
- 重新启用可直接确认，并使用最近保存内容。
- 状态操作与页面内容保存分别提交。

## 9. 异常与边界

| 场景 | 页面处理 |
|---|---|
| 未选择项目 | 返回项目清单。 |
| 没有已启用模板 | 禁止创建页面并说明原因。 |
| 新页面没有有效 Widget | 阻止第一次保存，页面保持当前编辑状态。 |
| 页面或 Widget 展示名称五语不完整 | 指出缺失语言并阻止保存。 |
| Widget 内容不完整 | 指出具体内容并阻止保存。 |
| Widget 展示规格缺失或不在支持集合中 | 指出具体 Widget 并阻止保存。 |
| 非测试项目选择模拟数据 | 阻止保存为有效页面内容。 |
| 模板在第一次保存前失效 | 阻止保存，提示重新选择有效模板。 |
| 新增 Widget 在保存前停用 | 阻止保存，保留页面其他信息，并提示删除该 Widget 或改用已启用 Widget。 |
| 模板在页面生成后变化 | 既有页面继续使用自身配置，来源模板记录保持不变。 |
| 素材内容变化 | 页面下次读取或刷新时使用最新有效内容。 |
| 素材失效 | 页面 Widget 按其空状态、隐藏或不可用规则降级。 |
| 保存时页面已被他人更新 | 不覆盖较新内容；提示刷新后重新确认并保留当前输入。 |
| 保存失败 | 页面继续使用最近一次保存成功的内容；当前编辑会话内保留输入并允许重试，离开后丢弃。 |
| 无操作权限 | 不显示操作或拒绝请求，并明确提示暂无权限。 |
| 页面已启用但 B端固定链接已停用 | 顾客不能访问；页面状态和页面内容不变化。 |
| 页面已停用或已删除但 B端保留原固定链接 | 页面状态优先，顾客不能访问；B端保留链接地址、客户关系和历史记录。 |

## 10. 数据与配置说明

本文字段用于说明产品对象，不等同于数据库或接口设计。

| 产品字段 | 页面名称 | 来源 | 规则 |
|---|---|---|---|
| `page_id` | 页面编号 | 系统生成 | 第一次保存成功后生成，全局唯一。 |
| `project_id` | 所属项目 | 当前项目 | 创建后不可修改。 |
| `page_source` | 页面来源 | 创建端 | 系统默认提供或客户自定义，只读。 |
| `source_template_id` | 来源模板标识 | 第一次保存 | 只用于追溯，不参与后续渲染。 |
| `source_template_name` | 来源模板名称记录 | 第一次保存 | 只读记录。 |
| `page_names` | 页面名称五语文本 | 页面配置 | 五语完整才可保存。 |
| `page_widgets` | 页面 Widget | 模板初始配置或页面编排 | 有序数组；保存每个 Widget 的独立引用、展示名称、展示规格和内容配置。 |
| `display_mode` | Widget 展示规格 | 模板复制或自由模板页面配置 | 微、小、中、大之一；必须属于该 Widget 的支持集合。 |
| `widget_capability_record` | Widget 引用能力记录 | Widget 生成时记录 | 只固定内容配置能力，不保存页面或素材正文。 |
| `asset_references` | 素材引用 | 页面配置 | 仅保存素材标识和页面内顺序；读取最新有效内容。 |
| `page_cover` | 页面封面 | 页面配置 | 仅用于 A/B 页面库。 |
| `page_status` | 页面状态 | 页面操作 | 已启用、已停用、已删除。 |
| `updated_at` | 最近保存时间 | 系统记录 | 每次成功保存后更新。 |
| `updated_by` | 最近保存人 | 系统记录 | 记录最近一次成功保存者。 |

页面内容模型只包含当前有效配置；最近保存人、最近保存时间和操作记录用于审计。

## 11. 验收标准

| AC编号 | Given | When | Then |
|---|---|---|---|
| AC-P01 | 已选择项目且存在已启用模板 | 创建页面 | 进入未保存编辑状态，尚不生成页面实例。 |
| AC-P02 | 新页面配置完整 | 第一次保存成功 | 生成独立页面实例，状态为已启用，页面内容立即生效。 |
| AC-P03 | 新页面配置不完整 | 点击保存 | 指出问题并阻止保存，不生成页面实例。 |
| AC-P04 | 页面已生成 | 修改来源模板任意内容 | 页面继续使用自身 Widget、固定公共部分、内容、链接和状态。 |
| AC-P05 | 页面已生成且固定链接可用 | 修改页面配置并保存 | 当前页面成为新的唯一有效内容；顾客再次读取时显示最新保存内容，链接地址不变。 |
| AC-P06 | 用户已修改页面但尚未保存，且固定链接可用 | 顾客访问 | 顾客继续看到最近一次保存成功的页面内容。 |
| AC-P07 | 页面引用有效素材 | 修改素材源内容 | 页面下次读取或刷新时显示最新素材。 |
| AC-P08 | 页面引用素材失效 | 打开页面 | 页面 Widget 按已定义的空状态、隐藏或不可用规则降级。 |
| AC-P09 | 页面处于已停用 | 编辑并保存 | 保存最新内容但顾客仍不可访问。 |
| AC-P10 | A端来源页面处于已停用 | 重新启用 | 页面直接使用最近保存内容；B端恢复来源同步，原固定链接按原启停和公开状态继续使用。 |
| AC-P11 | A端来源页面处于已启用 | 停用 | 顾客停止访问；B端固定链接地址、启停、公开状态、客户关系和客户标识参数保持原值。 |
| AC-P12 | 已启用或已停用页面 | 删除并确认 | 页面进入已删除终态，普通界面不可恢复。 |
| AC-P13 | 多人编辑同一页面 | 后提交者保存旧内容 | 不覆盖较新内容，提示刷新后重新确认。 |
| AC-P14 | 打开并关闭页面预览 | 返回编辑 | 返回同一编辑会话，页面状态保持原值。 |
| AC-P15 | 查看页面列表和编辑页 | 检查字段与操作 | 页面只展示当前有效内容、最近保存信息、预览、保存和状态操作。 |
| AC-P16 | 新建自由模板页面 | 添加、重复添加、排序 Widget 或选择展示规格 | 页面保留多个独立 Widget 实例、当前顺序及各自展示规格。 |
| AC-P17 | 已保存自由模板页面 | 增删、排序或编辑 Widget 展示规格与内容并保存 | 修改只进入当前页面，来源模板和其他页面不变。 |
| AC-P18 | 页面使用当前项目主题 | 项目主题变化 | 页面下次读取或刷新时使用当前主题。 |
| AC-P19 | 非测试项目使用模拟数据 | 点击保存 | 阻止保存为有效页面内容并说明原因。 |
| AC-P20 | 检查页面数据 | 查找内容版本 | 只存在当前有效配置和最小审计记录。 |
| AC-P21 | A端页面第一次保存成功并进入 B端页面库 | 检查 B端固定链接 | B端为该页面创建唯一固定链接，默认启用且默认需要认证；A端不出现链接配置。 |
| AC-P22 | 页面已启用但 B端固定链接已停用 | 顾客尝试访问 | 顾客看到链接失效结果；页面状态仍为已启用。 |
| AC-P23 | 页面已启用且 B端固定链接可用 | 顾客按链接公开或认证规则访问 | 顾客读取页面最新保存配置、最新有效素材和项目当前主题。 |
| AC-P24 | B端变更固定链接公开或启停状态 | A端查看或保存页面 | A端页面内容和已启用状态不变化，也不出现固定链接设置。 |
| AC-P25 | A端来源页面已下架 | 顾客打开原固定链接 | 页面停止访问；B端保留链接地址、启停、公开状态和客户关系。 |
| AC-P26 | A端来源页面恢复上线 | 顾客打开原固定链接 | B端继续同步该页面；原链接按原启停和公开状态恢复使用。 |
| AC-P27 | A端来源页面已删除 | 顾客打开原固定链接 | 链接不再展示页面内容，来源关系永久解除，同名新页面不恢复原链接。 |
| AC-P28 | 页面包含多个 Widget | 在顾客端查看 | 同一时刻仅显示一个独占内容窗口的 Widget，可通过导航或演示模式按钮切换。 |
| AC-P29 | 打开 A端页面编辑 | 检查 Widget 配置 | 普通模板页面只读显示已锁定规格；自由模板页面可从支持集合选择规格；均不出现导航样式或演示模式按钮配置。 |
| AC-P30 | 新增 Widget 在保存前已停用 | 点击保存 | 阻止保存，保留页面其他内容并提示删除该 Widget 或改用已启用 Widget。 |
| AC-P31 | 页面包含多个不同展示规格的 Widget | 在顾客端导航或演示切换 | 同一时刻仍只显示一个 Widget，并按当前 Widget 保存的规格渲染。 |

## 12. 风险与依赖

| 风险 / 依赖 | 影响 | 应对 |
|---|---|---|
| 页面编辑误改素材正文 | 素材同步失去统一来源 | 页面只保存素材引用；素材正文从素材管理入口编辑。 |
| 保存即生效导致错误内容可见 | 固定链接可用的页面会让顾客在下次读取时看到错误 | 保存前执行完整性、权限和并发校验；预览作为可选检查能力。 |
| 素材失效造成模块空白 | 页面局部不可用 | Widget和C端定义对应空状态、隐藏或不可用提示。 |
| 把页面已启用误认为顾客已可访问 | A/B/C端访问判断不一致 | 顾客访问同时校验页面状态和 B端固定链接；A端不管理链接。 |
| Widget能力记录与最新代码不兼容 | 既有页面行为不确定 | 不兼容变化使用新的 Widget 标识，既有页面保持原引用。 |

## 13. 待确认事项

无。页面实例、模板解耦、素材同步、保存生效和页面版本规则已于 2026-09-02 确认。

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

- 页面生成后运行自身配置，来源模板及其固定公共部分只在创建时提供初始内容。
- 页面保存素材引用，素材正文由素材源统一维护。
- 系统为每个页面维护一份当前有效内容，预览用于检查，保存成功后立即替换有效内容。
- 保存生效的边界是保存成功；输入过程中的逐字段修改仅在当前编辑会话可见。
- 页面内容保存与页面启用、停用是两个独立动作。
- 页面启用状态与 B端固定链接状态是两个独立对象；顾客访问同时校验页面可用性、链接启停和链接公开/认证规则。
- 项目主题与页面模板是两个独立对象；页面运行自身结构并读取项目当前有效主题。
- 每个页面可保存多个 Widget 实例、顺序和逐 Widget 展示规格；每个 Widget 独占顾客端内容窗口。
- A端配置 Widget 展示规格，但不配置页面导航或演示模式按钮；切换交互由顾客端页面规则提供。
