﻿# HOMEVISTA A端页面模板管理 PRD

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

## 修订记录

| 版本 | 日期 | 变更类型 | 变更摘要 | 备注 |
|---|---|---|---|---|
| v0.1 | 2026-07-28 | 初始创建 / 文档结构重构 | 从原01、02、03、04文档迁移页面模板注册、编辑、Widget区块编排、状态和验收规则，建立页面模板管理唯一事实源。 | 原文及历史修订记录见 `archive/`。 |
| v0.2 | 2026-07-28 | **重大模板编辑与区块规则变更** | 删除人工填写的 Widget区块名称，重复 Widget由系统按名称和出现顺序自动编号；页面模板注册与编辑统一使用全屏表单，除模板标识外均可编辑，保存后状态不变，只影响之后新建的项目页面。 | 产品确认。 |
| v0.3 | 2026-07-28 | **重大历史停用Widget编辑规则补充** | 模板保留已存在的停用Widget区块，并允许保存模板名称、顾客任务及其他未触碰区块的修改；停用Widget不得新增，其历史区块只能保持不变或删除。模板区块同步固化单选/多选规则。 | 跨文档评审后产品确认。 |
| v0.4 | 2026-07-30 | **重大 Widget元数据与展示规格边界变更** | 页面模板引用 Widget时只读记录代码提供的 Widget元数据；A端不编辑内容配置方式、数据来源或选择数量。MVP删除区块展示规格，模板只登记 Widget数量、重复引用和排序，具体布局与表现由模板和 Widget代码实现。 | 产品确认。 |
| v0.5 | 2026-07-30 | **重大模板与项目页面关系变更** | 模板改为只提供创建项目页面时的初始模块清单和顺序；页面创建后仅保留来源模板记录，页面模块独立存在并可增删改，不再受模板结构约束或后续变化影响。 | 产品确认。 |
| v0.6 | 2026-08-03 | 重大模板与页面封面边界补充 | 明确页面模板不带封面；页面封面仅属于创建后的实例页面。 | 产品确认清单。 |
| v0.7 | 2026-08-04 | 重大既有 Widget 引用编辑规则修订 | Widget 停用只阻止新增引用，不强制替换既有模板区块或页面模块；仅发生不兼容变更时另以新 Widget 标识处理。 | 2026-08-04 跨端评审确认。 |
| v0.7 | 2026-08-04 | **重大协同与元数据快照规则补充** | 明确模板区块的 Widget 元数据由系统固化为只读快照；补充无权限与多人并行编辑时的页面表现。 | 对照 A端前端技术架构设计文档后的产品确认。 |
| v0.8 | 2026-08-04 | **重大内容配置方式与内容分类规则同步** | Widget 元数据中的可配置内容同步收口为自动带入或选择项目内容；模板区块改为固化项目内容分类规则，不再记录自定义内容。 | 产品确认。 |
| v0.9 | 2026-08-04 | **重大数据来源分类术语同步** | Widget 元数据的“内容分类规则”统一更名为“数据来源分类规则”，与 Widget 管理 PRD 的 5.5 保持一致；仅调整术语，不改变模板区块快照行为。 | Widget 管理方案同步。 |
| v0.10 | 2026-08-06 | **重大：通用模板与首批模板清单调整** | 新增不预置 Widget 的已启用“通用模板”；其项目页面允许页面级增删 Widget 与展示模式配置。其余模板页面保留模板 Widget 结构，仅配置数据与模块名称。首批补齐四个 P0 页面模板。 | A端技术评审后产品确认。 |
| v0.11 | 2026-08-06 | 操作命名与选择项表达统一 | 页面模板与通用模板页面统一使用“添加 Widget 模块”操作名称；Widget 选择下拉项统一显示为“Widget名称 · 数据带入方式”。不改变模板区块和页面模块的业务归属。 | A端技术评审后产品确认。 |
| v0.12 | 2026-08-06 | **重大 Widget 内容选择规则收口** | 模板 Widget 区块快照删除选择数量、单选/多选规则；仅保留内容配置方式、数据来源分类和支持展示模式。 | 产品确认。 |
| v0.13 | 2026-08-06 | **重大模板 Widget 布局方案新增** | 模板添加 Widget 模块后，必须从该 Widget 工程师导入的支持展示模式中单选一个模板布局方案；布局方案随区块保存、随非通用模板创建的项目页面复制并锁定。 | 产品确认。 |
| v0.14 | 2026-08-24 | **重大通用模板跨端与保护规则同步** | 通用模板收口为名称固定的系统预置模板：始终已启用、无 Widget、不可编辑、删除或停用；A端和 B端均可选择它创建可自由组装模块的页面实例。 | 专项文档现已更名为 `05-A端自由模板PRD.md`。 |
| v0.15 | 2026-09-02 | **重大模板与页面完全解耦规则补强** | 明确页面第一次保存成功后不再读取来源模板；模板后续对模块、布局、页头、页脚及其他固定公共部分的任何变化均只影响以后新建页面。 | 产品确认；统一方案见 `../修改说明/2026-09-02-ABC端页面实例统一规则修改说明.md`。 |
| v0.16 | 2026-09-03 | 文档表达清理 | 正文直接描述模板与页面实例的当前关系：模板提供新页面初始配置，页面实例独立保存并运行；清理以否定旧逻辑表达现行规则的重复内容。 | 初步需求评审整改。 |
| v0.17 | 2026-09-03 | **重大：自由模板名称、维护与 B端使用方式对齐** | “通用模板”统一更名为“自由模板”；A端提供并维护空白结构和初始样式，B端新建页面时自动使用且不展示模板对象；模板更新只影响之后开始新建的页面。 | 对齐 B端《VISTA Link 产品需求文档》V0.251；专项规则见 `05-A端自由模板PRD.md`。 |
| v0.17 | 2026-09-03 | **重大：自由模板系统维护边界确认** | 自由模板由产品与研发随系统版本维护；A端操作人员只读查看，模板清单不提供编辑、改名、复制、停用或删除入口。 | 产品确认；同一连续编辑时段沿用 v0.17。 |
| v0.17 | 2026-09-03 | **重大：多 Widget 独占窗口与尺寸配置取消** | 普通模板保留多 Widget、重复添加和有序编排；删除微、小、中、大尺寸、支持展示模式和布局方案。每个 Widget 在顾客端独占内容窗口，导航与演示模式切换不由 A端配置。 | 产品纠正；同一连续编辑时段沿用 v0.17。 |
| v0.18 | 2026-09-04 | **重大：恢复 Widget 展示规格并保留独占窗口切换** | 普通模板恢复为每次 Widget 引用选择微、小、中、大中的一个支持展示规格；该规格随页面生成并锁定。C端仍每次只展示一个 Widget，导航和演示模式切换不由 A端配置。 | 撤回 2026-09-03 17:16 的尺寸取消要求。 |

