feat(scenarios): 增强场景摘要与题型展示

This commit is contained in:
2026-05-30 00:33:34 +08:00
parent 81f17319ff
commit c57ab2f194
4 changed files with 36 additions and 2 deletions

View File

@@ -36,9 +36,23 @@ def _get_nested(config: dict, path: tuple[str, ...]):
def validate_scenario(config: dict) -> dict:
# 只校验真正影响运行闭环的必填字段;
# 页面展示类字段如 applicable_questions 允许缺失,并在归一化阶段补默认值。
for field_path in REQUIRED_FIELDS:
_get_nested(config, field_path)
return config
return normalize_scenario(config)
def normalize_scenario(config: dict) -> dict:
"""补齐页面和其他模块常用的派生字段,减少模板中的条件判断。"""
normalized = dict(config)
normalized["applicable_questions"] = list(config.get("applicable_questions") or [])
normalized["rag"] = dict(config.get("rag", {}))
normalized["rag"]["enabled"] = bool(normalized["rag"].get("enabled"))
normalized["tools"] = list(config.get("tools") or [])
normalized["tool_count"] = len(normalized["tools"])
normalized["is_enabled"] = True
return normalized
def _scenario_files() -> list[Path]:
@@ -49,6 +63,7 @@ def _scenario_files() -> list[Path]:
def list_scenarios() -> list[dict]:
# 首页每次读取最新 YAML便于复试现场快速改题。
scenarios = []
for path in _scenario_files():
with path.open("r", encoding="utf-8") as file:

View File

@@ -4,4 +4,5 @@ from .services import list_scenarios
def index(request):
# 首页只消费服务层给出的场景摘要,不自行拼装配置字段。
return render(request, "scenarios/index.html", {"scenarios": list_scenarios()})