diff --git a/frontend/scene-generator/sg_scene_generator.html b/frontend/scene-generator/sg_scene_generator.html new file mode 100644 index 0000000..51025c4 --- /dev/null +++ b/frontend/scene-generator/sg_scene_generator.html @@ -0,0 +1,373 @@ + + + + + + 场景 Skill 生成器 + + + +
+
+

场景 Skill 生成器

+

输入场景目录路径,自动提取 scene-id 和 scene-name,一键生成 skill 包并实时查看进度。

+
+
+ +
+
+
+ +

实时日志

+

显示分析和生成过程的完整输出

+
+
+
+
选择场景目录并点击"生成 Skill"开始。
+
+
+
+
+ + + + + + diff --git a/tests/scene_generator_html_test.rs b/tests/scene_generator_html_test.rs new file mode 100644 index 0000000..23e3223 --- /dev/null +++ b/tests/scene_generator_html_test.rs @@ -0,0 +1,30 @@ +use std::fs; +use std::path::PathBuf; + +#[test] +fn scene_generator_html_exists_and_has_required_elements() { + let manifest_dir = PathBuf::from(env!("CARGO_MANIFEST_DIR")); + let html_path = manifest_dir + .join("frontend") + .join("scene-generator") + .join("sg_scene_generator.html"); + + let source = fs::read_to_string(&html_path) + .unwrap_or_else(|err| panic!("HTML file not found at {:?}: {}", html_path, err)); + + assert!(source.contains("场景 Skill 生成器"), "missing title"); + assert!(source.contains("sourceDir"), "missing sourceDir input"); + assert!(source.contains("sceneId"), "missing sceneId input"); + assert!(source.contains("sceneName"), "missing sceneName input"); + assert!(source.contains("/analyze"), "missing /analyze endpoint"); + assert!(source.contains("/generate"), "missing /generate endpoint"); + assert!( + source.contains("fetch("), + "missing fetch for API calls" + ); + + assert!( + source.contains("127.0.0.1") || source.contains("localhost"), + "should reference localhost server" + ); +}