## 1. 文档目的

本文定义 A端页面模板管理的产品边界、注册信息、Widget 编排、编辑影响、状态规则和验收标准。Widget的可用规则见 `01-A端Widget管理PRD.md`；使用模板创建项目页面的规则见 `03-A端项目页面管理PRD.md`。

## 2. 产品背景与目标

页面模板与 Widget 一样，是需要开发人员实现的产品能力。普通页面模板登记一个或多个有序 Widget，并为每次引用选择展示规格；创建页面时将结构、顺序和规格复制为页面的 Widget 实例。顾客端同一时刻只展示一个独占内容窗口的 Widget，并通过导航或演示模式按钮切换；A端不配置切换控件。自由模板是由产品与研发随系统版本维护的空白起点，A端操作人员只读查看，A端创建页面时可以选择，B端新建页面时自动使用；专项规则见 `05-A端自由模板PRD.md`。

本期目标：

1. 为页面模板生成全局唯一、长期不变的标识。
2. 登记模板的顾客任务和有序 Widget 结构。
3. 为每次 Widget 引用选择一个受支持的展示规格，同时保持顾客端独占窗口展示。
4. 通过状态控制只有已启用模板可以创建项目页面。
5. 模板只负责提供项目页面的初始 Widget；项目页面创建后独立保存和运行。

