修改交管和信号交互插件加载时机

This commit is contained in:
ykkokluo
2026-08-25 08:59:00 +08:00
parent 134c7480b3
commit c5c1578696
25 changed files with 589 additions and 73 deletions
+2 -2
View File
@@ -38,8 +38,8 @@ public static class DeploymentCatalog
};
/// <summary>
/// 场景插件 → 平台页面 Key。磁导航选型会并入 <see cref="DeploymentProfile.SignalSceneId"/>
/// 从而点亮「数据中心」菜单(PLC 握手 + 磁条交管配置)
/// 场景插件 → 平台页面 Key。选 SPS / Pack 时 ToLauncherSceneIds 会并入
/// <see cref="DeploymentProfile.SignalSceneId"/>从而点亮「数据中心」。
/// </summary>
public static readonly IReadOnlyDictionary<string, string[]> SceneToPages =
new Dictionary<string, string[]>(StringComparer.OrdinalIgnoreCase)
+12 -3
View File
@@ -65,23 +65,32 @@ public record DeploymentProfile(
return result;
}
/// <summary>信号交互场景 idPLC 握手 + 磁条交管)。</summary>
/// <summary>信号交互场景 idPLC 握手)。仅 SPS / Pack 业务场景时加载。</summary>
public const string SignalSceneId = "scene.signal";
/// <summary>设备驱动场景 id(门/充电桩等,各类项目通用)。</summary>
public const string DeviceSceneId = "scene.device";
public const string ScenarioSps = "tpl-sps";
public const string ScenarioPack = "tpl-pack";
/// <summary>是否选了磁导航。</summary>
public bool UsesMagnetic() =>
NavigationKinds?.Any(k => string.Equals(k, "magnetic", StringComparison.OrdinalIgnoreCase)) == true;
/// <summary>是否选了需要 scene.signal 的业务场景(SPS 物料配送 / 电池 Pack 产线)。</summary>
public bool UsesSignalPlugin() =>
Scenarios?.Any(s =>
string.Equals(s, ScenarioSps, StringComparison.OrdinalIgnoreCase)
|| string.Equals(s, ScenarioPack, StringComparison.OrdinalIgnoreCase)) == true;
/// <summary>
/// 写入 active-scenes.json 的完整场景集合:导航插件 + 磁导航时并入 scene.signal + scene.device。
/// 写入 active-scenes.json 的完整场景集合:导航插件 + SPS/Pack 时并入 scene.signal + scene.device。
/// </summary>
public IReadOnlyList<string> ToLauncherSceneIds()
{
var result = ToActiveSceneIds().ToList();
if (UsesMagnetic() && !result.Contains(SignalSceneId, StringComparer.OrdinalIgnoreCase))
if (UsesSignalPlugin() && !result.Contains(SignalSceneId, StringComparer.OrdinalIgnoreCase))
result.Add(SignalSceneId);
if (!result.Contains(DeviceSceneId, StringComparer.OrdinalIgnoreCase))
result.Add(DeviceSceneId);