﻿## 1. 结论

本 PRD 正文规则密度充足、结构清晰，20 项 AC 与正文 R01–R10 的映射总体成立，未发现与已确认核心规则冲突的 AC。主要问题集中在若干 AC 对正文依据的引用过于宽泛或存在轻微超出正文明确表述的部分，需逐条修正或标注隐含依赖，避免拿 AC 自身或原型当验收依据。

## 2. 主要问题（最多 5 条，有据可执行）

1. **S-AC20 将“加载失败”归入 R10，但 R10 的失败提示语境是 A 端预览，而 S-AC20 的前置含“保存候选搜索”语境，两者并不等同。** R03 只定义了“无候选/无匹配”的提示，“加载失败”仅在 R10 出现。AC 将三个状态合并为一条，依据引用 R03、R10 虽可覆盖，但“失败不冒充空数据”在 R03 无对应表述，仅在 R10 中。建议 AC 拆分或明确语境，避免把 A 端预览失败提示扩展到候选选择器的加载失败。

2. **S-AC09 的“未保存输入不进入有效方案”存在表述混用。** R05 说的是“尚未保存的编辑不得展示为有效内容”，这一规则属于源页面内容尚未保存时的读取边界；S-AC09 将“未保存修改”放在“源页面已保存/未保存修改后重新读取”的前置里，但如果是配置侧未保存的修改，则正文依据应是 R06/R10。正文 R05 没有明确“配置侧未保存修改不进入有效方案”，R10 才明确预览读取已保存配置。建议 S-AC09 明确“未保存”指向源页面内容，而非配置列表，或者补充 R06/R10 依据。

3. **S-AC16 中“篡改目标直达”在正文 R08 有“直达入口也须核对”和“不能通过自填页面编号或模式获得额外访问范围”，但“不以隐藏控件代替校验”在正文中无对应表述。** 该句属于 AC 对鉴权实现方式的额外要求，R01/R08 只定义了访问边界和校验必要性，未定义后端校验不得以隐藏控件代替。建议删除该句或由产品确认后纳入正文。

4. **S-AC14 将“离开可放弃或继续编辑”与“保存失败或提交冲突”并列，但这条离开确认提示在 R06 末句描述的是“离开有未保存修改的配置页时”，并非保存失败或冲突的结果。** AC 把两个独立状态合并在同一条“保存失败或提交冲突”的前置下，会造成验收时把未保存离开确认当作冲突处理的强制结果。建议拆分为保存失败/冲突处理 AC 和未保存离开确认 AC。

5. **S-AC12 中“无有效入口提示暂无内容”的前置是“已保存自由页后续失效”，但 R07 的“全部入口不可用时显示‘暂无可用演示内容’”并不只限定自由页失效场景。** AC 与正文没有冲突，但 AC 限制了触发条件。若验收者只测自由页失效场景，会漏掉演示方案也失效的情形。建议调整前置为“全部入口不可用时”或直接引用 R07 原句。

## 3. 需要追问的问题

1. S-AC20 的“加载失败”是特指候选选择器加载失败，还是包含联动预览加载失败？两种场景的失败提示 UI 和触发条件不同，是否需要分开验收？

2. S-AC16 的“不以隐藏控件代替校验”是否确为产品验收点？若属于实现约束，是否应移出 AC 或改由研发自测覆盖？

3. S-AC09 中“未保存修改”明确指向源页面内容修改，还是配置列表修改？若包含配置侧，是否需要与 S-AC13 的“配置修改尚未保存时预览”合并表述，避免两条 AC 重叠。

4. S-AC12 的“无有效入口提示暂无内容”是否需要在自由页失效且部分演示方案仍有效时也验证“不展示其他项目内容”的边界？

## 4. 建议改法

