1
0
Files
lanyuanxiaoyao ef3fa6a06a feat: 添加模板变量验证功能
- 在 ResourceValidator 中添加 validate_template_vars 方法
- 在验证阶段检查用户是否提供了模板所需的必需变量
- 缺少必需变量时返回 ERROR 级别错误
- 添加 9 个单元测试用例验证功能
- 同步更新 OpenSpec 规格文档
2026-03-03 01:00:21 +08:00

54 lines
2.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## ADDED 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"