## 3. MVP范围与边界

### 3.1 本期包含

- 页面模板列表、搜索和状态筛选；
- 注册页面模板并取得唯一标识；
- 查看和编辑模板名称、顾客任务及 Widget 结构；
- 添加、重复添加、删除和排序 Widget；
- 为每次 Widget 引用选择微、小、中、大中的一个支持展示规格；
- 人工确认上线；
- 停用和重新启用；
- 查看已生成项目页面数量。
- 展示一个系统必备、不预置 Widget 或固定内容的自由模板，以及项目概览、户型浏览、周边地图、住户展示四个已添加的 P0 页面模板。
- 模板修改作为之后新建项目页面的初始内容；已生成页面持续使用自身保存的配置。

### 3.2 本期明确不做

- 不在 A端开发、上传或修改模板代码；
- 不提供自由画布、像素级布局、CSS或脚本编辑；
- 不配置顾客端导航样式、演示模式按钮或 Widget 切换动效；
- 不在 A端管理页头、导航等通用组件和固定非区块内容；
- 不登记模板分类；
- 不允许直接访问或分享模板；
- 不实施模板自动验证；
- 不在本文定义任何具体 C端页面的内容和视觉需求。

### 3.3 管理边界

A端登记的 Widget 结构覆盖需要按项目动态配置的页面内容。模板代码可以包含页头、导航、项目联系页脚、固定标题、装饰和其他通用内容。导航或演示模式按钮负责切换 Widget，但不属于 A端模板字段。

“编辑页面模板”只表示编辑 A端登记信息，不表示编辑模板代码。模板标识不可修改；模板名称、顾客任务、Widget 数量、顺序和展示规格允许修改。模板不带页面封面；页面创建后由系统带入平台默认封面，随后封面只属于该实例页面。保存后模板当前状态保持不变。页面第一次保存成功后形成独立实例，保存来源模板记录和创建时的初始页面配置；之后新建项目页面使用最新模板。模板代码中的页头、页脚及其他固定公共部分须在创建时固化为页面实例自己的配置或运行能力。

A端无法确认模板代码是否已同步变化，因此编辑页面必须提示操作人员自行确认登记结构与实际模板代码一致；MVP不设置无法真正执行的强制重审流程。

## 4. 用户角色与场景

### 4.1 目标用户

- A端产品或模板配置人员：注册并维护模板登记信息。
- 模板开发人员：取得模板标识并完成代码实现。
- 测试人员：确认模板代码与登记结构一致。

### 4.2 核心场景

- 开发前注册模板并取得唯一标识。
- 从已启用 Widget 清单建立普通模板的有序 Widget 结构。
- 同一 Widget 在页面中多次出现时，分别保存为独立引用。
- 开发完成后人工确认模板上线。
- 调整模板登记信息供后续新项目页面使用。
- 停用模板，阻止继续创建新页面，但保留已有页面。

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

### 5.1 页面模板注册信息

| 页面属性 | 规则 |
|---|---|
| 模板标识 | 系统预生成；全局唯一；注册后永久固定；开发必须使用。 |
| 模板名称 | 供业务人员识别。 |
| 顾客任务 | 用自然语言说明页面帮助顾客完成什么任务。 |
| Widget 结构 | 普通模板对一个或多个 Widget 的有序引用；同一 Widget 可重复引用；每次引用单独保存展示规格。 |
| 状态 | 待验证、已启用、已停用。 |
| 已生成页面数 | 只读统计，用于判断停用和修改影响。 |

MVP不设置模板分类字段，列表和筛选中也不得出现模板分类。

以上字段与状态操作适用于普通页面模板。自由模板的身份、结构和状态由系统提供，A端操作人员仅在模板清单中只读查看。

### 5.2 自由模板与首批页面模板

