use std::path::PathBuf; use sgclaw::compat::scene_platform::scheduled_registry::load_scheduled_monitoring_registry; 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 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"); assert_eq!( entry.workflow_id, "command_center_fee_control_monitoring_action" ); assert_eq!( entry.manifest.scene.kind, "scheduled_monitoring_action_workflow" ); } #[test] fn scheduled_monitoring_registry_loads_archive_workorder_skill() { 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") .expect("archive workorder skill must be registered"); assert_eq!(entry.manifest.scene.id, "archive-workorder-grid-push-monitor"); assert_eq!( entry.manifest.scene.kind, "scheduled_monitoring_action_workflow" ); assert_eq!(entry.manifest.scene.category, "monitoring"); let safety = entry.manifest.safety.as_ref().unwrap(); assert_eq!(safety.active_enabled, false); assert_eq!(safety.queue_process_enabled, false); assert_eq!( entry.manifest.runtime_context.as_ref().unwrap().expected_domain, "yx.gs.sgcc.com.cn" ); } #[test] fn scheduled_monitoring_registry_loads_available_balance_below_zero_skill() { 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") .expect("available balance below zero skill must be registered"); assert_eq!(entry.manifest.scene.id, "available-balance-below-zero-monitor"); assert_eq!( entry.manifest.scene.kind, "scheduled_monitoring_action_workflow" ); assert_eq!(entry.manifest.scene.category, "monitoring"); let safety = entry.manifest.safety.as_ref().unwrap(); assert_eq!(safety.active_enabled, false); assert_eq!(safety.queue_process_enabled, false); assert_eq!( entry.manifest.runtime_context.as_ref().unwrap().expected_domain, "yx.gs.sgcc.com.cn" ); } #[test] fn scheduled_monitoring_registry_loads_sgcc_todo_crawler_skill() { 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") .expect("sgcc todo crawler skill must be registered"); assert_eq!(entry.manifest.scene.id, "sgcc-todo-crawler"); assert_eq!( entry.manifest.scene.kind, "scheduled_monitoring_action_workflow" ); assert_eq!(entry.manifest.scene.category, "monitoring"); let safety = entry.manifest.safety.as_ref().unwrap(); assert_eq!(safety.active_enabled, false); assert_eq!(safety.queue_process_enabled, false); assert_eq!( entry.manifest.runtime_context.as_ref().unwrap().expected_domain, "xcoa.sgcc.com.cn" ); let tools = entry.manifest.tools.as_ref().unwrap(); assert_eq!(tools.detect, "scripts/detect.js"); assert_eq!(tools.decide, "scripts/decide.js"); assert_eq!(tools.action_plan, "scripts/action_plan.js"); }