feat: expand cockpit integrations and support workflows

Add Phoenix remote desktop, action connector, documentation engine, and gamification support. Refactor support-case processing and search/action UI, and update installer assets and dependencies.
This commit is contained in:
Meik
2026-07-13 11:16:53 +02:00
parent bbedbf71c8
commit 0b52999b1d
303 changed files with 11235 additions and 3580 deletions

View File

@@ -0,0 +1,21 @@
using System;
using F4SD.ActionConnector.Models;
using F4SD.ActionConnector.Payloads;
namespace F4SD.ActionConnector.Events
{
/// <summary>
/// Raised after a sync action finishes. Carries the result for Cockpit integration.
/// </summary>
public sealed class ActionCompletedEventArgs : EventArgs
{
public ActionResult Result { get; }
public ActionContext Context { get; }
public ActionCompletedEventArgs(ActionResult result, ActionContext context)
{
Result = result;
Context = context;
}
}
}

View File

@@ -0,0 +1,40 @@
using System;
using F4SD.ActionConnector.Payloads;
namespace F4SD.ActionConnector.Events
{
/// <summary>
/// Static event bus. F4SD calls the methods after a business event occurs.
/// The connector engine subscribes to the corresponding events and dispatches configured actions.
/// </summary>
public static class ActionConnectorEvents
{
/// <summary>Raised when a support case is closed.</summary>
public static event EventHandler<TriggerEventArgs<CaseClosedPayload>> CaseClosed;
/// <summary>Raised when a new support case is created.</summary>
public static event EventHandler<TriggerEventArgs<CaseCreatedPayload>> CaseCreated;
/// <summary>Raised once during application startup, after configuration is loaded.</summary>
public static event EventHandler<TriggerEventArgs<ApplicationStartupPayload>> ApplicationStartup;
/// <summary>
/// Raised after every sync action completes. The Cockpit Client subscribes here
/// to display results without coupling to specific trigger types.
/// </summary>
public static event EventHandler<ActionCompletedEventArgs> ActionCompleted;
public static void RaiseCaseClosed(object sender, CaseClosedPayload payload)
=> CaseClosed?.Invoke(sender, new TriggerEventArgs<CaseClosedPayload>(payload));
public static void RaiseCaseCreated(object sender, CaseCreatedPayload payload)
=> CaseCreated?.Invoke(sender, new TriggerEventArgs<CaseCreatedPayload>(payload));
public static void RaiseApplicationStartup(object sender, ApplicationStartupPayload payload)
=> ApplicationStartup?.Invoke(sender, new TriggerEventArgs<ApplicationStartupPayload>(payload));
public static void RaiseActionCompleted(object sender, ActionCompletedEventArgs args)
=> ActionCompleted?.Invoke(sender, args);
}
}

View File

@@ -0,0 +1,15 @@
using System;
using F4SD.ActionConnector.Payloads;
namespace F4SD.ActionConnector.Events
{
public sealed class TriggerEventArgs<TPayload> : EventArgs where TPayload : PayloadBase
{
public TPayload Payload { get; }
public TriggerEventArgs(TPayload payload)
{
Payload = payload;
}
}
}