- “自由模板”是全系统唯一的页面创建起点，始终可用，只包含空白结构和初始样式，不预置页头、页尾、Widget、素材、固定文案或其他固定内容。产品与研发随系统版本维护其结构和样式，A端操作人员只读查看；B端不展示模板对象，用户点击新建页面时自动使用当前自由模板。完整规则以 `05-A端自由模板PRD.md` 为准。
- 项目概览、户型浏览、周边地图、住户展示是首批已添加的 P0 页面模板；“户型浏览”对应户型卡片列表 Widget 的页面场景。
- 自由模板不预置 Widget；创建页面时可从已启用清单添加一个或多个 Widget。
- 普通模板提供已登记的有序 Widget 结构；其页面级可编辑范围由《03-A端项目页面管理PRD.md》限定。

首批 P0 页面模板当前各预置一个 Widget，但模板能力允许包含多个 Widget：

| 页面模板 | 页面 Widget |
|---|---|
| 项目概览 | 项目概览 |
| 户型浏览 | 户型卡片列表 |
| 周边地图 | 周边地图 |
| 住户展示 | 住户展示 |

### 5.3 Widget 结构

- 普通模板至少包含一个已启用 Widget，允许添加多个 Widget，也允许重复添加同一 Widget。
- 每次添加都生成独立引用编号，并保存 Widget 标识、名称、内容配置方式、数据来源分类和展示规格。
- Widget 选择项显示“Widget名称 · 数据带入方式”，数据带入方式取自 Widget 只读元数据。
- A端保存 Widget 顺序，用于页面初始结构及顾客端导航、演示模式的顺序依据。
- 每次引用必须从该 Widget 的支持展示规格中单选微、小、中、大之一；未选择或选择值已不受支持时阻止保存。
- 展示规格表示当前 Widget 在独占窗口中采用的展示方案，不决定同时展示数量。每个 Widget 在顾客端仍独占内容窗口；A端不配置导航样式、演示模式按钮或切换动效。
- 编辑普通模板时可增删和排序 Widget；保存后只影响之后新建的页面，既有页面保持原配置。

### 5.4 Widget可用条件

- 新增 Widget 时只显示已启用 Widget。
- 待验证或已停用 Widget不能加入新模板。
- 模板已引用后来停用的 Widget 时，允许保持该引用并编辑模板其他信息，也可更换为已启用 Widget。
- Widget 停用本身不阻断模板名称或顾客任务的编辑和保存；既有页面继续按已保存能力工作。
- 只有开发明确该 Widget 的后续能力与既有引用不兼容时，才以新的 Widget 标识提供替换方案；不得把“停用”默认理解为不兼容。
- Widget停用不删除已经存在的模板和项目页面引用。

### 5.5 Widget元数据记录

- Widget元数据由 Widget代码提供，模板管理页面只读展示。
- 每次新增 Widget 时，系统记录该 Widget 当时的内容配置方式、数据来源分类和支持展示规格；A端只展示和使用，不编辑、不回传。
- 顺序与展示规格是两项独立数据：顺序决定导航和演示顺序，展示规格决定当前 Widget 使用哪种展示方案。
- 模板配置人员不能修改 Widget元数据。
- Widget元数据发生不兼容变化时，应注册新的 Widget标识；已有模板引用保持原能力记录。

### 5.7 状态规则

```text
注册成功 → 待验证 → 人工确认上线 → 已启用
已启用 → 停用 → 已停用
已停用 → 重新启用 → 已启用
```

- 注册后直接进入待验证，不存在待开发状态。
- 待验证模板不能创建项目页面。
- MVP不执行自动验证；操作人员确认模板代码已使用正确标识部署并能按登记顺序承载所有 Widget 后启用。
- 已停用模板不能创建新项目页面，但不影响已有页面。

### 5.8 模板与项目页面

- 模板只用于创建页面实例；顾客访问和分享的对象均为页面实例。
- 只有已启用模板可用于创建项目页面。
- 创建项目页面时，将普通模板的所有 Widget 按当时顺序复制为页面的独立 Widget 实例，同时复制 Widget 标识、名称和引用能力记录。
- 页面第一次保存成功后，项目页面运行时读取自身的模块和固定公共部分配置；“来源模板”只用于追溯。
- A端或 B端以自由模板开始新建页面时，可添加、删除和排序多个 Widget；每次修改只保存到当前页面。
- 普通模板生成的项目页面保留创建时复制的 Widget 结构，页面编辑范围为具体项目数据和 Widget 展示名称。
- 模板后续修改作为之后新建页面的初始内容；已有页面继续使用创建时形成并经页面保存更新的自身配置、链接和分享状态。
- 编辑除模板标识外的登记信息不会改变模板状态。

