refactor: keep generated scene runtime only in sgclaw

This commit is contained in:
木炎
2026-05-06 16:37:19 +08:00
parent 1d586dbe27
commit 548dfc4aa9
12 changed files with 67 additions and 7063 deletions

View File

@@ -1,60 +1,32 @@
use std::fs;
use std::path::PathBuf;
use std::time::{SystemTime, UNIX_EPOCH};
use sgclaw::compat::scene_platform::scheduled_registry::load_scheduled_monitoring_registry;
use sgclaw::generated_scene::generator::{
generate_scheduled_monitoring_action_skill_package, GenerateScheduledMonitoringActionSkillRequest,
};
fn temp_workspace(prefix: &str) -> PathBuf {
let nanos = SystemTime::now()
.duration_since(UNIX_EPOCH)
.unwrap()
.as_nanos();
let path = std::env::temp_dir().join(format!("{prefix}-{nanos}"));
fs::create_dir_all(&path).unwrap();
path
fn validation_bundle_skills_dir() -> PathBuf {
PathBuf::from("dist/sgclaw_scheduled_monitoring_read_only_validation_bundle_2026-04-22/skills")
}
#[test]
fn scheduled_monitoring_registry_loads_materialized_skill() {
let output_root = temp_workspace("sgclaw-scheduled-monitoring-registry");
generate_scheduled_monitoring_action_skill_package(GenerateScheduledMonitoringActionSkillRequest {
scene_id: "command-center-fee-control-monitor".to_string(),
scene_name: "指挥中心费控异常监测".to_string(),
output_root: output_root.clone(),
source_evidence_json: PathBuf::from(
"tests/fixtures/generated_scene/monitoring_action_source_evidence_extraction_2026-04-21.json",
),
ir_contract_json: PathBuf::from(
"tests/fixtures/generated_scene/scheduled_monitoring_action_ir_contract_2026-04-22.json",
),
trigger_contract_json: PathBuf::from(
"tests/fixtures/generated_scene/scheduled_monitoring_action_trigger_runtime_contract_2026-04-22.json",
),
})
.unwrap();
let registry = load_scheduled_monitoring_registry(&validation_bundle_skills_dir()).unwrap();
let entry = registry
.iter()
.find(|entry| entry.workflow_id == "command_center_fee_control_monitoring_action")
.expect("command center skill must be registered");
let registry = load_scheduled_monitoring_registry(&output_root.join("skills")).unwrap();
assert_eq!(registry.len(), 1);
assert_eq!(
registry[0].workflow_id,
entry.workflow_id,
"command_center_fee_control_monitoring_action"
);
assert_eq!(
registry[0].manifest.scene.kind,
entry.manifest.scene.kind,
"scheduled_monitoring_action_workflow"
);
}
#[test]
fn scheduled_monitoring_registry_loads_archive_workorder_skill() {
let skills_dir = PathBuf::from(
"dist/sgclaw_scheduled_monitoring_read_only_validation_bundle_2026-04-22/skills",
);
let registry = load_scheduled_monitoring_registry(&skills_dir).unwrap();
let registry = load_scheduled_monitoring_registry(&validation_bundle_skills_dir()).unwrap();
let entry = registry
.iter()
.find(|entry| entry.workflow_id == "archive_workorder_grid_push_monitoring_action")
@@ -77,11 +49,7 @@ fn scheduled_monitoring_registry_loads_archive_workorder_skill() {
#[test]
fn scheduled_monitoring_registry_loads_available_balance_below_zero_skill() {
let skills_dir = PathBuf::from(
"dist/sgclaw_scheduled_monitoring_read_only_validation_bundle_2026-04-22/skills",
);
let registry = load_scheduled_monitoring_registry(&skills_dir).unwrap();
let registry = load_scheduled_monitoring_registry(&validation_bundle_skills_dir()).unwrap();
let entry = registry
.iter()
.find(|entry| entry.workflow_id == "available_balance_below_zero_monitoring_action")
@@ -104,11 +72,7 @@ fn scheduled_monitoring_registry_loads_available_balance_below_zero_skill() {
#[test]
fn scheduled_monitoring_registry_loads_sgcc_todo_crawler_skill() {
let skills_dir = PathBuf::from(
"dist/sgclaw_scheduled_monitoring_read_only_validation_bundle_2026-04-22/skills",
);
let registry = load_scheduled_monitoring_registry(&skills_dir).unwrap();
let registry = load_scheduled_monitoring_registry(&validation_bundle_skills_dir()).unwrap();
let entry = registry
.iter()
.find(|entry| entry.workflow_id == "sgcc_todo_crawler_monitoring_action")