# Template Variable Validation ## Purpose 验证器在检查阶段验证模板必需变量是否提供。当 YAML 使用模板时,系统验证用户是否提供了模板所需的必需变量,避免在转换阶段才发现问题。 ## Requirements ### Requirement: 验证器必须检查模板必需变量 当 YAML 使用模板时,系统 SHALL 验证用户是否提供了模板所需的必需变量。 #### Scenario: 提供所有必需变量 - **WHEN** 模板定义了 `vars: [{name: title, required: true}]`,且用户 YAML 提供了 `vars: {title: "Hello"}` - **THEN** 验证通过,不报错 #### Scenario: 缺少必需变量 - **WHEN** 模板定义了 `vars: [{name: title, required: true}]`,但用户 YAML 的 `vars` 中没有提供 `title` - **THEN** 验证器报告 ERROR 级别错误:"缺少模板必需变量: title" #### Scenario: 多个必需变量部分缺失 - **WHEN** 模板定义了 `vars: [{name: title, required: true}, {name: subtitle, required: true}]`,但用户只提供了 `vars: {title: "Hello"}` - **THEN** 验证器报告 ERROR 级别错误,包含所有缺少的必需变量 #### Scenario: 可选变量缺失 - **WHEN** 模板定义了 `vars: [{name: subtitle, required: false}]`,用户没有提供该变量 - **THEN** 验证通过,不报错 #### Scenario: 提供默认值时缺少可选变量 - **WHEN** 模板定义了 `vars: [{name: subtitle, required: false, default: ""}]`,用户没有提供该变量 - **THEN** 验证通过,不报错(使用默认值) ### Requirement: 验证器必须支持多幻灯片模板变量检查 系统 SHALL 检查每个使用模板的幻灯片,确保其提供了模板所需的必需变量。 #### Scenario: 不同幻灯片使用不同模板 - **WHEN** 幻灯片 1 使用模板 A(需要变量 title),幻灯片 2 使用模板 B(需要变量 image) - **THEN** 验证器分别检查每个幻灯片的变量,提供独立的错误信息 #### Scenario: 多个幻灯片使用同一模板 - **WHEN** 幻灯片 1 和幻灯片 2 都使用同一模板,都缺少必需变量 - **THEN** 验证器报告两个错误,分别对应各自的幻灯片位置 ### Requirement: 验证器必须提供清晰的错误位置信息 当缺少必需变量时,验证器 SHALL 在错误信息中包含幻灯片位置。 #### Scenario: 错误信息包含幻灯片位置 - **WHEN** 幻灯片 2 使用模板但缺少必需变量 - **THEN** 错误信息包含位置:"幻灯片 2: 缺少模板必需变量: title"