1. S-AC20 拆成两条：候选选择器的“无候选/无匹配”依据 R03；A 端预览/请求失败的“失败提示不冒充空数据”依据 R10，避免混用语境。
2. S-AC09 明确“未保存”的指向：若为源页面内容，保持 R05；若为配置列表修改，补 R06、R10 依据，或直接删除该分句，交由 S-AC13 承接。
3. S-AC16 删除“不以隐藏控件代替校验”，或先补入正文 R08 中，再在 AC 引用；否则标记为无依据。
4. S-AC14 拆为“保存失败/冲突处理 AC（S-AC14a）”和“离开有未保存修改的确认 AC（S-AC14b）”，分别依据 R06 的不同句段。
5. S-AC12 将“无有效入口提示暂无内容”改为独立验证点，不夹在“已保存自由页后续失效”的单一场景内；也可单列一条 AC 覆盖“全部入口失效”场景。

## 5. 可作为需求文档落稿的要点

- 自由访问页面必须且只能指定一个当前项目已启用的 A 端页面，不可为空、停用、删除或跨项目。
- 演示方案可为零个或多个；候选范围仅限当前项目、A 端来源、已启用且未加入列表的页面；同一页面在演示列表内只能出现一次。
- 名称、目录均读取源页面当前已保存内容，不在方案配置中复制或设别名；目录按 Widget 实例顺序保留重复类型条目。
- 移除只解除演示关联，不影响源页面、自由引用和顾客链接；删除页面不因同名新页面恢复关联。
- 停用演示页隐藏前台但保留后台位置，重新启用恢复原位置；删除页在后台显示已删除引用并允许移除，不展示已删除内容。
- 员工访问基于有效登录、项目权限和项目有效期，不依赖顾客链接公开/启停；源页面停用仍阻断进入。
- 快速切换不修改配置、不新建页面、不合并内容；目标页面、名称、目录和交互模式必须作为同一结果切换。
- 配置修改只有保存才生效；未保存修改不进入已保存结果；保存失败或冲突不覆盖旧有效结果，保留当前编辑。
- 预览仅读已保存配置，不模拟真实 C 端播放器；未保存修改不能冒充已保存结果。
- 项目配置保存建议只存引用关系：项目、自由页、有序演示页、最近修改信息；不存页面副本或目录副本。

## 6. 验收标准与需求正文逐条核对表

