Persist drill recovery plan posture upstream

This commit is contained in:
axiomlogicnexus 2026-04-29 18:15:59 +02:00
parent ba04128d39
commit 3c0caf9c4e
4 changed files with 431 additions and 23 deletions

View file

@ -475,6 +475,10 @@ namespace HyperTwistCoachDashboardWidgetInternal
{
return TEXT("accepted narrow drill-recovery-structure queued dashboard handoff");
}
if (SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-queued"))
{
return TEXT("accepted tight drill-recovery-plan queued dashboard handoff");
}
if (SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-packet-strong-queued"))
{
return TEXT("accepted strong drill-recovery-packet queued dashboard handoff");
@ -491,6 +495,10 @@ namespace HyperTwistCoachDashboardWidgetInternal
{
return TEXT("accepted narrow drill-recovery-structure follow-up dashboard handoff");
}
if (SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-follow-up"))
{
return TEXT("accepted tight drill-recovery-plan follow-up dashboard handoff");
}
if (SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-packet-strong-follow-up"))
{
return TEXT("accepted strong drill-recovery-packet follow-up dashboard handoff");
@ -507,6 +515,10 @@ namespace HyperTwistCoachDashboardWidgetInternal
{
return TEXT("accepted narrow drill-recovery-structure recommended dashboard handoff");
}
if (SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-recommended"))
{
return TEXT("accepted tight drill-recovery-plan recommended dashboard handoff");
}
if (SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-packet-strong-recommended"))
{
return TEXT("accepted strong drill-recovery-packet recommended dashboard handoff");
@ -523,6 +535,10 @@ namespace HyperTwistCoachDashboardWidgetInternal
{
return TEXT("accepted broad drill-recovery-structure queued dashboard handoff");
}
if (SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-queued"))
{
return TEXT("accepted broad drill-recovery-plan queued dashboard handoff");
}
if (SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-packet-weak-queued"))
{
return TEXT("accepted weak drill-recovery-packet queued dashboard handoff");
@ -539,6 +555,10 @@ namespace HyperTwistCoachDashboardWidgetInternal
{
return TEXT("accepted broad drill-recovery-structure follow-up dashboard handoff");
}
if (SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-follow-up"))
{
return TEXT("accepted broad drill-recovery-plan follow-up dashboard handoff");
}
if (SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-packet-weak-follow-up"))
{
return TEXT("accepted weak drill-recovery-packet follow-up dashboard handoff");
@ -555,6 +575,10 @@ namespace HyperTwistCoachDashboardWidgetInternal
{
return TEXT("accepted broad drill-recovery-structure recommended dashboard handoff");
}
if (SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-recommended"))
{
return TEXT("accepted broad drill-recovery-plan recommended dashboard handoff");
}
if (SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-packet-weak-recommended"))
{
return TEXT("accepted weak drill-recovery-packet recommended dashboard handoff");
@ -627,6 +651,10 @@ namespace HyperTwistCoachDashboardWidgetInternal
{
return TEXT("successful narrow drill-recovery-structure history");
}
if (SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-plan-tight"))
{
return TEXT("successful tight drill-recovery-plan history");
}
if (SourceLabel == TEXT("coach-memory-method-drill-recovery-packet-strong"))
{
return TEXT("successful retained drill-recovery-packet history");
@ -643,6 +671,10 @@ namespace HyperTwistCoachDashboardWidgetInternal
{
return TEXT("successful broad drill-recovery-structure redirect history");
}
if (SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-plan-broad"))
{
return TEXT("successful broad drill-recovery-plan redirect history");
}
if (SourceLabel == TEXT("coach-memory-method-drill-recovery-packet-weak"))
{
return TEXT("weak retained drill-recovery-packet history");
@ -678,13 +710,19 @@ namespace HyperTwistCoachDashboardWidgetInternal
const bool bRetainedMethodDrillRecoveryPostureDriven = false,
const bool bMethodDrillRecoveryPacketDriven = false,
const bool bNarrowMethodDrillRecoveryStructureDriven = false,
const bool bBroadMethodDrillRecoveryStructureDriven = false)
const bool bBroadMethodDrillRecoveryStructureDriven = false,
const bool bTightMethodDrillRecoveryStructurePlanDriven = false,
const bool bBroadMethodDrillRecoveryStructurePlanDriven = false)
{
if (MethodDrillRecoveryMemoryBias == EMethodDrillRecoveryMemoryBias::Strong)
{
switch (HandoffKind)
{
case EHyperTwistTrainingCoachHandoffKind::Queue:
if (bTightMethodDrillRecoveryStructurePlanDriven)
{
return TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-queued");
}
if (bNarrowMethodDrillRecoveryStructureDriven)
{
return TEXT("dashboard-handoff-method-drill-recovery-structure-narrow-queued");
@ -697,6 +735,10 @@ namespace HyperTwistCoachDashboardWidgetInternal
? TEXT("dashboard-handoff-method-drill-recovery-posture-strong-queued")
: TEXT("dashboard-handoff-method-drill-recovery-strong-queued");
case EHyperTwistTrainingCoachHandoffKind::FollowUp:
if (bTightMethodDrillRecoveryStructurePlanDriven)
{
return TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-follow-up");
}
if (bNarrowMethodDrillRecoveryStructureDriven)
{
return TEXT("dashboard-handoff-method-drill-recovery-structure-narrow-follow-up");
@ -709,6 +751,10 @@ namespace HyperTwistCoachDashboardWidgetInternal
? TEXT("dashboard-handoff-method-drill-recovery-posture-strong-follow-up")
: TEXT("dashboard-handoff-method-drill-recovery-strong-follow-up");
case EHyperTwistTrainingCoachHandoffKind::Recommended:
if (bTightMethodDrillRecoveryStructurePlanDriven)
{
return TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-recommended");
}
if (bNarrowMethodDrillRecoveryStructureDriven)
{
return TEXT("dashboard-handoff-method-drill-recovery-structure-narrow-recommended");
@ -729,6 +775,10 @@ namespace HyperTwistCoachDashboardWidgetInternal
switch (HandoffKind)
{
case EHyperTwistTrainingCoachHandoffKind::Queue:
if (bBroadMethodDrillRecoveryStructurePlanDriven)
{
return TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-queued");
}
if (bBroadMethodDrillRecoveryStructureDriven)
{
return TEXT("dashboard-handoff-method-drill-recovery-structure-broad-queued");
@ -741,6 +791,10 @@ namespace HyperTwistCoachDashboardWidgetInternal
? TEXT("dashboard-handoff-method-drill-recovery-posture-weak-queued")
: TEXT("dashboard-handoff-method-drill-recovery-weak-queued");
case EHyperTwistTrainingCoachHandoffKind::FollowUp:
if (bBroadMethodDrillRecoveryStructurePlanDriven)
{
return TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-follow-up");
}
if (bBroadMethodDrillRecoveryStructureDriven)
{
return TEXT("dashboard-handoff-method-drill-recovery-structure-broad-follow-up");
@ -753,6 +807,10 @@ namespace HyperTwistCoachDashboardWidgetInternal
? TEXT("dashboard-handoff-method-drill-recovery-posture-weak-follow-up")
: TEXT("dashboard-handoff-method-drill-recovery-weak-follow-up");
case EHyperTwistTrainingCoachHandoffKind::Recommended:
if (bBroadMethodDrillRecoveryStructurePlanDriven)
{
return TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-recommended");
}
if (bBroadMethodDrillRecoveryStructureDriven)
{
return TEXT("dashboard-handoff-method-drill-recovery-structure-broad-recommended");
@ -1839,6 +1897,22 @@ bool UHyperTwistCoachDashboardWidget::ApplyQueueRecoveryPosture()
const bool bUseBroadMethodDrillPacketStructureRecovery =
CachedCoachPanelState.PreferredQueueRecoveryActionSourceLabel
== TEXT("coach-memory-method-drill-follow-up-packet-structure-broad");
const bool bUseTightMethodDrillRecoveryStructurePlan =
CachedCoachPanelState.PreferredQueueRecoveryActionSourceLabel
== TEXT("coach-memory-method-drill-recovery-structure-plan-tight")
|| (MethodDrillRecoveryPacketLaunchBias
== HyperTwistCoachDashboardWidgetInternal::EMethodDrillRecoveryMemoryBias::Strong
&& MethodDrillRecoveryPacketQueueBias.TightContinuationPlanCount > 0
&& MethodDrillRecoveryPacketQueueBias.TightContinuationPlanCount
>= MethodDrillRecoveryPacketQueueBias.BroadRedirectPlanCount);
const bool bUseBroadMethodDrillRecoveryStructurePlan =
CachedCoachPanelState.PreferredQueueRecoveryActionSourceLabel
== TEXT("coach-memory-method-drill-recovery-structure-plan-broad")
|| (MethodDrillRecoveryPacketLaunchBias
== HyperTwistCoachDashboardWidgetInternal::EMethodDrillRecoveryMemoryBias::Weak
&& MethodDrillRecoveryPacketQueueBias.BroadRedirectPlanCount > 0
&& MethodDrillRecoveryPacketQueueBias.BroadRedirectPlanCount
>= MethodDrillRecoveryPacketQueueBias.TightContinuationPlanCount);
auto StartRunAndRefresh = [this](const FHyperTwistTrainingRunState& RunState)
{
@ -1905,7 +1979,9 @@ bool UHyperTwistCoachDashboardWidget::ApplyQueueRecoveryPosture()
bUseStrongRetainedMethodDrillRecoveryPosture,
bUseMethodDrillRecoveryPacketSignal,
bUseNarrowMethodDrillPacketStructureRecovery,
bUseBroadMethodDrillPacketStructureRecovery
bUseBroadMethodDrillPacketStructureRecovery,
bUseTightMethodDrillRecoveryStructurePlan,
bUseBroadMethodDrillRecoveryStructurePlan
](
const EHyperTwistTrainingCoachHandoffKind HandoffKind)
{
@ -1926,6 +2002,8 @@ bool UHyperTwistCoachDashboardWidget::ApplyQueueRecoveryPosture()
true,
bUseMethodDrillRecoveryPacketSignal,
bUseNarrowMethodDrillPacketStructureRecovery,
false,
bUseTightMethodDrillRecoveryStructurePlan,
false
);
}
@ -1939,7 +2017,9 @@ bool UHyperTwistCoachDashboardWidget::ApplyQueueRecoveryPosture()
false,
true,
bUseNarrowMethodDrillPacketStructureRecovery,
bUseBroadMethodDrillPacketStructureRecovery
bUseBroadMethodDrillPacketStructureRecovery,
bUseTightMethodDrillRecoveryStructurePlan,
bUseBroadMethodDrillRecoveryStructurePlan
);
}
if (bUseMethodDrillRecoverySignal)
@ -1959,7 +2039,9 @@ bool UHyperTwistCoachDashboardWidget::ApplyQueueRecoveryPosture()
false,
bUseMethodDrillRecoveryPacketSignal,
bUseNarrowMethodDrillPacketStructureRecovery,
bUseBroadMethodDrillPacketStructureRecovery
bUseBroadMethodDrillPacketStructureRecovery,
bUseTightMethodDrillRecoveryStructurePlan,
bUseBroadMethodDrillRecoveryStructurePlan
);
}
@ -8601,6 +8683,32 @@ void UHyperTwistCoachDashboardWidget::UpdateDashboardPresentation()
&& MethodDrillFollowUpWeighting.WeakPacketRedirectCount > 0
&& MethodDrillFollowUpWeighting.WeakPacketRedirectCount
>= MethodDrillFollowUpWeighting.StrongPacketContinuationCount;
const bool bHandoffRecommendationUsedTightMethodDrillRecoveryStructurePlan =
HandoffRecommendationKind
!= HyperTwistCoachDashboardWidgetInternal::EHandoffRecommendationKind::None
&& EffectiveMethodDrillRecoveryMemoryHandoffBias
== HyperTwistCoachDashboardWidgetInternal::EMethodDrillRecoveryMemoryBias::Strong
&& ((MethodDrillRecoveryPacketHandoffBias.TightContinuationPlanCount > 0
&& MethodDrillRecoveryPacketHandoffBias.TightContinuationPlanCount
>= MethodDrillRecoveryPacketHandoffBias.BroadRedirectPlanCount
&& (bHandoffRecommendationUsedMethodDrillRecoveryMemory
|| bHandoffRecommendationUsedStrongRetainedMethodDrillRecoveryPosture
|| bHandoffRecommendationUsedMethodDrillRecoveryPacketHistory))
|| CachedCoachPanelState.PreferredQueueRecoveryActionSourceLabel
== TEXT("coach-memory-method-drill-recovery-structure-plan-tight"));
const bool bHandoffRecommendationUsedBroadMethodDrillRecoveryStructurePlan =
HandoffRecommendationKind
!= HyperTwistCoachDashboardWidgetInternal::EHandoffRecommendationKind::None
&& EffectiveMethodDrillRecoveryMemoryHandoffBias
== HyperTwistCoachDashboardWidgetInternal::EMethodDrillRecoveryMemoryBias::Weak
&& ((MethodDrillRecoveryPacketHandoffBias.BroadRedirectPlanCount > 0
&& MethodDrillRecoveryPacketHandoffBias.BroadRedirectPlanCount
>= MethodDrillRecoveryPacketHandoffBias.TightContinuationPlanCount
&& (bHandoffRecommendationUsedMethodDrillRecoveryMemory
|| bHandoffRecommendationUsedWeakRetainedMethodDrillRecoveryPosture
|| bHandoffRecommendationUsedMethodDrillRecoveryPacketHistory))
|| CachedCoachPanelState.PreferredQueueRecoveryActionSourceLabel
== TEXT("coach-memory-method-drill-recovery-structure-plan-broad"));
if (bHandoffRecommendationUsedStrongRetainedMethodDrillRecoveryPosture
|| bHandoffRecommendationUsedWeakRetainedMethodDrillRecoveryPosture)
{
@ -8613,7 +8721,11 @@ void UHyperTwistCoachDashboardWidget::UpdateDashboardPresentation()
? HyperTwistCoachDashboardWidgetInternal::EMethodDrillRecoveryMemoryBias::Strong
: HyperTwistCoachDashboardWidgetInternal::EMethodDrillRecoveryMemoryBias::Weak,
true,
bHandoffRecommendationUsedMethodDrillRecoveryPacketHistory
bHandoffRecommendationUsedMethodDrillRecoveryPacketHistory,
false,
false,
bHandoffRecommendationUsedTightMethodDrillRecoveryStructurePlan,
bHandoffRecommendationUsedBroadMethodDrillRecoveryStructurePlan
);
}
else if (bHandoffRecommendationUsedMethodDrillRecoveryMemory
@ -8627,7 +8739,11 @@ void UHyperTwistCoachDashboardWidget::UpdateDashboardPresentation()
false,
EffectiveMethodDrillRecoveryMemoryHandoffBias,
false,
bHandoffRecommendationUsedMethodDrillRecoveryPacketHistory
bHandoffRecommendationUsedMethodDrillRecoveryPacketHistory,
false,
false,
bHandoffRecommendationUsedTightMethodDrillRecoveryStructurePlan,
bHandoffRecommendationUsedBroadMethodDrillRecoveryStructurePlan
);
}
else if (bHandoffRecommendationUsedMethodDrillRecoveryPacketHistory
@ -8641,7 +8757,11 @@ void UHyperTwistCoachDashboardWidget::UpdateDashboardPresentation()
false,
MethodDrillRecoveryPacketHandoffSourceBias,
false,
true
true,
false,
false,
bHandoffRecommendationUsedTightMethodDrillRecoveryStructurePlan,
bHandoffRecommendationUsedBroadMethodDrillRecoveryStructurePlan
);
}
else if (bHandoffRecommendationUsedStrongMethodDrillFollowUpPacket

View file

@ -88,7 +88,9 @@ namespace HyperTwistTrainingCoachLibraryInternal
|| SourceLabel == TEXT("coach-memory-method-drill-follow-up-packet-structure-narrow")
|| SourceLabel == TEXT("coach-memory-method-drill-follow-up-packet-structure-broad")
|| SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-narrow")
|| SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-broad");
|| SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-broad")
|| SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-plan-tight")
|| SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-plan-broad");
}
bool IsMethodDrillRecoveryPacketSource(const FString& SourceLabel)
@ -145,12 +147,16 @@ namespace HyperTwistTrainingCoachLibraryInternal
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-posture-strong-queued")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-posture-strong-follow-up")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-posture-strong-recommended")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-queued")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-follow-up")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-recommended")
|| SourceLabel == TEXT("coach-memory-method-drill-recovery-strong")
|| SourceLabel == TEXT("coach-memory-method-drill-recovery-packet-strong")
|| SourceLabel == TEXT("coach-memory-method-drill-recovery-posture-strong")
|| SourceLabel == TEXT("coach-memory-method-drill-recovery-memory-strong")
|| IsNarrowMethodDrillFollowUpPacketStructureSource(SourceLabel)
|| SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-narrow");
|| SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-narrow")
|| SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-plan-tight");
}
bool IsWeakMethodDrillRecoveryMemorySource(const FString& SourceLabel)
@ -167,12 +173,16 @@ namespace HyperTwistTrainingCoachLibraryInternal
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-posture-weak-queued")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-posture-weak-follow-up")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-posture-weak-recommended")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-queued")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-follow-up")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-recommended")
|| SourceLabel == TEXT("coach-memory-method-drill-recovery-weak")
|| SourceLabel == TEXT("coach-memory-method-drill-recovery-packet-weak")
|| SourceLabel == TEXT("coach-memory-method-drill-recovery-posture-weak")
|| SourceLabel == TEXT("coach-memory-method-drill-recovery-memory-weak")
|| IsBroadMethodDrillFollowUpPacketStructureSource(SourceLabel)
|| SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-broad");
|| SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-broad")
|| SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-plan-broad");
}
FString DescribeRetainedMethodDrillRecoveryStanceLabel(const FString& SourceLabel)
@ -638,6 +648,10 @@ namespace HyperTwistTrainingCoachLibraryInternal
{
return TEXT("successful narrow drill-recovery-structure history");
}
if (SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-plan-tight"))
{
return TEXT("successful tight drill-recovery-plan history");
}
if (SourceLabel == TEXT("coach-memory-method-drill-recovery-packet-strong"))
{
return TEXT("successful retained drill-recovery-packet history");
@ -650,6 +664,10 @@ namespace HyperTwistTrainingCoachLibraryInternal
{
return TEXT("successful broad drill-recovery-structure redirect history");
}
if (SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-plan-broad"))
{
return TEXT("successful broad drill-recovery-plan redirect history");
}
if (SourceLabel == TEXT("coach-memory-method-drill-recovery-packet-weak"))
{
return TEXT("weak retained drill-recovery-packet history");

View file

@ -100,9 +100,15 @@ namespace HyperTwistTrainingRepositoryLibraryInternal
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-narrow-queued")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-narrow-follow-up")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-narrow-recommended")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-queued")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-follow-up")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-recommended")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-broad-queued")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-broad-follow-up")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-broad-recommended")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-queued")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-follow-up")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-recommended")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-posture-weak-queued")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-posture-weak-follow-up")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-posture-weak-recommended")
@ -120,6 +126,9 @@ namespace HyperTwistTrainingRepositoryLibraryInternal
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-narrow-queued")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-narrow-follow-up")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-narrow-recommended")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-queued")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-follow-up")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-recommended")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-posture-strong-queued")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-posture-strong-follow-up")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-posture-strong-recommended");
@ -150,6 +159,9 @@ namespace HyperTwistTrainingRepositoryLibraryInternal
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-broad-queued")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-broad-follow-up")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-broad-recommended")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-queued")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-follow-up")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-recommended")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-posture-weak-queued")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-posture-weak-follow-up")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-posture-weak-recommended");
@ -173,6 +185,24 @@ namespace HyperTwistTrainingRepositoryLibraryInternal
== TEXT("dashboard-handoff-method-drill-recovery-structure-broad-recommended");
}
bool IsTightMethodDrillRecoveryStructurePlanDashboardHandoffSource(const FString& SourceLabel)
{
return SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-queued")
|| SourceLabel
== TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-follow-up")
|| SourceLabel
== TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-recommended");
}
bool IsBroadMethodDrillRecoveryStructurePlanDashboardHandoffSource(const FString& SourceLabel)
{
return SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-queued")
|| SourceLabel
== TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-follow-up")
|| SourceLabel
== TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-recommended");
}
bool IsWeakMethodDrillRecoveryPacketDashboardHandoffSource(const FString& SourceLabel)
{
return SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-packet-weak-queued")
@ -247,7 +277,9 @@ namespace HyperTwistTrainingRepositoryLibraryInternal
|| SourceLabel == TEXT("coach-memory-method-drill-recovery-posture-strong")
|| SourceLabel == TEXT("coach-memory-method-drill-recovery-posture-weak")
|| SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-narrow")
|| SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-broad");
|| SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-broad")
|| SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-plan-tight")
|| SourceLabel == TEXT("coach-memory-method-drill-recovery-structure-plan-broad");
}
bool IsStrongMethodDrillRecoveryPacketCoachMemorySource(const FString& SourceLabel)
@ -281,7 +313,9 @@ namespace HyperTwistTrainingRepositoryLibraryInternal
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-strong-queued")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-packet-strong-queued")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-narrow-queued")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-queued")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-broad-queued")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-queued")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-weak-queued")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-packet-weak-queued")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-posture-strong-queued")
@ -298,7 +332,9 @@ namespace HyperTwistTrainingRepositoryLibraryInternal
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-strong-follow-up")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-packet-strong-follow-up")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-narrow-follow-up")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-follow-up")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-broad-follow-up")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-follow-up")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-weak-follow-up")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-packet-weak-follow-up")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-posture-strong-follow-up")
@ -315,7 +351,9 @@ namespace HyperTwistTrainingRepositoryLibraryInternal
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-strong-recommended")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-packet-strong-recommended")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-narrow-recommended")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-tight-recommended")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-broad-recommended")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-recommended")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-weak-recommended")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-packet-weak-recommended")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-posture-strong-recommended")
@ -899,6 +937,28 @@ namespace HyperTwistTrainingRepositoryLibraryInternal
BroadMethodDrillRecoveryStructureStartedCount
- BroadMethodDrillRecoveryStructureCompletedCount
);
const int32 TightMethodDrillRecoveryStructurePlanStartedCount =
QueueExecutionSummary.StartedTightMethodDrillRecoveryStructurePlanHandoffEventCount;
const int32 TightMethodDrillRecoveryStructurePlanPromotedCount =
QueueExecutionSummary.PromotedTightMethodDrillRecoveryStructurePlanHandoffEventCount;
const int32 TightMethodDrillRecoveryStructurePlanCompletedCount =
QueueExecutionSummary.CompletedTightMethodDrillRecoveryStructurePlanHandoffEventCount;
const int32 TightMethodDrillRecoveryStructurePlanOutstandingCount = FMath::Max(
0,
TightMethodDrillRecoveryStructurePlanStartedCount
- TightMethodDrillRecoveryStructurePlanCompletedCount
);
const int32 BroadMethodDrillRecoveryStructurePlanStartedCount =
QueueExecutionSummary.StartedBroadMethodDrillRecoveryStructurePlanHandoffEventCount;
const int32 BroadMethodDrillRecoveryStructurePlanPromotedCount =
QueueExecutionSummary.PromotedBroadMethodDrillRecoveryStructurePlanHandoffEventCount;
const int32 BroadMethodDrillRecoveryStructurePlanCompletedCount =
QueueExecutionSummary.CompletedBroadMethodDrillRecoveryStructurePlanHandoffEventCount;
const int32 BroadMethodDrillRecoveryStructurePlanOutstandingCount = FMath::Max(
0,
BroadMethodDrillRecoveryStructurePlanStartedCount
- BroadMethodDrillRecoveryStructurePlanCompletedCount
);
if (MethodDrillRecoveryStartedCount > 0)
{
Snapshot.MethodDrillRecoveryHistoryCount += MethodDrillRecoveryStartedCount;
@ -989,6 +1049,30 @@ namespace HyperTwistTrainingRepositoryLibraryInternal
1,
3)
: 0;
const int32 TightMethodDrillRecoveryStructurePlanLaunchBias =
(TightMethodDrillRecoveryStructurePlanStartedCount
+ TightMethodDrillRecoveryStructurePlanPromotedCount)
>= 2
? FMath::Clamp(
(TightMethodDrillRecoveryStructurePlanCompletedCount * 2)
- TightMethodDrillRecoveryStructurePlanOutstandingCount
- TightMethodDrillRecoveryStructurePlanPromotedCount
+ 1,
1,
3)
: 0;
const int32 BroadMethodDrillRecoveryStructurePlanPromoteBias =
(BroadMethodDrillRecoveryStructurePlanPromotedCount
+ BroadMethodDrillRecoveryStructurePlanStartedCount)
>= 2
? FMath::Clamp(
BroadMethodDrillRecoveryStructurePlanPromotedCount
+ BroadMethodDrillRecoveryStructurePlanOutstandingCount
- BroadMethodDrillRecoveryStructurePlanCompletedCount
+ (QueueExecutionSummary.bHasOutstandingDeferredWork ? 1 : 0),
1,
3)
: 0;
const bool bStrongMethodDrillRecoveryPacketQueuedHandoff =
QueueExecutionSummary.StartedStrongMethodDrillRecoveryPacketQueuedHandoffEventCount > 0;
const bool bStrongMethodDrillRecoveryPacketFollowUpHandoff =
@ -1099,6 +1183,7 @@ namespace HyperTwistTrainingRepositoryLibraryInternal
+ MethodDrillRecoveryLaunchBias
+ RetainedMethodDrillRecoveryLaunchBias
+ RetainedMethodDrillRecoveryPostureLaunchBias
+ TightMethodDrillRecoveryStructurePlanLaunchBias
+ NarrowMethodDrillRecoveryStructureLaunchBias;
const int32 WeightedRecommendedRecoverySignal =
ExplicitRecommendedRecoverySignal
@ -1109,6 +1194,7 @@ namespace HyperTwistTrainingRepositoryLibraryInternal
+ MethodDrillRecoveryPromoteBias
+ RetainedMethodDrillRecoveryPromoteBias
+ RetainedMethodDrillRecoveryPosturePromoteBias
+ BroadMethodDrillRecoveryStructurePlanPromoteBias
+ BroadMethodDrillRecoveryStructurePromoteBias;
const bool bQueueHistoryPrefersFollowUp =
DominantDeferredLane == EHyperTwistTrainingCoachGuidanceLane::FollowUp
@ -1147,6 +1233,7 @@ namespace HyperTwistTrainingRepositoryLibraryInternal
+ (static_cast<float>(MethodDrillRecoveryLaunchBias) * 1.75f)
+ (static_cast<float>(RetainedMethodDrillRecoveryLaunchBias) * 2.0f)
+ (static_cast<float>(RetainedMethodDrillRecoveryPostureLaunchBias) * 2.25f)
+ (static_cast<float>(TightMethodDrillRecoveryStructurePlanLaunchBias) * 2.75f)
+ (static_cast<float>(NarrowMethodDrillRecoveryStructureLaunchBias) * 2.5f);
if (PromoteRecoveryActionPressure > 0.0f || LaunchRecoveryActionPressure > 0.0f)
{
@ -1204,6 +1291,29 @@ namespace HyperTwistTrainingRepositoryLibraryInternal
Snapshot.PreferredQueueRecoveryActionSourceLabel =
TEXT("coach-memory-method-drill-recovery-packet-weak");
}
else if (Snapshot.PreferredQueueRecoveryAction == EHyperTwistTrainingQueueRecoveryAction::LaunchRecovery
&& TightMethodDrillRecoveryStructurePlanLaunchBias > 0
&& (Snapshot.PreferredQueueRecoveryActionSourceLabel.IsEmpty()
|| Snapshot.PreferredQueueRecoveryActionSourceLabel.StartsWith(TEXT("queue-history"))
|| HyperTwistTrainingRepositoryLibraryInternal::IsMethodDrillDashboardHandoffSource(
Snapshot.PreferredQueueRecoveryActionSourceLabel)
|| HyperTwistTrainingRepositoryLibraryInternal::IsMethodDrillRecoveryCoachMemorySource(
Snapshot.PreferredQueueRecoveryActionSourceLabel)))
{
Snapshot.PreferredQueueRecoveryActionSourceLabel =
TEXT("coach-memory-method-drill-recovery-structure-plan-tight");
}
else if (Snapshot.PreferredQueueRecoveryAction
== EHyperTwistTrainingQueueRecoveryAction::PromoteDeferred
&& BroadMethodDrillRecoveryStructurePlanPromoteBias > 0
&& (Snapshot.PreferredQueueRecoveryActionSourceLabel.IsEmpty()
|| Snapshot.PreferredQueueRecoveryActionSourceLabel.StartsWith(TEXT("queue-history"))
|| HyperTwistTrainingRepositoryLibraryInternal::IsMethodDrillRecoveryCoachMemorySource(
Snapshot.PreferredQueueRecoveryActionSourceLabel)))
{
Snapshot.PreferredQueueRecoveryActionSourceLabel =
TEXT("coach-memory-method-drill-recovery-structure-plan-broad");
}
else if (Snapshot.PreferredQueueRecoveryAction == EHyperTwistTrainingQueueRecoveryAction::LaunchRecovery
&& NarrowMethodDrillRecoveryStructureLaunchBias > 0
&& (Snapshot.PreferredQueueRecoveryActionSourceLabel.IsEmpty()
@ -1405,12 +1515,24 @@ namespace HyperTwistTrainingRepositoryLibraryInternal
)
|| CoachMemorySnapshot.PreferredQueueRecoveryActionSourceLabel
== TEXT("coach-memory-method-drill-recovery-structure-narrow");
const bool bTightMethodDrillRecoveryStructurePlanHandoffSource =
HyperTwistTrainingRepositoryLibraryInternal::IsTightMethodDrillRecoveryStructurePlanDashboardHandoffSource(
CoachMemorySnapshot.PreferredCoachHandoffSourceLabel
)
|| CoachMemorySnapshot.PreferredQueueRecoveryActionSourceLabel
== TEXT("coach-memory-method-drill-recovery-structure-plan-tight");
const bool bBroadMethodDrillRecoveryStructureHandoffSource =
HyperTwistTrainingRepositoryLibraryInternal::IsBroadMethodDrillRecoveryStructureDashboardHandoffSource(
CoachMemorySnapshot.PreferredCoachHandoffSourceLabel
)
|| CoachMemorySnapshot.PreferredQueueRecoveryActionSourceLabel
== TEXT("coach-memory-method-drill-recovery-structure-broad");
const bool bBroadMethodDrillRecoveryStructurePlanHandoffSource =
HyperTwistTrainingRepositoryLibraryInternal::IsBroadMethodDrillRecoveryStructurePlanDashboardHandoffSource(
CoachMemorySnapshot.PreferredCoachHandoffSourceLabel
)
|| CoachMemorySnapshot.PreferredQueueRecoveryActionSourceLabel
== TEXT("coach-memory-method-drill-recovery-structure-plan-broad");
const bool bStrongMethodDrillRecoveryMemoryHandoffSource =
CoachMemorySnapshot.PreferredCoachHandoffSourceLabel.StartsWith(
TEXT("coach-memory-dashboard-method-drill-recovery-strong-"))
@ -1423,9 +1545,11 @@ namespace HyperTwistTrainingRepositoryLibraryInternal
== TEXT("coach-memory-method-drill-recovery-memory-weak");
const bool bTightMethodDrillRecoveryPlanSource =
bStrongMethodDrillRecoveryMemoryHandoffSource
|| bTightMethodDrillRecoveryStructurePlanHandoffSource
|| bNarrowMethodDrillRecoveryStructureHandoffSource;
const bool bBroadMethodDrillRecoveryPlanSource =
bWeakMethodDrillRecoveryMemoryHandoffSource
|| bBroadMethodDrillRecoveryStructurePlanHandoffSource
|| bBroadMethodDrillRecoveryStructureHandoffSource;
if (CoachMemorySnapshot.PreferredCoachHandoffKind == EHyperTwistTrainingCoachHandoffKind::Queue
&& !CoachBrief.bNeedsCoachReview
@ -7389,6 +7513,28 @@ FHyperTwistTrainingCoachMemorySnapshot UHyperTwistTrainingRepositoryLibrary::Der
BroadMethodDrillRecoveryStructureStartedCount
- BroadMethodDrillRecoveryStructureCompletedCount
);
const int32 TightMethodDrillRecoveryStructurePlanStartedCount =
QueueExecutionSummary.StartedTightMethodDrillRecoveryStructurePlanHandoffEventCount;
const int32 TightMethodDrillRecoveryStructurePlanPromotedCount =
QueueExecutionSummary.PromotedTightMethodDrillRecoveryStructurePlanHandoffEventCount;
const int32 TightMethodDrillRecoveryStructurePlanCompletedCount =
QueueExecutionSummary.CompletedTightMethodDrillRecoveryStructurePlanHandoffEventCount;
const int32 TightMethodDrillRecoveryStructurePlanOutstandingCount = FMath::Max(
0,
TightMethodDrillRecoveryStructurePlanStartedCount
- TightMethodDrillRecoveryStructurePlanCompletedCount
);
const int32 BroadMethodDrillRecoveryStructurePlanStartedCount =
QueueExecutionSummary.StartedBroadMethodDrillRecoveryStructurePlanHandoffEventCount;
const int32 BroadMethodDrillRecoveryStructurePlanPromotedCount =
QueueExecutionSummary.PromotedBroadMethodDrillRecoveryStructurePlanHandoffEventCount;
const int32 BroadMethodDrillRecoveryStructurePlanCompletedCount =
QueueExecutionSummary.CompletedBroadMethodDrillRecoveryStructurePlanHandoffEventCount;
const int32 BroadMethodDrillRecoveryStructurePlanOutstandingCount = FMath::Max(
0,
BroadMethodDrillRecoveryStructurePlanStartedCount
- BroadMethodDrillRecoveryStructurePlanCompletedCount
);
if (MethodDrillRecoveryStartedCount > 0)
{
Snapshot.MethodDrillRecoveryHistoryCount += MethodDrillRecoveryStartedCount;
@ -7479,6 +7625,30 @@ FHyperTwistTrainingCoachMemorySnapshot UHyperTwistTrainingRepositoryLibrary::Der
1,
3)
: 0;
const int32 TightMethodDrillRecoveryStructurePlanLaunchBias =
(TightMethodDrillRecoveryStructurePlanStartedCount
+ TightMethodDrillRecoveryStructurePlanPromotedCount)
>= 2
? FMath::Clamp(
(TightMethodDrillRecoveryStructurePlanCompletedCount * 2)
- TightMethodDrillRecoveryStructurePlanOutstandingCount
- TightMethodDrillRecoveryStructurePlanPromotedCount
+ 1,
1,
3)
: 0;
const int32 BroadMethodDrillRecoveryStructurePlanPromoteBias =
(BroadMethodDrillRecoveryStructurePlanPromotedCount
+ BroadMethodDrillRecoveryStructurePlanStartedCount)
>= 2
? FMath::Clamp(
BroadMethodDrillRecoveryStructurePlanPromotedCount
+ BroadMethodDrillRecoveryStructurePlanOutstandingCount
- BroadMethodDrillRecoveryStructurePlanCompletedCount
+ (QueueExecutionSummary.bHasOutstandingDeferredWork ? 1 : 0),
1,
3)
: 0;
const int32 StrongMethodDrillFollowUpPacketStartedCount =
QueueExecutionSummary.StartedStrongMethodDrillFollowUpPacketQueuedHandoffEventCount
+ QueueExecutionSummary.StartedStrongMethodDrillFollowUpPacketFollowUpHandoffEventCount
@ -7670,21 +7840,23 @@ FHyperTwistTrainingCoachMemorySnapshot UHyperTwistTrainingRepositoryLibrary::Der
+ ExplicitDeferredFirstQueuedHandoffSignal
+ ExplicitDeferredFirstFollowUpHandoffSignal
+ ExplicitMethodDrillQueuedHandoffSignal
+ ExplicitMethodDrillFollowUpHandoffSignal
+ MethodDrillRecoveryLaunchBias
+ RetainedMethodDrillRecoveryLaunchBias
+ RetainedMethodDrillRecoveryPostureLaunchBias
+ NarrowMethodDrillRecoveryStructureLaunchBias;
const int32 WeightedRecommendedRecoverySignal =
ExplicitRecommendedRecoverySignal
+ ExplicitMethodDrillFollowUpHandoffSignal
+ MethodDrillRecoveryLaunchBias
+ RetainedMethodDrillRecoveryLaunchBias
+ RetainedMethodDrillRecoveryPostureLaunchBias
+ TightMethodDrillRecoveryStructurePlanLaunchBias
+ NarrowMethodDrillRecoveryStructureLaunchBias;
const int32 WeightedRecommendedRecoverySignal =
ExplicitRecommendedRecoverySignal
+ ExplicitRecommendedHandoffSignal
+ ExplicitDeferredOverflowRecommendedHandoffSignal
+ ExplicitDeferredFirstRecommendedHandoffSignal
+ ExplicitMethodDrillRecommendedHandoffSignal
+ MethodDrillRecoveryPromoteBias
+ RetainedMethodDrillRecoveryPromoteBias
+ RetainedMethodDrillRecoveryPosturePromoteBias
+ BroadMethodDrillRecoveryStructurePromoteBias;
+ ExplicitMethodDrillRecommendedHandoffSignal
+ MethodDrillRecoveryPromoteBias
+ RetainedMethodDrillRecoveryPromoteBias
+ RetainedMethodDrillRecoveryPosturePromoteBias
+ BroadMethodDrillRecoveryStructurePlanPromoteBias
+ BroadMethodDrillRecoveryStructurePromoteBias;
const bool bQueueHistoryPrefersFollowUp =
DominantDeferredLane == EHyperTwistTrainingCoachGuidanceLane::FollowUp
|| (DominantCompletedLane == EHyperTwistTrainingCoachGuidanceLane::FollowUp
@ -7704,6 +7876,7 @@ FHyperTwistTrainingCoachMemorySnapshot UHyperTwistTrainingRepositoryLibrary::Der
+ (static_cast<float>(MethodDrillRecoveryPromoteBias) * 1.5f)
+ (static_cast<float>(RetainedMethodDrillRecoveryPromoteBias) * 1.75f)
+ (static_cast<float>(RetainedMethodDrillRecoveryPosturePromoteBias) * 2.0f)
+ (static_cast<float>(BroadMethodDrillRecoveryStructurePlanPromoteBias) * 2.75f)
+ (static_cast<float>(BroadMethodDrillRecoveryStructurePromoteBias) * 2.5f);
const float LaunchRecoveryActionPressure =
(QueueExecutionSummary.bHasCompletionGap ? 4.0f : 0.0f)
@ -7722,6 +7895,7 @@ FHyperTwistTrainingCoachMemorySnapshot UHyperTwistTrainingRepositoryLibrary::Der
+ (static_cast<float>(MethodDrillRecoveryLaunchBias) * 1.75f)
+ (static_cast<float>(RetainedMethodDrillRecoveryLaunchBias) * 2.0f)
+ (static_cast<float>(RetainedMethodDrillRecoveryPostureLaunchBias) * 2.25f)
+ (static_cast<float>(TightMethodDrillRecoveryStructurePlanLaunchBias) * 2.75f)
+ (static_cast<float>(NarrowMethodDrillRecoveryStructureLaunchBias) * 2.5f);
if (PromoteRecoveryActionPressure > 0.0f || LaunchRecoveryActionPressure > 0.0f)
{
@ -7778,6 +7952,30 @@ FHyperTwistTrainingCoachMemorySnapshot UHyperTwistTrainingRepositoryLibrary::Der
Snapshot.PreferredQueueRecoveryActionSourceLabel =
TEXT("coach-memory-method-drill-recovery-packet-weak");
}
else if (Snapshot.PreferredQueueRecoveryAction
== EHyperTwistTrainingQueueRecoveryAction::LaunchRecovery
&& TightMethodDrillRecoveryStructurePlanLaunchBias > 0
&& (Snapshot.PreferredQueueRecoveryActionSourceLabel.IsEmpty()
|| Snapshot.PreferredQueueRecoveryActionSourceLabel.StartsWith(TEXT("queue-history"))
|| HyperTwistTrainingRepositoryLibraryInternal::IsMethodDrillDashboardHandoffSource(
Snapshot.PreferredQueueRecoveryActionSourceLabel)
|| HyperTwistTrainingRepositoryLibraryInternal::IsMethodDrillRecoveryCoachMemorySource(
Snapshot.PreferredQueueRecoveryActionSourceLabel)))
{
Snapshot.PreferredQueueRecoveryActionSourceLabel =
TEXT("coach-memory-method-drill-recovery-structure-plan-tight");
}
else if (Snapshot.PreferredQueueRecoveryAction
== EHyperTwistTrainingQueueRecoveryAction::PromoteDeferred
&& BroadMethodDrillRecoveryStructurePlanPromoteBias > 0
&& (Snapshot.PreferredQueueRecoveryActionSourceLabel.IsEmpty()
|| Snapshot.PreferredQueueRecoveryActionSourceLabel.StartsWith(TEXT("queue-history"))
|| HyperTwistTrainingRepositoryLibraryInternal::IsMethodDrillRecoveryCoachMemorySource(
Snapshot.PreferredQueueRecoveryActionSourceLabel)))
{
Snapshot.PreferredQueueRecoveryActionSourceLabel =
TEXT("coach-memory-method-drill-recovery-structure-plan-broad");
}
else if (Snapshot.PreferredQueueRecoveryAction == EHyperTwistTrainingQueueRecoveryAction::LaunchRecovery
&& NarrowMethodDrillRecoveryStructureLaunchBias > 0
&& (Snapshot.PreferredQueueRecoveryActionSourceLabel.IsEmpty()
@ -9715,6 +9913,9 @@ FHyperTwistTrainingCoachSessionQueueExecutionSummary UHyperTwistTrainingReposito
const bool bNarrowMethodDrillRecoveryStructureDashboardHandoff =
HyperTwistTrainingRepositoryLibraryInternal::IsNarrowMethodDrillRecoveryStructureDashboardHandoffSource(
HistoryEntry.StartActionSourceLabel);
const bool bTightMethodDrillRecoveryStructurePlanDashboardHandoff =
HyperTwistTrainingRepositoryLibraryInternal::IsTightMethodDrillRecoveryStructurePlanDashboardHandoffSource(
HistoryEntry.StartActionSourceLabel);
const bool bWeakMethodDrillRecoveryDashboardHandoff =
HyperTwistTrainingRepositoryLibraryInternal::IsWeakMethodDrillRecoveryDashboardHandoffSource(
HistoryEntry.StartActionSourceLabel);
@ -9727,6 +9928,9 @@ FHyperTwistTrainingCoachSessionQueueExecutionSummary UHyperTwistTrainingReposito
const bool bBroadMethodDrillRecoveryStructureDashboardHandoff =
HyperTwistTrainingRepositoryLibraryInternal::IsBroadMethodDrillRecoveryStructureDashboardHandoffSource(
HistoryEntry.StartActionSourceLabel);
const bool bBroadMethodDrillRecoveryStructurePlanDashboardHandoff =
HyperTwistTrainingRepositoryLibraryInternal::IsBroadMethodDrillRecoveryStructurePlanDashboardHandoffSource(
HistoryEntry.StartActionSourceLabel);
const bool bStrongRetainedMethodDrillRecoveryPostureDashboardHandoff =
HyperTwistTrainingRepositoryLibraryInternal::IsStrongRetainedMethodDrillRecoveryPostureDashboardHandoffSource(
HistoryEntry.StartActionSourceLabel);
@ -9764,6 +9968,10 @@ FHyperTwistTrainingCoachSessionQueueExecutionSummary UHyperTwistTrainingReposito
{
Summary.StartedNarrowMethodDrillRecoveryStructureHandoffEventCount += 1;
}
if (bTightMethodDrillRecoveryStructurePlanDashboardHandoff)
{
Summary.StartedTightMethodDrillRecoveryStructurePlanHandoffEventCount += 1;
}
if (bWeakMethodDrillRecoveryPacketDashboardHandoff)
{
Summary.StartedWeakMethodDrillRecoveryPacketQueuedHandoffEventCount += 1;
@ -9772,6 +9980,10 @@ FHyperTwistTrainingCoachSessionQueueExecutionSummary UHyperTwistTrainingReposito
{
Summary.StartedBroadMethodDrillRecoveryStructureHandoffEventCount += 1;
}
if (bBroadMethodDrillRecoveryStructurePlanDashboardHandoff)
{
Summary.StartedBroadMethodDrillRecoveryStructurePlanHandoffEventCount += 1;
}
}
else if (DashboardHandoffKind == EHyperTwistTrainingCoachHandoffKind::FollowUp)
{
@ -9804,6 +10016,10 @@ FHyperTwistTrainingCoachSessionQueueExecutionSummary UHyperTwistTrainingReposito
{
Summary.StartedNarrowMethodDrillRecoveryStructureHandoffEventCount += 1;
}
if (bTightMethodDrillRecoveryStructurePlanDashboardHandoff)
{
Summary.StartedTightMethodDrillRecoveryStructurePlanHandoffEventCount += 1;
}
if (bWeakMethodDrillRecoveryPacketDashboardHandoff)
{
Summary.StartedWeakMethodDrillRecoveryPacketFollowUpHandoffEventCount += 1;
@ -9812,6 +10028,10 @@ FHyperTwistTrainingCoachSessionQueueExecutionSummary UHyperTwistTrainingReposito
{
Summary.StartedBroadMethodDrillRecoveryStructureHandoffEventCount += 1;
}
if (bBroadMethodDrillRecoveryStructurePlanDashboardHandoff)
{
Summary.StartedBroadMethodDrillRecoveryStructurePlanHandoffEventCount += 1;
}
}
else if (DashboardHandoffKind == EHyperTwistTrainingCoachHandoffKind::Recommended)
{
@ -9844,6 +10064,10 @@ FHyperTwistTrainingCoachSessionQueueExecutionSummary UHyperTwistTrainingReposito
{
Summary.StartedNarrowMethodDrillRecoveryStructureHandoffEventCount += 1;
}
if (bTightMethodDrillRecoveryStructurePlanDashboardHandoff)
{
Summary.StartedTightMethodDrillRecoveryStructurePlanHandoffEventCount += 1;
}
if (bWeakMethodDrillRecoveryPacketDashboardHandoff)
{
Summary.StartedWeakMethodDrillRecoveryPacketRecommendedHandoffEventCount += 1;
@ -9852,6 +10076,10 @@ FHyperTwistTrainingCoachSessionQueueExecutionSummary UHyperTwistTrainingReposito
{
Summary.StartedBroadMethodDrillRecoveryStructureHandoffEventCount += 1;
}
if (bBroadMethodDrillRecoveryStructurePlanDashboardHandoff)
{
Summary.StartedBroadMethodDrillRecoveryStructurePlanHandoffEventCount += 1;
}
}
if (bStrongMethodDrillRecoveryDashboardHandoff)
{
@ -9910,11 +10138,21 @@ FHyperTwistTrainingCoachSessionQueueExecutionSummary UHyperTwistTrainingReposito
{
Summary.PromotedNarrowMethodDrillRecoveryStructureHandoffEventCount += 1;
}
if (HyperTwistTrainingRepositoryLibraryInternal::IsTightMethodDrillRecoveryStructurePlanDashboardHandoffSource(
HistoryEntry.StartActionSourceLabel))
{
Summary.PromotedTightMethodDrillRecoveryStructurePlanHandoffEventCount += 1;
}
if (HyperTwistTrainingRepositoryLibraryInternal::IsBroadMethodDrillRecoveryStructureDashboardHandoffSource(
HistoryEntry.StartActionSourceLabel))
{
Summary.PromotedBroadMethodDrillRecoveryStructureHandoffEventCount += 1;
}
if (HyperTwistTrainingRepositoryLibraryInternal::IsBroadMethodDrillRecoveryStructurePlanDashboardHandoffSource(
HistoryEntry.StartActionSourceLabel))
{
Summary.PromotedBroadMethodDrillRecoveryStructurePlanHandoffEventCount += 1;
}
break;
case EHyperTwistTrainingCoachSessionQueueEventKind::Completed:
Summary.CompletedEventCount += 1;
@ -9935,12 +10173,18 @@ FHyperTwistTrainingCoachSessionQueueExecutionSummary UHyperTwistTrainingReposito
const bool bNarrowMethodDrillRecoveryStructureDashboardHandoff =
HyperTwistTrainingRepositoryLibraryInternal::IsNarrowMethodDrillRecoveryStructureDashboardHandoffSource(
HistoryEntry.StartActionSourceLabel);
const bool bTightMethodDrillRecoveryStructurePlanDashboardHandoff =
HyperTwistTrainingRepositoryLibraryInternal::IsTightMethodDrillRecoveryStructurePlanDashboardHandoffSource(
HistoryEntry.StartActionSourceLabel);
const bool bWeakMethodDrillRecoveryDashboardHandoff =
HyperTwistTrainingRepositoryLibraryInternal::IsWeakMethodDrillRecoveryDashboardHandoffSource(
HistoryEntry.StartActionSourceLabel);
const bool bBroadMethodDrillRecoveryStructureDashboardHandoff =
HyperTwistTrainingRepositoryLibraryInternal::IsBroadMethodDrillRecoveryStructureDashboardHandoffSource(
HistoryEntry.StartActionSourceLabel);
const bool bBroadMethodDrillRecoveryStructurePlanDashboardHandoff =
HyperTwistTrainingRepositoryLibraryInternal::IsBroadMethodDrillRecoveryStructurePlanDashboardHandoffSource(
HistoryEntry.StartActionSourceLabel);
const bool bStrongRetainedMethodDrillRecoveryPostureDashboardHandoff =
HyperTwistTrainingRepositoryLibraryInternal::IsStrongRetainedMethodDrillRecoveryPostureDashboardHandoffSource(
HistoryEntry.StartActionSourceLabel);
@ -9970,6 +10214,10 @@ FHyperTwistTrainingCoachSessionQueueExecutionSummary UHyperTwistTrainingReposito
{
Summary.CompletedNarrowMethodDrillRecoveryStructureHandoffEventCount += 1;
}
if (bTightMethodDrillRecoveryStructurePlanDashboardHandoff)
{
Summary.CompletedTightMethodDrillRecoveryStructurePlanHandoffEventCount += 1;
}
if (bWeakMethodDrillRecoveryDashboardHandoff)
{
Summary.CompletedWeakMethodDrillRecoveryMemoryHandoffEventCount += 1;
@ -9978,6 +10226,10 @@ FHyperTwistTrainingCoachSessionQueueExecutionSummary UHyperTwistTrainingReposito
{
Summary.CompletedBroadMethodDrillRecoveryStructureHandoffEventCount += 1;
}
if (bBroadMethodDrillRecoveryStructurePlanDashboardHandoff)
{
Summary.CompletedBroadMethodDrillRecoveryStructurePlanHandoffEventCount += 1;
}
if (bStrongRetainedMethodDrillRecoveryPostureDashboardHandoff)
{
Summary.CompletedStrongRetainedMethodDrillRecoveryPostureHandoffEventCount += 1;

View file

@ -3735,6 +3735,24 @@ struct FHyperTwistTrainingCoachSessionQueueExecutionSummary
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
int32 CompletedBroadMethodDrillRecoveryStructureHandoffEventCount = 0;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
int32 StartedTightMethodDrillRecoveryStructurePlanHandoffEventCount = 0;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
int32 PromotedTightMethodDrillRecoveryStructurePlanHandoffEventCount = 0;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
int32 CompletedTightMethodDrillRecoveryStructurePlanHandoffEventCount = 0;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
int32 StartedBroadMethodDrillRecoveryStructurePlanHandoffEventCount = 0;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
int32 PromotedBroadMethodDrillRecoveryStructurePlanHandoffEventCount = 0;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
int32 CompletedBroadMethodDrillRecoveryStructurePlanHandoffEventCount = 0;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
int32 CompletedMethodDrillQueuedHandoffEventCount = 0;