### 5.9 权限与并行编辑

- 只有具备相应管理权限的操作人员才能查看、注册、编辑、确认上线、停用或重新启用模板；无权限时不显示可执行操作，并明确提示暂无权限。
- 多人同时编辑同一模板时，后提交的一方不得静默覆盖已保存的较新内容。系统应提示刷新后重新确认；未保存输入由页面保留至操作人员主动处理。
- 权限的具体角色、权限名称和后台校验方式由权限设计定义，不在本文固定。

## 6. 用户用例

### UC-T01：注册页面模板

**前置条件**：注册模板时至少存在一个已启用 Widget；自由模板为系统必备对象，不适用普通注册流程。

**主流程**：

1. 进入“Widget与模板管理 → 页面模板”。
2. 点击“注册页面模板”。
3. 查看系统预生成的模板标识。
4. 填写模板名称和顾客任务。
5. 添加一个或多个已启用 Widget。
6. 为每个 Widget 引用选择一个支持展示规格。
7. 必要时重复添加并调整 Widget 顺序。
8. 提交注册。

**结果**：模板标识固定，模板进入待验证。

**异常 / 边界**：模板没有 Widget、名称缺失、Widget不可用或 Widget元数据缺失时阻止注册；自由模板不进入本用例。

### UC-T02：编排多个 Widget

用户可添加多个 Widget、重复添加同一 Widget，为每次引用选择展示规格，并通过拖拽调整顺序。系统为每次引用分配独立编号；顺序作为页面导航和演示顺序的数据依据，展示规格不改变独占窗口规则。

### UC-T03：确认模板上线

**前置条件**：模板待验证，开发人员已使用模板标识完成部署。

**主流程**：操作人员查看人工确认说明并确认上线。

**结果**：模板变为已启用，可用于创建项目页面。

### UC-T04：编辑页面模板

**前置条件**：模板已经注册。

**主流程**：

1. 进入模板编辑。
2. 修改名称、顾客任务或 Widget 结构。
3. 保存修改。

**结果**：模板标识和当前状态保持不变；已有项目页面的 Widget 及固定公共部分保持原配置，之后新建项目页面使用最新模板。

### UC-T05：停用或重新启用

**前置条件**：模板已启用或已停用。

**结果**：停用后不能创建新页面；既有页面保持原状态和访问规则；重新启用后恢复新建可选。

## 7. 功能需求矩阵

| 功能ID | 功能名称 | 关联用例 | 优先级 |
|---|---|---|---|
| T-001 | 模板列表与筛选 | UC-T04、UC-T05 | P0 |
| T-002 | 注册页面模板 | UC-T01 | P0 |
| T-003 | Widget 编排 | UC-T01、UC-T02、UC-T04 | P0 |
| T-004 | 编辑页面模板 | UC-T04 | P0 |
| T-005 | 人工确认上线 | UC-T03 | P0 |
| T-006 | 停用与重新启用 | UC-T05 | P0 |

## 8. 页面与交互要求

### 8.1 页面模板列表

列表展示模板名称、模板标识、Widget 数量、已生成页面数量、状态和操作。自由模板的 Widget 数量显示“不预置”。支持名称或标识搜索及状态筛选；不得显示模板分类。

列表应说明：普通模板登记有序 Widget 结构；模板用于生成页面实例；页面生成后独立保存并运行，模板最新配置用于之后新建的项目页面。

### 8.2 注册与编辑页面

页面至少包含：

1. 基本信息：模板名称、模板标识、顾客任务。
2. 模板代码边界说明。
3. Widget 清单和“添加 Widget 模块”操作。
4. 每个 Widget 的名称、元数据摘要、展示规格、顺序和删除操作。

注册与编辑页面聚焦模板身份、顾客任务和有序 Widget 结构。页面为每次 Widget 引用提供受支持展示规格的单选项；不提供导航或演示模式切换控件配置。

