Persist aligned packet handoff shaping upstream

This commit is contained in:
axiomlogicnexus 2026-04-30 00:25:58 +02:00
parent ed3184f628
commit 1e73b5591c
5 changed files with 284 additions and 8 deletions

View file

@ -338,13 +338,15 @@ namespace HyperTwistCoachDashboardWidgetInternal
bool IsAlignedTightFollowUpPacketSourceLabel(const FString& SourceLabel)
{
return SourceLabel == TEXT("coach-memory-aligned-follow-up-packet-structure-tight-follow-up");
return SourceLabel == TEXT("coach-memory-aligned-follow-up-packet-structure-tight-follow-up")
|| SourceLabel.StartsWith(TEXT("coach-memory-dashboard-aligned-follow-up-packet-tight-"));
}
bool IsAlignedBroadRecommendedPacketSourceLabel(const FString& SourceLabel)
{
return SourceLabel
== TEXT("coach-memory-aligned-follow-up-packet-structure-broad-recommended");
== TEXT("coach-memory-aligned-follow-up-packet-structure-broad-recommended")
|| SourceLabel.StartsWith(TEXT("coach-memory-dashboard-aligned-follow-up-packet-broad-"));
}
bool IsAlignedTightFollowUpGuidanceSourceLabel(const FString& SourceLabel)
@ -399,6 +401,10 @@ namespace HyperTwistCoachDashboardWidgetInternal
}
if (IsAlignedTightFollowUpGuidanceSourceLabel(SourceLabel))
{
if (SourceLabel.StartsWith(TEXT("coach-memory-dashboard-aligned-follow-up-packet-tight-")))
{
return TEXT("accepted aligned tight follow-up-packet handoff history");
}
return SourceLabel
== TEXT("coach-memory-aligned-follow-up-packet-structure-tight-follow-up")
? TEXT("aligned tight retained follow-up-packet structure history")
@ -406,6 +412,10 @@ namespace HyperTwistCoachDashboardWidgetInternal
}
if (IsAlignedBroadRecommendedGuidanceSourceLabel(SourceLabel))
{
if (SourceLabel.StartsWith(TEXT("coach-memory-dashboard-aligned-follow-up-packet-broad-")))
{
return TEXT("accepted aligned broad recommended-packet handoff history");
}
return SourceLabel
== TEXT("coach-memory-aligned-follow-up-packet-structure-broad-recommended")
? TEXT("aligned broad retained recommended-packet structure history")
@ -995,8 +1005,38 @@ namespace HyperTwistCoachDashboardWidgetInternal
const bool bBroadMethodDrillRecoveryStructurePlanDriven = false,
const bool bTrustedMethodDrillRecoveryStructurePlanDriven = false,
const bool bReliableTrustedMethodDrillRecoveryStructurePlanDriven = false,
const bool bReliableTrustedMethodDrillRecoveryStructurePlanAlignmentDriven = false)
const bool bReliableTrustedMethodDrillRecoveryStructurePlanAlignmentDriven = false,
const bool bAlignedTightFollowUpPacketAcceptedDriven = false,
const bool bAlignedBroadRecommendedPacketAcceptedDriven = false)
{
if (bAlignedTightFollowUpPacketAcceptedDriven)
{
switch (HandoffKind)
{
case EHyperTwistTrainingCoachHandoffKind::Queue:
return TEXT("dashboard-handoff-aligned-follow-up-packet-tight-queued");
case EHyperTwistTrainingCoachHandoffKind::FollowUp:
return TEXT("dashboard-handoff-aligned-follow-up-packet-tight-follow-up");
case EHyperTwistTrainingCoachHandoffKind::Recommended:
return TEXT("dashboard-handoff-aligned-follow-up-packet-tight-recommended");
default:
return FString();
}
}
if (bAlignedBroadRecommendedPacketAcceptedDriven)
{
switch (HandoffKind)
{
case EHyperTwistTrainingCoachHandoffKind::Queue:
return TEXT("dashboard-handoff-aligned-follow-up-packet-broad-queued");
case EHyperTwistTrainingCoachHandoffKind::FollowUp:
return TEXT("dashboard-handoff-aligned-follow-up-packet-broad-follow-up");
case EHyperTwistTrainingCoachHandoffKind::Recommended:
return TEXT("dashboard-handoff-aligned-follow-up-packet-broad-recommended");
default:
return FString();
}
}
if (MethodDrillRecoveryMemoryBias == EMethodDrillRecoveryMemoryBias::Strong)
{
switch (HandoffKind)
@ -6419,10 +6459,27 @@ FString UHyperTwistCoachDashboardWidget::ResolveDashboardHandoffStartActionSourc
const bool bUseMethodDrillLabel =
bDisplayedCoachHandoffRecommendationUsedMethodDrillWeighting
&& DisplayedCoachHandoffRecommendationKind == HandoffKind;
const bool bUseAlignedTightPacketAcceptedLabel =
bDisplayedCoachHandoffRecommendationUsedAlignedTightPacketAcceptedHistory
&& DisplayedCoachHandoffRecommendationKind == HandoffKind;
const bool bUseAlignedBroadPacketAcceptedLabel =
bDisplayedCoachHandoffRecommendationUsedAlignedBroadPacketAcceptedHistory
&& DisplayedCoachHandoffRecommendationKind == HandoffKind;
return HyperTwistCoachDashboardWidgetInternal::DashboardHandoffSourceLabel(
HandoffKind,
bUseDeferredFirstSuppressionLabel,
bUseMethodDrillLabel
bUseMethodDrillLabel,
HyperTwistCoachDashboardWidgetInternal::EMethodDrillRecoveryMemoryBias::None,
false,
false,
false,
false,
false,
false,
false,
false,
bUseAlignedTightPacketAcceptedLabel,
bUseAlignedBroadPacketAcceptedLabel
);
}
@ -9694,6 +9751,8 @@ void UHyperTwistCoachDashboardWidget::UpdateDashboardPresentation()
DisplayedCoachHandoffRecommendationKind = EHyperTwistTrainingCoachHandoffKind::None;
bDisplayedCoachHandoffRecommendationUsedDeferredFirstSuppressionSignal = false;
bDisplayedCoachHandoffRecommendationUsedMethodDrillWeighting = false;
bDisplayedCoachHandoffRecommendationUsedAlignedTightPacketAcceptedHistory = false;
bDisplayedCoachHandoffRecommendationUsedAlignedBroadPacketAcceptedHistory = false;
DisplayedCoachHandoffMethodDrillRecoveryMemoryStartActionSourceLabel.Reset();
FString CoachHandoffRecommendationStatusLine;
FString CoachHandoffRecommendationDetailLine;
@ -10441,6 +10500,24 @@ void UHyperTwistCoachDashboardWidget::UpdateDashboardPresentation()
|| bHandoffRecommendationUsedMethodDrillRecoveryMemory
|| bHandoffRecommendationUsedStrongRetainedMethodDrillRecoveryPosture
|| bHandoffRecommendationUsedWeakRetainedMethodDrillRecoveryPosture;
bDisplayedCoachHandoffRecommendationUsedAlignedTightPacketAcceptedHistory =
HandoffHistoryBias.AlignedTightFollowUpPacketAcceptedDeltaCount > 0
&& HandoffHistoryBias.AlignedTightFollowUpPacketAcceptedDeltaCount
>= HandoffHistoryBias.AlignedBroadRecommendedPacketAcceptedDeltaCount
&& (DisplayedCoachHandoffRecommendationKind
== EHyperTwistTrainingCoachHandoffKind::FollowUp
|| (DisplayedCoachHandoffRecommendationKind
== EHyperTwistTrainingCoachHandoffKind::Queue
&& bQueueLooksFollowUpOrRecovery));
bDisplayedCoachHandoffRecommendationUsedAlignedBroadPacketAcceptedHistory =
HandoffHistoryBias.AlignedBroadRecommendedPacketAcceptedDeltaCount > 0
&& HandoffHistoryBias.AlignedBroadRecommendedPacketAcceptedDeltaCount
>= HandoffHistoryBias.AlignedTightFollowUpPacketAcceptedDeltaCount
&& (DisplayedCoachHandoffRecommendationKind
== EHyperTwistTrainingCoachHandoffKind::Recommended
|| (DisplayedCoachHandoffRecommendationKind
== EHyperTwistTrainingCoachHandoffKind::Queue
&& bQueueLooksRecommendedOrPrimary));
const bool bHandoffRecommendationUsedStrongMethodDrillFollowUpPacket =
bHandoffRecommendationUsedMethodDrillWeighting
&& HandoffRecommendationKind

View file

@ -333,14 +333,22 @@ namespace HyperTwistTrainingCoachLibraryInternal
bool IsAlignedTightFollowUpGuidanceSourceLabel(const FString& SourceLabel)
{
return SourceLabel == TEXT("recommendation-history-aligned-tight-follow-up-outcome")
|| SourceLabel == TEXT("coach-memory-aligned-follow-up-packet-structure-tight-follow-up");
|| SourceLabel == TEXT("coach-memory-aligned-follow-up-packet-structure-tight-follow-up")
|| SourceLabel.StartsWith(TEXT("coach-memory-dashboard-aligned-follow-up-packet-tight-"))
|| SourceLabel == TEXT("dashboard-handoff-aligned-follow-up-packet-tight-queued")
|| SourceLabel == TEXT("dashboard-handoff-aligned-follow-up-packet-tight-follow-up")
|| SourceLabel == TEXT("dashboard-handoff-aligned-follow-up-packet-tight-recommended");
}
bool IsAlignedBroadRecommendedGuidanceSourceLabel(const FString& SourceLabel)
{
return SourceLabel == TEXT("recommendation-history-aligned-broad-recommended-outcome")
|| SourceLabel
== TEXT("coach-memory-aligned-follow-up-packet-structure-broad-recommended");
== TEXT("coach-memory-aligned-follow-up-packet-structure-broad-recommended")
|| SourceLabel.StartsWith(TEXT("coach-memory-dashboard-aligned-follow-up-packet-broad-"))
|| SourceLabel == TEXT("dashboard-handoff-aligned-follow-up-packet-broad-queued")
|| SourceLabel == TEXT("dashboard-handoff-aligned-follow-up-packet-broad-follow-up")
|| SourceLabel == TEXT("dashboard-handoff-aligned-follow-up-packet-broad-recommended");
}
FString DescribeCoachMemorySourceLabel(const FString& SourceLabel)
@ -395,6 +403,13 @@ namespace HyperTwistTrainingCoachLibraryInternal
}
if (IsAlignedTightFollowUpGuidanceSourceLabel(SourceLabel))
{
if (SourceLabel.StartsWith(TEXT("coach-memory-dashboard-aligned-follow-up-packet-tight-"))
|| SourceLabel == TEXT("dashboard-handoff-aligned-follow-up-packet-tight-queued")
|| SourceLabel == TEXT("dashboard-handoff-aligned-follow-up-packet-tight-follow-up")
|| SourceLabel == TEXT("dashboard-handoff-aligned-follow-up-packet-tight-recommended"))
{
return TEXT("accepted aligned tight follow-up-packet handoff history");
}
return SourceLabel
== TEXT("coach-memory-aligned-follow-up-packet-structure-tight-follow-up")
? TEXT("aligned tight retained follow-up-packet structure history")
@ -402,6 +417,13 @@ namespace HyperTwistTrainingCoachLibraryInternal
}
if (IsAlignedBroadRecommendedGuidanceSourceLabel(SourceLabel))
{
if (SourceLabel.StartsWith(TEXT("coach-memory-dashboard-aligned-follow-up-packet-broad-"))
|| SourceLabel == TEXT("dashboard-handoff-aligned-follow-up-packet-broad-queued")
|| SourceLabel == TEXT("dashboard-handoff-aligned-follow-up-packet-broad-follow-up")
|| SourceLabel == TEXT("dashboard-handoff-aligned-follow-up-packet-broad-recommended"))
{
return TEXT("accepted aligned broad recommended-packet handoff history");
}
return SourceLabel
== TEXT("coach-memory-aligned-follow-up-packet-structure-broad-recommended")
? TEXT("aligned broad retained recommended-packet structure history")

View file

@ -133,6 +133,20 @@ namespace HyperTwistTrainingRepositoryLibraryInternal
|| SourceLabel.StartsWith(TEXT("coach-memory-dashboard-method-drill-"));
}
bool IsAlignedTightFollowUpPacketDashboardHandoffSource(const FString& SourceLabel)
{
return SourceLabel == TEXT("dashboard-handoff-aligned-follow-up-packet-tight-queued")
|| SourceLabel == TEXT("dashboard-handoff-aligned-follow-up-packet-tight-follow-up")
|| SourceLabel == TEXT("dashboard-handoff-aligned-follow-up-packet-tight-recommended");
}
bool IsAlignedBroadRecommendedPacketDashboardHandoffSource(const FString& SourceLabel)
{
return SourceLabel == TEXT("dashboard-handoff-aligned-follow-up-packet-broad-queued")
|| SourceLabel == TEXT("dashboard-handoff-aligned-follow-up-packet-broad-follow-up")
|| SourceLabel == TEXT("dashboard-handoff-aligned-follow-up-packet-broad-recommended");
}
bool IsStrongMethodDrillRecoveryDashboardHandoffSource(const FString& SourceLabel)
{
return SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-strong-queued")
@ -425,13 +439,15 @@ namespace HyperTwistTrainingRepositoryLibraryInternal
bool IsAlignedTightFollowUpPacketStructureCoachMemorySource(const FString& SourceLabel)
{
return SourceLabel == TEXT("coach-memory-aligned-follow-up-packet-structure-tight-follow-up");
return SourceLabel == TEXT("coach-memory-aligned-follow-up-packet-structure-tight-follow-up")
|| SourceLabel.StartsWith(TEXT("coach-memory-dashboard-aligned-follow-up-packet-tight-"));
}
bool IsAlignedBroadRecommendedPacketStructureCoachMemorySource(const FString& SourceLabel)
{
return SourceLabel
== TEXT("coach-memory-aligned-follow-up-packet-structure-broad-recommended");
== TEXT("coach-memory-aligned-follow-up-packet-structure-broad-recommended")
|| SourceLabel.StartsWith(TEXT("coach-memory-dashboard-aligned-follow-up-packet-broad-"));
}
FString ResolveMethodDrillFollowUpPacketStructureRecoverySourceLabel(
@ -543,6 +559,8 @@ namespace HyperTwistTrainingRepositoryLibraryInternal
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-queued")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-weak-queued")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-packet-weak-queued")
|| SourceLabel == TEXT("dashboard-handoff-aligned-follow-up-packet-tight-queued")
|| SourceLabel == TEXT("dashboard-handoff-aligned-follow-up-packet-broad-queued")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-posture-strong-queued")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-posture-weak-queued"))
{
@ -566,6 +584,8 @@ namespace HyperTwistTrainingRepositoryLibraryInternal
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-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-aligned-follow-up-packet-tight-follow-up")
|| SourceLabel == TEXT("dashboard-handoff-aligned-follow-up-packet-broad-follow-up")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-posture-strong-follow-up")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-posture-weak-follow-up"))
{
@ -589,6 +609,8 @@ namespace HyperTwistTrainingRepositoryLibraryInternal
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-structure-plan-broad-trusted-recommended")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-weak-recommended")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-packet-weak-recommended")
|| SourceLabel == TEXT("dashboard-handoff-aligned-follow-up-packet-tight-recommended")
|| SourceLabel == TEXT("dashboard-handoff-aligned-follow-up-packet-broad-recommended")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-posture-strong-recommended")
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recovery-posture-weak-recommended"))
{
@ -9276,6 +9298,14 @@ FHyperTwistTrainingCoachMemorySnapshot UHyperTwistTrainingRepositoryLibrary::Der
QueueExecutionSummary.StartedWeakMethodDrillFollowUpPacketQueuedHandoffEventCount
+ QueueExecutionSummary.StartedWeakMethodDrillFollowUpPacketFollowUpHandoffEventCount
+ QueueExecutionSummary.StartedWeakMethodDrillFollowUpPacketRecommendedHandoffEventCount;
const int32 AlignedTightFollowUpPacketAcceptedStartedCount =
QueueExecutionSummary.StartedAlignedTightFollowUpPacketQueuedHandoffEventCount
+ QueueExecutionSummary.StartedAlignedTightFollowUpPacketFollowUpHandoffEventCount
+ QueueExecutionSummary.StartedAlignedTightFollowUpPacketRecommendedHandoffEventCount;
const int32 AlignedBroadRecommendedPacketAcceptedStartedCount =
QueueExecutionSummary.StartedAlignedBroadRecommendedPacketQueuedHandoffEventCount
+ QueueExecutionSummary.StartedAlignedBroadRecommendedPacketFollowUpHandoffEventCount
+ QueueExecutionSummary.StartedAlignedBroadRecommendedPacketRecommendedHandoffEventCount;
if (StrongMethodDrillFollowUpPacketStartedCount > 0
&& StrongMethodDrillFollowUpPacketStartedCount
>= WeakMethodDrillFollowUpPacketStartedCount)
@ -9326,6 +9356,61 @@ FHyperTwistTrainingCoachMemorySnapshot UHyperTwistTrainingRepositoryLibrary::Der
TEXT("coach-memory-method-drill-follow-up-packet-weak");
}
}
if (AlignedTightFollowUpPacketAcceptedStartedCount > 0
&& AlignedTightFollowUpPacketAcceptedStartedCount
>= AlignedBroadRecommendedPacketAcceptedStartedCount)
{
const int32 AlignedPacketAcceptedBias = FMath::Clamp(
AlignedTightFollowUpPacketAcceptedStartedCount
- AlignedBroadRecommendedPacketAcceptedStartedCount
+ 1,
1,
3);
Snapshot.FollowUpGuidanceContinueBias += AlignedPacketAcceptedBias;
Snapshot.SuppressedPrimaryQueuePressureCount +=
FMath::Max(1, AlignedPacketAcceptedBias - 1);
if (Snapshot.PreferredGuidanceLane == EHyperTwistTrainingCoachGuidanceLane::None
|| Snapshot.PreferredGuidanceLane
== EHyperTwistTrainingCoachGuidanceLane::Recommended
|| Snapshot.PreferredGuidanceSourceLabel.StartsWith(TEXT("recommendation-history"))
|| HyperTwistTrainingRepositoryLibraryInternal::IsAlignedTightFollowUpPacketStructureCoachMemorySource(
Snapshot.PreferredGuidanceSourceLabel)
|| HyperTwistTrainingRepositoryLibraryInternal::IsAlignedBroadRecommendedPacketStructureCoachMemorySource(
Snapshot.PreferredGuidanceSourceLabel))
{
Snapshot.PreferredGuidanceLane =
EHyperTwistTrainingCoachGuidanceLane::FollowUp;
Snapshot.PreferredGuidanceSourceLabel =
TEXT("coach-memory-dashboard-aligned-follow-up-packet-tight-follow-up");
}
}
else if (AlignedBroadRecommendedPacketAcceptedStartedCount > 0)
{
const int32 AlignedPacketAcceptedRedirectBias = FMath::Clamp(
AlignedBroadRecommendedPacketAcceptedStartedCount
- AlignedTightFollowUpPacketAcceptedStartedCount
+ 1,
1,
3);
Snapshot.RecommendedGuidanceContinueBias +=
AlignedPacketAcceptedRedirectBias;
Snapshot.SuppressedFollowUpQueuePressureCount +=
AlignedPacketAcceptedRedirectBias;
if (Snapshot.PreferredGuidanceLane == EHyperTwistTrainingCoachGuidanceLane::None
|| Snapshot.PreferredGuidanceLane
== EHyperTwistTrainingCoachGuidanceLane::FollowUp
|| Snapshot.PreferredGuidanceSourceLabel.StartsWith(TEXT("recommendation-history"))
|| HyperTwistTrainingRepositoryLibraryInternal::IsAlignedTightFollowUpPacketStructureCoachMemorySource(
Snapshot.PreferredGuidanceSourceLabel)
|| HyperTwistTrainingRepositoryLibraryInternal::IsAlignedBroadRecommendedPacketStructureCoachMemorySource(
Snapshot.PreferredGuidanceSourceLabel))
{
Snapshot.PreferredGuidanceLane =
EHyperTwistTrainingCoachGuidanceLane::Recommended;
Snapshot.PreferredGuidanceSourceLabel =
TEXT("coach-memory-dashboard-aligned-follow-up-packet-broad-recommended");
}
}
const bool bStrongMethodDrillRecoveryPacketQueuedHandoff =
QueueExecutionSummary.StartedStrongMethodDrillRecoveryPacketQueuedHandoffEventCount > 0;
const bool bStrongMethodDrillRecoveryPacketFollowUpHandoff =
@ -9350,6 +9435,18 @@ FHyperTwistTrainingCoachMemorySnapshot UHyperTwistTrainingRepositoryLibrary::Der
QueueExecutionSummary.StartedWeakMethodDrillFollowUpPacketFollowUpHandoffEventCount > 0;
const bool bWeakMethodDrillFollowUpPacketRecommendedHandoff =
QueueExecutionSummary.StartedWeakMethodDrillFollowUpPacketRecommendedHandoffEventCount > 0;
const bool bAlignedTightFollowUpPacketQueuedHandoff =
QueueExecutionSummary.StartedAlignedTightFollowUpPacketQueuedHandoffEventCount > 0;
const bool bAlignedTightFollowUpPacketFollowUpHandoff =
QueueExecutionSummary.StartedAlignedTightFollowUpPacketFollowUpHandoffEventCount > 0;
const bool bAlignedTightFollowUpPacketRecommendedHandoff =
QueueExecutionSummary.StartedAlignedTightFollowUpPacketRecommendedHandoffEventCount > 0;
const bool bAlignedBroadRecommendedPacketQueuedHandoff =
QueueExecutionSummary.StartedAlignedBroadRecommendedPacketQueuedHandoffEventCount > 0;
const bool bAlignedBroadRecommendedPacketFollowUpHandoff =
QueueExecutionSummary.StartedAlignedBroadRecommendedPacketFollowUpHandoffEventCount > 0;
const bool bAlignedBroadRecommendedPacketRecommendedHandoff =
QueueExecutionSummary.StartedAlignedBroadRecommendedPacketRecommendedHandoffEventCount > 0;
if (ExplicitQueuedHandoffSignal > 0
|| ExplicitFollowUpHandoffSignal > 0
|| ExplicitRecommendedHandoffSignal > 0)
@ -9374,6 +9471,16 @@ FHyperTwistTrainingCoachMemorySnapshot UHyperTwistTrainingRepositoryLibrary::Der
Snapshot.PreferredCoachHandoffSourceLabel =
TEXT("coach-memory-dashboard-method-drill-follow-up-packet-strong-queued");
}
else if (bAlignedTightFollowUpPacketQueuedHandoff)
{
Snapshot.PreferredCoachHandoffSourceLabel =
TEXT("coach-memory-dashboard-aligned-follow-up-packet-tight-queued");
}
else if (bAlignedBroadRecommendedPacketQueuedHandoff)
{
Snapshot.PreferredCoachHandoffSourceLabel =
TEXT("coach-memory-dashboard-aligned-follow-up-packet-broad-queued");
}
else if (bWeakMethodDrillFollowUpPacketQueuedHandoff)
{
Snapshot.PreferredCoachHandoffSourceLabel =
@ -9435,6 +9542,16 @@ FHyperTwistTrainingCoachMemorySnapshot UHyperTwistTrainingRepositoryLibrary::Der
Snapshot.PreferredCoachHandoffSourceLabel =
TEXT("coach-memory-dashboard-method-drill-follow-up-packet-strong-follow-up");
}
else if (bAlignedTightFollowUpPacketFollowUpHandoff)
{
Snapshot.PreferredCoachHandoffSourceLabel =
TEXT("coach-memory-dashboard-aligned-follow-up-packet-tight-follow-up");
}
else if (bAlignedBroadRecommendedPacketFollowUpHandoff)
{
Snapshot.PreferredCoachHandoffSourceLabel =
TEXT("coach-memory-dashboard-aligned-follow-up-packet-broad-follow-up");
}
else if (bWeakMethodDrillFollowUpPacketFollowUpHandoff)
{
Snapshot.PreferredCoachHandoffSourceLabel =
@ -9496,6 +9613,16 @@ FHyperTwistTrainingCoachMemorySnapshot UHyperTwistTrainingRepositoryLibrary::Der
Snapshot.PreferredCoachHandoffSourceLabel =
TEXT("coach-memory-dashboard-method-drill-follow-up-packet-strong-recommended");
}
else if (bAlignedTightFollowUpPacketRecommendedHandoff)
{
Snapshot.PreferredCoachHandoffSourceLabel =
TEXT("coach-memory-dashboard-aligned-follow-up-packet-tight-recommended");
}
else if (bAlignedBroadRecommendedPacketRecommendedHandoff)
{
Snapshot.PreferredCoachHandoffSourceLabel =
TEXT("coach-memory-dashboard-aligned-follow-up-packet-broad-recommended");
}
else if (bWeakMethodDrillFollowUpPacketRecommendedHandoff)
{
Snapshot.PreferredCoachHandoffSourceLabel =
@ -11679,6 +11806,12 @@ FHyperTwistTrainingCoachSessionQueueExecutionSummary UHyperTwistTrainingReposito
const bool bStrongMethodDrillFollowUpPacketDashboardHandoff =
HyperTwistTrainingRepositoryLibraryInternal::IsStrongMethodDrillFollowUpPacketDashboardHandoffSource(
HistoryEntry.StartActionSourceLabel);
const bool bAlignedTightFollowUpPacketDashboardHandoff =
HyperTwistTrainingRepositoryLibraryInternal::IsAlignedTightFollowUpPacketDashboardHandoffSource(
HistoryEntry.StartActionSourceLabel);
const bool bAlignedBroadRecommendedPacketDashboardHandoff =
HyperTwistTrainingRepositoryLibraryInternal::IsAlignedBroadRecommendedPacketDashboardHandoffSource(
HistoryEntry.StartActionSourceLabel);
const bool bStrongMethodDrillRecoveryPacketDashboardHandoff =
HyperTwistTrainingRepositoryLibraryInternal::IsStrongMethodDrillRecoveryPacketDashboardHandoffSource(
HistoryEntry.StartActionSourceLabel);
@ -11744,6 +11877,14 @@ FHyperTwistTrainingCoachSessionQueueExecutionSummary UHyperTwistTrainingReposito
{
Summary.StartedWeakMethodDrillFollowUpPacketQueuedHandoffEventCount += 1;
}
if (bAlignedTightFollowUpPacketDashboardHandoff)
{
Summary.StartedAlignedTightFollowUpPacketQueuedHandoffEventCount += 1;
}
if (bAlignedBroadRecommendedPacketDashboardHandoff)
{
Summary.StartedAlignedBroadRecommendedPacketQueuedHandoffEventCount += 1;
}
if (bStrongMethodDrillRecoveryPacketDashboardHandoff)
{
Summary.StartedStrongMethodDrillRecoveryPacketQueuedHandoffEventCount += 1;
@ -11818,6 +11959,14 @@ FHyperTwistTrainingCoachSessionQueueExecutionSummary UHyperTwistTrainingReposito
{
Summary.StartedWeakMethodDrillFollowUpPacketFollowUpHandoffEventCount += 1;
}
if (bAlignedTightFollowUpPacketDashboardHandoff)
{
Summary.StartedAlignedTightFollowUpPacketFollowUpHandoffEventCount += 1;
}
if (bAlignedBroadRecommendedPacketDashboardHandoff)
{
Summary.StartedAlignedBroadRecommendedPacketFollowUpHandoffEventCount += 1;
}
if (bStrongMethodDrillRecoveryPacketDashboardHandoff)
{
Summary.StartedStrongMethodDrillRecoveryPacketFollowUpHandoffEventCount += 1;
@ -11882,6 +12031,14 @@ FHyperTwistTrainingCoachSessionQueueExecutionSummary UHyperTwistTrainingReposito
{
Summary.StartedWeakMethodDrillFollowUpPacketRecommendedHandoffEventCount += 1;
}
if (bAlignedTightFollowUpPacketDashboardHandoff)
{
Summary.StartedAlignedTightFollowUpPacketRecommendedHandoffEventCount += 1;
}
if (bAlignedBroadRecommendedPacketDashboardHandoff)
{
Summary.StartedAlignedBroadRecommendedPacketRecommendedHandoffEventCount += 1;
}
if (bStrongMethodDrillRecoveryPacketDashboardHandoff)
{
Summary.StartedStrongMethodDrillRecoveryPacketRecommendedHandoffEventCount += 1;

View file

@ -1616,6 +1616,8 @@ private:
EHyperTwistTrainingCoachHandoffKind::None;
bool bDisplayedCoachHandoffRecommendationUsedDeferredFirstSuppressionSignal = false;
bool bDisplayedCoachHandoffRecommendationUsedMethodDrillWeighting = false;
bool bDisplayedCoachHandoffRecommendationUsedAlignedTightPacketAcceptedHistory = false;
bool bDisplayedCoachHandoffRecommendationUsedAlignedBroadPacketAcceptedHistory = false;
FString DisplayedCoachHandoffMethodDrillRecoveryMemoryStartActionSourceLabel;
EHyperTwistCoachDashboardGuidancePreviewLane ActiveGuidancePreviewLane =
EHyperTwistCoachDashboardGuidancePreviewLane::None;

View file

@ -3783,6 +3783,24 @@ struct FHyperTwistTrainingCoachSessionQueueExecutionSummary
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
int32 StartedWeakMethodDrillFollowUpPacketRecommendedHandoffEventCount = 0;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
int32 StartedAlignedTightFollowUpPacketQueuedHandoffEventCount = 0;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
int32 StartedAlignedTightFollowUpPacketFollowUpHandoffEventCount = 0;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
int32 StartedAlignedTightFollowUpPacketRecommendedHandoffEventCount = 0;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
int32 StartedAlignedBroadRecommendedPacketQueuedHandoffEventCount = 0;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
int32 StartedAlignedBroadRecommendedPacketFollowUpHandoffEventCount = 0;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
int32 StartedAlignedBroadRecommendedPacketRecommendedHandoffEventCount = 0;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
int32 StartedStrongMethodDrillRecoveryPacketQueuedHandoffEventCount = 0;