| AC 编号 | 验收要求 | 正文依据（章节或规则编号及证据） | 结论 | 缺口与处理建议 |
| --- | --- | --- | --- | --- |
| S-AC01 | 在某项目进入配置，显示该项目识别信息；不混入其他项目页面 | R01：“从 A 端项目管理的目标项目行进入‘演示方案配置’，显示当前项目名称、VISTA URL 及 VISTA ID”“候选、已选及保存结果均限定当前项目” | 已覆盖 | 无 |
| S-AC02 | 未选择或选择失效自由页后保存，阻止保存并提示有效自由页面必填 | R02：“必须指定且只能指定一个当前项目已启用的 A 端页面作为自由访问页面。不能保存未选择、已停用、已删除或跨项目的自由访问目标”；R06：“保存前检查 R01—R03 的项目、来源、权限、必填及重复条件” | 已覆盖 | 无 |
| S-AC03 | 只指定有效自由页、演示列表为空后保存，保存成功；前台只有有效自由入口 | R02：“自由访问项固定在演示方案之后，不参加演示列表排序”“没有可选页面时提示先在页面管理中制作并启用页面”不直接覆盖此处；R03：“演示方案可为零个或多个”；R10：“只有自由页时可单独预览，不要求至少一套演示方案”；R09：“从自由访问入口进入指定自由页面，使用自由交互” | 已覆盖 | 正文未逐字写“前台只有有效自由入口”，但这可由 R03 零个演示方案与 R09 自由入口语义推断，结论成立。无需改正文。 |
| S-AC04 | 打开添加选择器，只显示当前项目A端已启用且未加入页面；不含B端、跨项目及失效页面 | R03：“通过添加页面选择器，从当前项目、A 端来源、已启用且尚未加入列表的页面中选择”“B 端来源页面即使 A 端可代处理，也不在候选范围内”；R01：“候选、已选及保存结果均限定当前项目” | 已覆盖 | 无 |
| S-AC05 | 搜索、选择多页并确认/取消；搜索按名称编号匹配；确认追加末尾，取消不改列表；不能重复加入 | R03：“选择器显示页面名称、页面编号及模块数量，支持按名称或编号搜索和多选；取消选择不改变列表，确认后按选择器中的原顺序追加到末尾，可再排序”“同一页面在演示方案列表内只能出现一次” | 已覆盖 | 无 |
| S-AC06 | 上移/下移并保存；顺序保持；首项上移及末项下移不可用 | R04：“通过上移/下移调整相邻顺序，首项上移、末项下移不可操作。保存后的顺序用于前台展示，不按名称、创建时间或项目列表顺序重排” | 已覆盖 | 无 |
| S-AC07 | 移除某演示项并保存；只解除该关联，不改变源页面、自由引用及顾客链接；可重新添加有效页面 | R04：“移除仅从本次编辑列表中解除关联，保存后生效，不停用、不删除源页面，不修改自由访问引用或顾客链接。页面仍有效时可重新添加，作为末项；这不是恢复历史版本” | 已覆盖 | 无 |
| S-AC08 | 查看名称与含重复Widget类型的目录；名称沿用页面多语；目录使用各实例名称和原顺序，不合并 | R05：“方案名称读取页面的当前多语言名称，不设独立别名。左侧目录按该页面保存的Widget实例顺序读取各实例展示名称；同类型重复实例保留为不同条目，不按类型合并” | 已覆盖 | 无 |
| S-AC09 | 源页面已保存/未保存修改后重新读取；已保存更新可见，未保存输入不进入有效方案；目标、名称和目录一致 | R05：“页面内容不复制到列表。源页面保存成功后，列表和进入内容在下次读取时使用最新保存结果；尚未保存的编辑不得展示为有效内容”；R05：“方案名称、目录和进入目标必须一致” | 部分覆盖 | “未保存修改”在 AC 中没有限定是源页面编辑未保存，如果按字面覆盖配置侧未保存修改，则正文依据应是 R06/R10。建议 AC 明确“未保存”指源页面内容，或同时补引 R06、R10，避免与 S-AC13 重叠。 |
| S-AC10 | 停用并重新启用已关联演示页；停用时销售隐藏、A端保留位置；恢复后原位置重现 | R07：“演示页被停用：从销售可选列表隐藏，后台保留关联、原排序和已停用提示；原页重新启用后恢复原位置” | 已覆盖 | 无 |
| S-AC11 | 删除关联页面，再建同名页面；旧引用不可进入、不可恢复；A端可移除且不展示已删除内容 | R07：“页面被删除：销售不可进入，后台显示已删除引用并允许移除，不展示已删除内容，不因同名新页面恢复关联” | 已覆盖 | 无 |
| S-AC12 | 已保存自由页后续失效；提示更换；自由项不可进入、不替代；其他有效演示可选，无有效入口提示暂无内容 | R07：“已保存的自由页面之后失效时，后台提示需更换有效页面；前台自由项保留不可进入提示，不自动替换为其他页面。若演示方案仍有效可照常选择；全部入口不可用时显示‘暂无可用演示内容’，不展示其他项目内容” | 已覆盖（但建议调整 AC 条件） | R07 的“暂无可用演示内容”是“全部入口不可用”，而 AC 把它放在自由页失效场景下。自由页失效但演示仍有效时不应出现该提示。建议将“无有效入口提示暂无内容”单列为全入口不可用验证点，或调整 AC 前置为包含演示项也失效的情况。 |
| S-AC13 | 配置修改尚未保存时预览；读取已保存配置，明确显示预览口径 | R06：“没有修改时不重复保存”；R10：“A端提供已保存配置的‘销售选择联动预览’……未保存修改不能冒充已保存结果；界面明确预览使用已保存配置”；“未保存”状态表：“预览仍读取已保存配置” | 已覆盖 | 无 |
| S-AC14 | 保存失败或提交冲突；不覆盖旧有效/较新结果；保留输入并提示处理；离开可放弃或继续编辑 | R06：“保存失败保留当前输入，旧有效配置不变化；多人保存冲突不得覆盖较新结果，提示重新载入后确认，未保存输入仍保留于当前编辑会话。离开有未保存修改的配置页时，确认放弃或继续编辑” | 部分覆盖 | “离开可放弃或继续编辑”是“离开有未保存修改”的独立规则，不是保存失败/冲突的结果。建议拆分两条 AC：保存失败与冲突一条；离开未保存确认一条。 |
| S-AC15 | 合法员工且顾客链接停用，访问有效已配置页面；员工仍可进入；页面自身停用后不可进入 | R08：“员工演示和自由访问不依赖顾客固定链接的公开、认证或启停状态。顾客链接停用不阻断具备上述条件的员工访问；源页面停用仍阻断” | 已覆盖 | 无 |
| S-AC16 | 顾客、无项目权限者或篡改目标直达；不取得受限方案或内容，不以隐藏控件代替校验 | R01：“无操作权限不允许读取受限内容或提交变更”；R08：“方案选择、快速切换及目标内容仅向有有效B端员工登录、当前项目管理权、项目未过期的员工开放”“直达入口也须核对上述条件”“不能通过自填页面编号或模式获得额外访问范围”“顾客无项目方案列表及快速切换入口，不能通过修改入口信息获得员工能力” | 部分覆盖 | “不以隐藏控件代替校验”在正文无对应表述，属于 AC 新增的实现约束。建议删除该句，或先补入 R08 再引用；否则标记为无依据。 |
| S-AC17 | 从演示项/自由项分别进入；打开各自指定页面和对应交互模式；自由目标不取方案并集或首项 | R09：“从演示方案入口进入该方案引用页面，使用演示交互；从自由访问入口进入指定自由页面，使用自由交互”；R05：“进入自由项后的内容取指定页面，不拼接所有演示方案，不以第一套方案兜底” | 已覆盖 | 无 |
| S-AC18 | 已进入后快速从A切B再切自由项；不要求回P02；目标、名称、目录、交互共同切换；不改源配置、不新增页面 | R09：“进入内容后，员工仍可快速选择当前项目的其他有效演示方案或自由访问项，不必返回后台，也不强制返回P02。切换后目标页面、名称、目录和交互模式作为同一个结果更新；不能显示B方案标题却播放A内容”“快速切换不修改任何页面或列表配置，不新建页面” | 已覆盖 | 无 |
| S-AC19 | 自由项和演示项引用同一页；两入口仍独立识别；各按入口交互，不提供原地模式开关 | R02：“自由访问页面可以同时被演示方案引用，两种入口仍分别识别，不能因引用同一页面而合并入口”；R09：“不提供‘保持当前演示方案页面，只把它改成自由模式’的独立操作。即使两个入口恰好引用同一页面，也按不同入口处理” | 已覆盖 | 无 |
| S-AC20 | 无候选、无搜索匹配或加载失败；分别显示无候选、无匹配和失败提示；失败不冒充空数据 | R03：“没有匹配结果时提示调整搜索，没有候选时提示没有可添加页面”；R10：“加载失败与没有配置分开提示；发生请求失败时采用短暂提示，权限失败不能表现为正常空列表” | 部分覆盖 | R03 只覆盖“无候选/无匹配”；“加载失败”和“失败不冒充空数据”仅出现在 R10 的预览语境。AC 没有说明加载失败发生在候选选择器还是预览。若指候选选择器，需补正文或明确依据；否则建议拆条，将失败提示验证放在 R10 语境下。 |