注册与编辑复用同一套全屏表单结构和校验规则。编辑页面不使用弹窗；弹窗只用于确认上线、停用和重新启用等短确认操作。

### 8.3 空状态与错误

| 场景 | 页面处理 |
|---|---|
| 没有已启用 Widget | 显示空状态，引导先完成 Widget注册和上线。 |
| 既有 Widget 后来被停用 | 允许保持当前引用并编辑模板其他信息；新增时只可选择已启用 Widget。 |
| 选择停用 Widget | 指出具体 Widget并阻止保存。 |
| Widget元数据缺失 | 不能新增该 Widget，并提示先完成 Widget开发和元数据提供。 |
| Widget 没有支持展示规格或当前选择无效 | 阻止保存，并定位到对应 Widget 引用。 |
| 普通模板没有 Widget | 允许继续编辑，但禁止提交注册或确认上线。 |
| 查看自由模板 | 显示为系统必备、当前配置有效且无 Widget；操作列显示“系统维护”，不提供可执行操作。 |
| 模板仍待验证 | 不进入项目页面可选模板清单。 |
| 模板已停用 | 不允许创建新页面，已有页面不受影响。 |
| 没有对应操作权限 | 不提供对应操作，并提示暂无权限。 |
| 保存时模板已被他人更新 | 不覆盖较新记录，提示刷新后重新确认。 |

## 9. 数据与配置说明

本文只定义产品字段，不等同于数据库或接口设计。

| 技术字段 | 页面名称 | 来源 | 规则 |
|---|---|---|---|
| `template_id` | 模板标识 | 系统生成 | 注册后不可修改。 |
| `template_name` | 模板名称 | A端注册 | 允许编辑，不影响标识。 |
| `customer_task` | 顾客任务 | A端注册 | 自然语言说明。 |
| `widget_occurrences` | Widget 结构 | A端配置 | 有序数组，可重复引用同一 Widget；自由模板为空。 |
| `template_display_mode` | 模板展示规格 | A端配置 | 每次 Widget 引用从其支持集合中单选微、小、中、大之一。 |
| `template_status` | 状态 | 系统 / A端操作 | 待验证、已启用、已停用。 |
| `instance_count` | 已生成页面数 | 系统统计 | 只读。 |

每个 Widget 引用至少保存独立引用编号、`widget_id`、Widget名称记录、内容配置方式、数据来源分类、展示规格和顺序。

## 10. 验收标准

| AC编号 | Given | When | Then |
|---|---|---|---|
| AC-T01 | 开始注册模板 | 查看基本信息 | 模板标识由系统生成、不可修改，并说明开发必须使用。 |
| AC-T02 | 存在已启用 Widget | 向普通模板添加 Widget | 每次添加生成独立引用；选择项显示为“Widget名称 · 数据带入方式”。 |
| AC-T03 | 普通模板已包含一个 Widget | 再次添加相同或不同 Widget | 模板保留多个独立引用，重复 Widget 自动编号。 |
| AC-T04 | 模板包含多个 Widget | 拖拽排序并保存 | 保存后顺序保持，作为页面初始 Widget 顺序。 |
| AC-T05 | 查看或编辑 Widget 结构 | 检查可配置项 | 显示 Widget、内容元数据摘要和支持展示规格单选项；不出现导航或演示模式控件配置。 |
| AC-T06 | 模板信息完整 | 提交注册 | 模板进入待验证，不能创建项目页面。 |
| AC-T07 | 模板代码已部署 | 人工确认上线 | 弹窗说明不执行自动验证；确认后模板可用于新页面。 |
| AC-T08 | 模板已停用 | 新建项目页面 | 该模板不在可选清单；已有页面不受影响。 |
| AC-T09 | 模板已有项目页面 | 修改模板登记、页面 Widget 或模板固定公共部分 | 已有项目页面保持自身 Widget、页头、页脚及其他固定内容，页面只保留来源模板记录。 |
| AC-T10 | 查看模板管理 | 检查字段和筛选 | 不存在模板分类、代码上传或布局编辑入口。 |
| AC-T11 | 查看模板管理和顾客访问入口 | 尝试使用模板标识访问或分享 | 系统不提供模板访问或分享入口；模板标识不能生成顾客页面。 |
| AC-T12 | 模板已经注册 | 点击编辑页面模板 | 进入与注册页结构一致的全屏表单；模板标识只读，其他登记信息可以修改。 |
| AC-T13 | 已启用模板保存有效修改 | 返回模板列表 | 模板状态保持已启用，不出现重新验证或重新上线。 |
| AC-T14 | 模板已有项目页面 | 增删、更换或排序 Widget | 已有项目页面继续使用自身配置；之后新建页面使用最新模板作为初始内容。 |
| AC-T15 | 模板引用的 Widget 后来停用 | 编辑模板名称或顾客任务并保存 | 允许保存并保留原 Widget 引用；模板状态不变。 |
| AC-T16 | Widget 已停用 | 尝试选择该 Widget | 指出具体 Widget 并阻止保存；既有引用保持原值。 |
| AC-T17 | 选择“选择项目内容”Widget | 保存模板 | 同时记录该 Widget元数据中的数据来源分类，供项目页面使用。 |
| AC-T18 | 查看模板注册或编辑页面 | 检查 Widget 配置 | 页面支持多 Widget、重复添加、排序和逐 Widget 展示规格选择，不提供切换控件配置。 |
| AC-T19 | 使用已启用普通模板创建页面 | 首次生成页面 | 模板的所有 Widget、顺序和展示规格复制为页面独立 Widget 实例；页面保存后独立运行。 |
| AC-T20 | 系统提供自由模板 | 检查模板定义与清单记录 | 模板名称固定为“自由模板”、状态为系统必备、Widget 数量显示“不预置”，且不含页头、页尾、素材或其他固定内容。 |
| AC-T25 | A端操作人员查看自由模板 | 检查操作列及页面入口 | 操作列显示“系统维护”，且不存在编辑、改名、复制、停用或删除入口。 |
| AC-T26 | B端用户点击新建页面 | 系统读取自由模板 | 直接打开由当前自由模板生成的空白编辑页，B端不展示模板清单或选择项。 |
| AC-T21 | 查看首批模板 | 检查模板清单 | 至少存在项目概览、户型浏览、周边地图、住户展示和自由模板。 |

## 11. 风险与依赖

| 风险 / 依赖 | 影响 | 应对 |
|---|---|---|
| A端登记的 Widget 与模板代码不一致 | 项目页面无法正确承载 Widget | MVP人工确认；后续再增加自动验证。 |
| 登记结构与实际模板代码不一致 | 新建项目页面可能无法正确展示 | 编辑页提示人工确认；MVP不增加无实际校验能力的重审流程。 |
| Widget被停用 | 既有模板引用与最新可用清单不一致 | 阻止新选择；既有模板可保留引用。仅开发明确不兼容时才另行提供新标识替换。 |
| Widget元数据缺失或不完整 | 模板无法确定项目页面内容配置方式 | 不允许选择该 Widget，并提示先补齐 Widget元数据。 |
| 固定代码内容实际需要按项目变化 | A端无法配置 | 改为 Widget或明确模板参数。 |

## 12. 待确认事项

1. 模板代码发布记录是否需要在A端可见；当前原型不展示技术发布引用。

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

- 不把页面模板管理扩展成自由页面搭建器。
- 不把 C端04-01等具体页面内容复制进本文。
- 不允许模板任何修改回写既有项目页面，包括页头、页脚及其他固定公共部分；也不允许项目页面变更回写来源模板。
- 一个页面可包含多个 Widget；每个 Widget 独占顾客端内容窗口，不与其他 Widget 并排展示。
- 普通模板登记有序 Widget 结构；自由模板保持空白，创建页面时添加和排序 Widget。
- 普通模板为每次 Widget 引用保存一个支持展示规格；该规格不表示页面并排数量。
- 页面导航和演示模式按钮由顾客端规则统一提供，不在 A端配置。
- 自由模板的空白结构和初始样式只随产品版本维护；A端操作人员只读查看，其跨端使用与保护规则以 `05-A端自由模板PRD.md` 为准。
