Weight handoff by accepted packet trust
This commit is contained in:
parent
34a7c1577c
commit
30dea6b122
4 changed files with 346 additions and 12 deletions
|
|
@ -341,7 +341,10 @@ namespace HyperTwistCoachDashboardWidgetInternal
|
|||
return SourceLabel
|
||||
== TEXT("recommendation-history-accepted-aligned-tight-follow-up-packet-outcome")
|
||||
|| SourceLabel == TEXT("coach-memory-aligned-follow-up-packet-structure-tight-follow-up")
|
||||
|| SourceLabel.StartsWith(TEXT("coach-memory-dashboard-aligned-follow-up-packet-tight-"));
|
||||
|| SourceLabel.StartsWith(TEXT("coach-memory-dashboard-aligned-follow-up-packet-tight-"))
|
||||
|| SourceLabel == TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-tight-queued")
|
||||
|| SourceLabel == TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-tight-follow-up")
|
||||
|| SourceLabel == TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-tight-recommended");
|
||||
}
|
||||
|
||||
bool IsAlignedBroadRecommendedPacketSourceLabel(const FString& SourceLabel)
|
||||
|
|
@ -349,7 +352,10 @@ namespace HyperTwistCoachDashboardWidgetInternal
|
|||
return SourceLabel
|
||||
== TEXT("recommendation-history-accepted-aligned-broad-recommended-packet-outcome")
|
||||
|| SourceLabel == TEXT("coach-memory-aligned-follow-up-packet-structure-broad-recommended")
|
||||
|| SourceLabel.StartsWith(TEXT("coach-memory-dashboard-aligned-follow-up-packet-broad-"));
|
||||
|| SourceLabel.StartsWith(TEXT("coach-memory-dashboard-aligned-follow-up-packet-broad-"))
|
||||
|| SourceLabel == TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-broad-queued")
|
||||
|| SourceLabel == TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-broad-follow-up")
|
||||
|| SourceLabel == TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-broad-recommended");
|
||||
}
|
||||
|
||||
bool IsAlignedTightFollowUpGuidanceSourceLabel(const FString& SourceLabel)
|
||||
|
|
@ -408,6 +414,14 @@ namespace HyperTwistCoachDashboardWidgetInternal
|
|||
{
|
||||
return TEXT("accepted aligned tight follow-up-packet handoff history");
|
||||
}
|
||||
if (SourceLabel == TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-tight-queued")
|
||||
|| SourceLabel
|
||||
== TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-tight-follow-up")
|
||||
|| SourceLabel
|
||||
== TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-tight-recommended"))
|
||||
{
|
||||
return TEXT("accepted aligned tight follow-up-packet outcome trust");
|
||||
}
|
||||
if (SourceLabel
|
||||
== TEXT("recommendation-history-accepted-aligned-tight-follow-up-packet-outcome"))
|
||||
{
|
||||
|
|
@ -424,6 +438,14 @@ namespace HyperTwistCoachDashboardWidgetInternal
|
|||
{
|
||||
return TEXT("accepted aligned broad recommended-packet handoff history");
|
||||
}
|
||||
if (SourceLabel == TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-broad-queued")
|
||||
|| SourceLabel
|
||||
== TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-broad-follow-up")
|
||||
|| SourceLabel
|
||||
== TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-broad-recommended"))
|
||||
{
|
||||
return TEXT("accepted aligned broad recommended-packet outcome trust");
|
||||
}
|
||||
if (SourceLabel
|
||||
== TEXT("recommendation-history-accepted-aligned-broad-recommended-packet-outcome"))
|
||||
{
|
||||
|
|
@ -1020,8 +1042,38 @@ namespace HyperTwistCoachDashboardWidgetInternal
|
|||
const bool bReliableTrustedMethodDrillRecoveryStructurePlanDriven = false,
|
||||
const bool bReliableTrustedMethodDrillRecoveryStructurePlanAlignmentDriven = false,
|
||||
const bool bAlignedTightFollowUpPacketAcceptedDriven = false,
|
||||
const bool bAlignedBroadRecommendedPacketAcceptedDriven = false)
|
||||
const bool bAlignedBroadRecommendedPacketAcceptedDriven = false,
|
||||
const bool bAcceptedAlignedTightFollowUpPacketOutcomeDriven = false,
|
||||
const bool bAcceptedAlignedBroadRecommendedPacketOutcomeDriven = false)
|
||||
{
|
||||
if (bAcceptedAlignedTightFollowUpPacketOutcomeDriven)
|
||||
{
|
||||
switch (HandoffKind)
|
||||
{
|
||||
case EHyperTwistTrainingCoachHandoffKind::Queue:
|
||||
return TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-tight-queued");
|
||||
case EHyperTwistTrainingCoachHandoffKind::FollowUp:
|
||||
return TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-tight-follow-up");
|
||||
case EHyperTwistTrainingCoachHandoffKind::Recommended:
|
||||
return TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-tight-recommended");
|
||||
default:
|
||||
return FString();
|
||||
}
|
||||
}
|
||||
if (bAcceptedAlignedBroadRecommendedPacketOutcomeDriven)
|
||||
{
|
||||
switch (HandoffKind)
|
||||
{
|
||||
case EHyperTwistTrainingCoachHandoffKind::Queue:
|
||||
return TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-broad-queued");
|
||||
case EHyperTwistTrainingCoachHandoffKind::FollowUp:
|
||||
return TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-broad-follow-up");
|
||||
case EHyperTwistTrainingCoachHandoffKind::Recommended:
|
||||
return TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-broad-recommended");
|
||||
default:
|
||||
return FString();
|
||||
}
|
||||
}
|
||||
if (bAlignedTightFollowUpPacketAcceptedDriven)
|
||||
{
|
||||
switch (HandoffKind)
|
||||
|
|
@ -6478,6 +6530,12 @@ FString UHyperTwistCoachDashboardWidget::ResolveDashboardHandoffStartActionSourc
|
|||
const bool bUseAlignedBroadPacketAcceptedLabel =
|
||||
bDisplayedCoachHandoffRecommendationUsedAlignedBroadPacketAcceptedHistory
|
||||
&& DisplayedCoachHandoffRecommendationKind == HandoffKind;
|
||||
const bool bUseAcceptedAlignedTightPacketOutcomeLabel =
|
||||
bDisplayedCoachHandoffRecommendationUsedAcceptedAlignedTightPacketOutcomeTrust
|
||||
&& DisplayedCoachHandoffRecommendationKind == HandoffKind;
|
||||
const bool bUseAcceptedAlignedBroadPacketOutcomeLabel =
|
||||
bDisplayedCoachHandoffRecommendationUsedAcceptedAlignedBroadPacketOutcomeTrust
|
||||
&& DisplayedCoachHandoffRecommendationKind == HandoffKind;
|
||||
return HyperTwistCoachDashboardWidgetInternal::DashboardHandoffSourceLabel(
|
||||
HandoffKind,
|
||||
bUseDeferredFirstSuppressionLabel,
|
||||
|
|
@ -6492,7 +6550,9 @@ FString UHyperTwistCoachDashboardWidget::ResolveDashboardHandoffStartActionSourc
|
|||
false,
|
||||
false,
|
||||
bUseAlignedTightPacketAcceptedLabel,
|
||||
bUseAlignedBroadPacketAcceptedLabel
|
||||
bUseAlignedBroadPacketAcceptedLabel,
|
||||
bUseAcceptedAlignedTightPacketOutcomeLabel,
|
||||
bUseAcceptedAlignedBroadPacketOutcomeLabel
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -7169,10 +7229,97 @@ FHyperTwistCoachDashboardQueueRecoveryWeighting UHyperTwistCoachDashboardWidget:
|
|||
FHyperTwistCoachDashboardQueueRecoveryWeighting Weighting;
|
||||
float PromoteDeltaAccumulator = 0.0f;
|
||||
float LaunchDeltaAccumulator = 0.0f;
|
||||
const HyperTwistCoachDashboardWidgetInternal::FHandoffHistoryDashboardBias HandoffHistoryBias =
|
||||
const bool bQueueLooksFollowUpOrRecovery =
|
||||
CachedCoachPanelState.NextQueueSourceLabel.Contains(TEXT("follow-up"))
|
||||
|| CachedCoachPanelState.NextQueueSourceLabel.Contains(TEXT("queue-recovery"))
|
||||
|| CachedCoachPanelState.NextQueueSourceLabel.Contains(TEXT("closure_history_follow_up"));
|
||||
const bool bQueueLooksRecommendedOrPrimary =
|
||||
CachedCoachPanelState.NextQueueSourceLabel.Contains(TEXT("primary"))
|
||||
|| CachedCoachPanelState.NextQueueSourceLabel.Contains(TEXT("recommended"))
|
||||
|| CachedCoachPanelState.NextQueueSourceLabel.Contains(TEXT("closure_history_recommended"));
|
||||
HyperTwistCoachDashboardWidgetInternal::FHandoffHistoryDashboardBias HandoffHistoryBias =
|
||||
HyperTwistCoachDashboardWidgetInternal::DeriveHandoffHistoryDashboardBias(
|
||||
HandoffHistoryEntries
|
||||
);
|
||||
const int32 AcceptedAlignedTightPacketOutcomeTrustBias =
|
||||
(CachedCoachPanelState.AcceptedAlignedTightFollowUpPacketOutcomeHistoryCount >= 2
|
||||
&& CachedCoachPanelState.AcceptedAlignedTightFollowUpPacketOutcomeAverageScore >= 60.0f)
|
||||
? FMath::Clamp(
|
||||
CachedCoachPanelState.AcceptedAlignedTightFollowUpPacketOutcomeHistoryCount
|
||||
- CachedCoachPanelState.AcceptedAlignedBroadRecommendedPacketOutcomeHistoryCount
|
||||
+ (CachedCoachPanelState.AcceptedAlignedTightFollowUpPacketOutcomeAverageScore >= 80.0f
|
||||
? 1
|
||||
: 0),
|
||||
1,
|
||||
4)
|
||||
: 0;
|
||||
const int32 AcceptedAlignedBroadPacketOutcomeTrustBias =
|
||||
(CachedCoachPanelState.AcceptedAlignedBroadRecommendedPacketOutcomeHistoryCount >= 2
|
||||
&& CachedCoachPanelState.AcceptedAlignedBroadRecommendedPacketOutcomeAverageScore >= 58.0f)
|
||||
? FMath::Clamp(
|
||||
CachedCoachPanelState.AcceptedAlignedBroadRecommendedPacketOutcomeHistoryCount
|
||||
- CachedCoachPanelState.AcceptedAlignedTightFollowUpPacketOutcomeHistoryCount
|
||||
+ (CachedCoachPanelState.AcceptedAlignedBroadRecommendedPacketOutcomeAverageScore >= 78.0f
|
||||
? 1
|
||||
: 0),
|
||||
1,
|
||||
4)
|
||||
: 0;
|
||||
if (AcceptedAlignedTightPacketOutcomeTrustBias > AcceptedAlignedBroadPacketOutcomeTrustBias)
|
||||
{
|
||||
HandoffHistoryBias.FollowUpScore += AcceptedAlignedTightPacketOutcomeTrustBias * 4;
|
||||
if (bQueueLooksFollowUpOrRecovery)
|
||||
{
|
||||
HandoffHistoryBias.QueueScore += AcceptedAlignedTightPacketOutcomeTrustBias * 2;
|
||||
}
|
||||
}
|
||||
else if (AcceptedAlignedBroadPacketOutcomeTrustBias > AcceptedAlignedTightPacketOutcomeTrustBias)
|
||||
{
|
||||
HandoffHistoryBias.RecommendedScore += AcceptedAlignedBroadPacketOutcomeTrustBias * 4;
|
||||
if (bQueueLooksRecommendedOrPrimary)
|
||||
{
|
||||
HandoffHistoryBias.QueueScore += AcceptedAlignedBroadPacketOutcomeTrustBias * 2;
|
||||
}
|
||||
}
|
||||
{
|
||||
HandoffHistoryBias.PreferredKind =
|
||||
HyperTwistCoachDashboardWidgetInternal::EHandoffRecommendationKind::None;
|
||||
int32 BestScore = 0;
|
||||
int32 BestAcceptedDeltaCount = 0;
|
||||
auto ConsiderKind = [&BestScore, &BestAcceptedDeltaCount, &HandoffHistoryBias](
|
||||
const HyperTwistCoachDashboardWidgetInternal::EHandoffRecommendationKind Kind,
|
||||
const int32 Score,
|
||||
const int32 AcceptedDeltaCount)
|
||||
{
|
||||
if (Score <= 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (Score > BestScore
|
||||
|| (Score == BestScore && AcceptedDeltaCount > BestAcceptedDeltaCount))
|
||||
{
|
||||
BestScore = Score;
|
||||
BestAcceptedDeltaCount = AcceptedDeltaCount;
|
||||
HandoffHistoryBias.PreferredKind = Kind;
|
||||
}
|
||||
};
|
||||
|
||||
ConsiderKind(
|
||||
HyperTwistCoachDashboardWidgetInternal::EHandoffRecommendationKind::Queue,
|
||||
HandoffHistoryBias.QueueScore,
|
||||
HandoffHistoryBias.QueueAcceptedDeltaCount);
|
||||
ConsiderKind(
|
||||
HyperTwistCoachDashboardWidgetInternal::EHandoffRecommendationKind::FollowUp,
|
||||
HandoffHistoryBias.FollowUpScore,
|
||||
HandoffHistoryBias.FollowUpAcceptedDeltaCount
|
||||
+ CachedCoachPanelState.AcceptedAlignedTightFollowUpPacketOutcomeHistoryCount);
|
||||
ConsiderKind(
|
||||
HyperTwistCoachDashboardWidgetInternal::EHandoffRecommendationKind::Recommended,
|
||||
HandoffHistoryBias.RecommendedScore,
|
||||
HandoffHistoryBias.RecommendedAcceptedDeltaCount
|
||||
+ CachedCoachPanelState.AcceptedAlignedBroadRecommendedPacketOutcomeHistoryCount);
|
||||
}
|
||||
const HyperTwistCoachDashboardWidgetInternal::FMethodDrillRecoveryPacketDashboardBias
|
||||
MethodDrillRecoveryPacketBias =
|
||||
HyperTwistCoachDashboardWidgetInternal::DeriveMethodDrillRecoveryPacketDashboardBias(
|
||||
|
|
@ -9745,7 +9892,7 @@ void UHyperTwistCoachDashboardWidget::UpdateDashboardPresentation()
|
|||
CachedCoachPanelState.NextQueueSourceLabel.Contains(TEXT("primary"))
|
||||
|| CachedCoachPanelState.NextQueueSourceLabel.Contains(TEXT("recommended"))
|
||||
|| CachedCoachPanelState.NextQueueSourceLabel.Contains(TEXT("closure_history_recommended"));
|
||||
const HyperTwistCoachDashboardWidgetInternal::FHandoffHistoryDashboardBias HandoffHistoryBias =
|
||||
HyperTwistCoachDashboardWidgetInternal::FHandoffHistoryDashboardBias HandoffHistoryBias =
|
||||
HyperTwistCoachDashboardWidgetInternal::DeriveHandoffHistoryDashboardBias(
|
||||
HandoffHistoryEntries
|
||||
);
|
||||
|
|
@ -9766,6 +9913,8 @@ void UHyperTwistCoachDashboardWidget::UpdateDashboardPresentation()
|
|||
bDisplayedCoachHandoffRecommendationUsedMethodDrillWeighting = false;
|
||||
bDisplayedCoachHandoffRecommendationUsedAlignedTightPacketAcceptedHistory = false;
|
||||
bDisplayedCoachHandoffRecommendationUsedAlignedBroadPacketAcceptedHistory = false;
|
||||
bDisplayedCoachHandoffRecommendationUsedAcceptedAlignedTightPacketOutcomeTrust = false;
|
||||
bDisplayedCoachHandoffRecommendationUsedAcceptedAlignedBroadPacketOutcomeTrust = false;
|
||||
DisplayedCoachHandoffMethodDrillRecoveryMemoryStartActionSourceLabel.Reset();
|
||||
FString CoachHandoffRecommendationStatusLine;
|
||||
FString CoachHandoffRecommendationDetailLine;
|
||||
|
|
@ -9775,6 +9924,91 @@ void UHyperTwistCoachDashboardWidget::UpdateDashboardPresentation()
|
|||
&& CachedCoachPanelState.bHasFollowUpGuidance;
|
||||
const bool bRecommendedReadyForHandoff =
|
||||
CachedCoachPanelState.bCanStartCoachRecommendedRun;
|
||||
const int32 AcceptedAlignedTightPacketOutcomeTrustBias =
|
||||
(CachedCoachPanelState.AcceptedAlignedTightFollowUpPacketOutcomeHistoryCount >= 2
|
||||
&& CachedCoachPanelState.AcceptedAlignedTightFollowUpPacketOutcomeAverageScore
|
||||
>= 60.0f)
|
||||
? FMath::Clamp(
|
||||
CachedCoachPanelState.AcceptedAlignedTightFollowUpPacketOutcomeHistoryCount
|
||||
- CachedCoachPanelState.AcceptedAlignedBroadRecommendedPacketOutcomeHistoryCount
|
||||
+ (CachedCoachPanelState.AcceptedAlignedTightFollowUpPacketOutcomeAverageScore
|
||||
>= 80.0f
|
||||
? 1
|
||||
: 0),
|
||||
1,
|
||||
4)
|
||||
: 0;
|
||||
const int32 AcceptedAlignedBroadPacketOutcomeTrustBias =
|
||||
(CachedCoachPanelState.AcceptedAlignedBroadRecommendedPacketOutcomeHistoryCount >= 2
|
||||
&& CachedCoachPanelState.AcceptedAlignedBroadRecommendedPacketOutcomeAverageScore
|
||||
>= 58.0f)
|
||||
? FMath::Clamp(
|
||||
CachedCoachPanelState.AcceptedAlignedBroadRecommendedPacketOutcomeHistoryCount
|
||||
- CachedCoachPanelState.AcceptedAlignedTightFollowUpPacketOutcomeHistoryCount
|
||||
+ (CachedCoachPanelState.AcceptedAlignedBroadRecommendedPacketOutcomeAverageScore
|
||||
>= 78.0f
|
||||
? 1
|
||||
: 0),
|
||||
1,
|
||||
4)
|
||||
: 0;
|
||||
if (AcceptedAlignedTightPacketOutcomeTrustBias
|
||||
> AcceptedAlignedBroadPacketOutcomeTrustBias)
|
||||
{
|
||||
HandoffHistoryBias.FollowUpScore += AcceptedAlignedTightPacketOutcomeTrustBias * 4;
|
||||
if (bQueueReadyForHandoff && bQueueLooksFollowUpOrRecovery)
|
||||
{
|
||||
HandoffHistoryBias.QueueScore += AcceptedAlignedTightPacketOutcomeTrustBias * 2;
|
||||
}
|
||||
}
|
||||
else if (AcceptedAlignedBroadPacketOutcomeTrustBias
|
||||
> AcceptedAlignedTightPacketOutcomeTrustBias)
|
||||
{
|
||||
HandoffHistoryBias.RecommendedScore += AcceptedAlignedBroadPacketOutcomeTrustBias * 4;
|
||||
if (bQueueReadyForHandoff && bQueueLooksRecommendedOrPrimary)
|
||||
{
|
||||
HandoffHistoryBias.QueueScore += AcceptedAlignedBroadPacketOutcomeTrustBias * 2;
|
||||
}
|
||||
}
|
||||
{
|
||||
HandoffHistoryBias.PreferredKind =
|
||||
HyperTwistCoachDashboardWidgetInternal::EHandoffRecommendationKind::None;
|
||||
int32 BestScore = 0;
|
||||
int32 BestAcceptedDeltaCount = 0;
|
||||
auto ConsiderKind = [&BestScore, &BestAcceptedDeltaCount, &HandoffHistoryBias](
|
||||
const HyperTwistCoachDashboardWidgetInternal::EHandoffRecommendationKind Kind,
|
||||
const int32 Score,
|
||||
const int32 AcceptedDeltaCount)
|
||||
{
|
||||
if (Score <= 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (Score > BestScore
|
||||
|| (Score == BestScore && AcceptedDeltaCount > BestAcceptedDeltaCount))
|
||||
{
|
||||
BestScore = Score;
|
||||
BestAcceptedDeltaCount = AcceptedDeltaCount;
|
||||
HandoffHistoryBias.PreferredKind = Kind;
|
||||
}
|
||||
};
|
||||
|
||||
ConsiderKind(
|
||||
HyperTwistCoachDashboardWidgetInternal::EHandoffRecommendationKind::Queue,
|
||||
HandoffHistoryBias.QueueScore,
|
||||
HandoffHistoryBias.QueueAcceptedDeltaCount);
|
||||
ConsiderKind(
|
||||
HyperTwistCoachDashboardWidgetInternal::EHandoffRecommendationKind::FollowUp,
|
||||
HandoffHistoryBias.FollowUpScore,
|
||||
HandoffHistoryBias.FollowUpAcceptedDeltaCount
|
||||
+ CachedCoachPanelState.AcceptedAlignedTightFollowUpPacketOutcomeHistoryCount);
|
||||
ConsiderKind(
|
||||
HyperTwistCoachDashboardWidgetInternal::EHandoffRecommendationKind::Recommended,
|
||||
HandoffHistoryBias.RecommendedScore,
|
||||
HandoffHistoryBias.RecommendedAcceptedDeltaCount
|
||||
+ CachedCoachPanelState.AcceptedAlignedBroadRecommendedPacketOutcomeHistoryCount);
|
||||
}
|
||||
bool bHandoffRecommendationUsedHistory = false;
|
||||
bool bHandoffRecommendationUsedDeferredOverflowHistory = false;
|
||||
bool bHandoffRecommendationUsedDeferredFirstSuppressionSignal = false;
|
||||
|
|
@ -10531,6 +10765,22 @@ void UHyperTwistCoachDashboardWidget::UpdateDashboardPresentation()
|
|||
|| (DisplayedCoachHandoffRecommendationKind
|
||||
== EHyperTwistTrainingCoachHandoffKind::Queue
|
||||
&& bQueueLooksRecommendedOrPrimary));
|
||||
bDisplayedCoachHandoffRecommendationUsedAcceptedAlignedTightPacketOutcomeTrust =
|
||||
AcceptedAlignedTightPacketOutcomeTrustBias
|
||||
> AcceptedAlignedBroadPacketOutcomeTrustBias
|
||||
&& (DisplayedCoachHandoffRecommendationKind
|
||||
== EHyperTwistTrainingCoachHandoffKind::FollowUp
|
||||
|| (DisplayedCoachHandoffRecommendationKind
|
||||
== EHyperTwistTrainingCoachHandoffKind::Queue
|
||||
&& bQueueLooksFollowUpOrRecovery));
|
||||
bDisplayedCoachHandoffRecommendationUsedAcceptedAlignedBroadPacketOutcomeTrust =
|
||||
AcceptedAlignedBroadPacketOutcomeTrustBias
|
||||
> AcceptedAlignedTightPacketOutcomeTrustBias
|
||||
&& (DisplayedCoachHandoffRecommendationKind
|
||||
== EHyperTwistTrainingCoachHandoffKind::Recommended
|
||||
|| (DisplayedCoachHandoffRecommendationKind
|
||||
== EHyperTwistTrainingCoachHandoffKind::Queue
|
||||
&& bQueueLooksRecommendedOrPrimary));
|
||||
const bool bHandoffRecommendationUsedStrongMethodDrillFollowUpPacket =
|
||||
bHandoffRecommendationUsedMethodDrillWeighting
|
||||
&& HandoffRecommendationKind
|
||||
|
|
@ -10735,6 +10985,13 @@ void UHyperTwistCoachDashboardWidget::UpdateDashboardPresentation()
|
|||
HandoffHistoryBias.AlignedTightFollowUpPacketAcceptedDeltaCount,
|
||||
HandoffHistoryBias.AlignedBroadRecommendedPacketAcceptedDeltaCount
|
||||
);
|
||||
CoachHandoffRecommendationDetailLine += FString::Printf(
|
||||
TEXT(" | accepted aligned packet outcomes tight/broad %d/%d avg %.1f/%.1f"),
|
||||
CachedCoachPanelState.AcceptedAlignedTightFollowUpPacketOutcomeHistoryCount,
|
||||
CachedCoachPanelState.AcceptedAlignedBroadRecommendedPacketOutcomeHistoryCount,
|
||||
CachedCoachPanelState.AcceptedAlignedTightFollowUpPacketOutcomeAverageScore,
|
||||
CachedCoachPanelState.AcceptedAlignedBroadRecommendedPacketOutcomeAverageScore
|
||||
);
|
||||
if (HandoffHistoryBias.AlignedTightFollowUpOutcomeAcceptedDeltaCount > 0
|
||||
&& HandoffHistoryBias.PreferredKind
|
||||
== HyperTwistCoachDashboardWidgetInternal::EHandoffRecommendationKind::FollowUp)
|
||||
|
|
@ -10763,6 +11020,17 @@ void UHyperTwistCoachDashboardWidget::UpdateDashboardPresentation()
|
|||
CoachHandoffRecommendationDetailLine +=
|
||||
TEXT(" | Accepted aligned broad packet recommended-first handoffs are reinforcing the retained broad branch.");
|
||||
}
|
||||
if (bDisplayedCoachHandoffRecommendationUsedAcceptedAlignedTightPacketOutcomeTrust)
|
||||
{
|
||||
CoachHandoffRecommendationDetailLine +=
|
||||
TEXT(" | Accepted aligned tight packet outcome trust is tipping this handoff toward narrow continuation.");
|
||||
}
|
||||
else if (
|
||||
bDisplayedCoachHandoffRecommendationUsedAcceptedAlignedBroadPacketOutcomeTrust)
|
||||
{
|
||||
CoachHandoffRecommendationDetailLine +=
|
||||
TEXT(" | Accepted aligned broad packet outcome trust is tipping this handoff back toward broader redirect.");
|
||||
}
|
||||
CoachHandoffRecommendationDetailLine += FString::Printf(
|
||||
TEXT(" | upstream drill recovery strong/weak/history %d/%d/%d avg %.1f"),
|
||||
CachedCoachPanelState.StrongMethodDrillRecoveryHistoryCount,
|
||||
|
|
|
|||
|
|
@ -339,7 +339,13 @@ namespace HyperTwistTrainingCoachLibraryInternal
|
|||
|| 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");
|
||||
|| SourceLabel == TEXT("dashboard-handoff-aligned-follow-up-packet-tight-recommended")
|
||||
|| SourceLabel
|
||||
== TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-tight-queued")
|
||||
|| SourceLabel
|
||||
== TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-tight-follow-up")
|
||||
|| SourceLabel
|
||||
== TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-tight-recommended");
|
||||
}
|
||||
|
||||
bool IsAlignedBroadRecommendedGuidanceSourceLabel(const FString& SourceLabel)
|
||||
|
|
@ -352,7 +358,13 @@ namespace HyperTwistTrainingCoachLibraryInternal
|
|||
|| 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");
|
||||
|| SourceLabel == TEXT("dashboard-handoff-aligned-follow-up-packet-broad-recommended")
|
||||
|| SourceLabel
|
||||
== TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-broad-queued")
|
||||
|| SourceLabel
|
||||
== TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-broad-follow-up")
|
||||
|| SourceLabel
|
||||
== TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-broad-recommended");
|
||||
}
|
||||
|
||||
FString DescribeCoachMemorySourceLabel(const FString& SourceLabel)
|
||||
|
|
@ -407,6 +419,14 @@ namespace HyperTwistTrainingCoachLibraryInternal
|
|||
}
|
||||
if (IsAlignedTightFollowUpGuidanceSourceLabel(SourceLabel))
|
||||
{
|
||||
if (SourceLabel == TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-tight-queued")
|
||||
|| SourceLabel
|
||||
== TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-tight-follow-up")
|
||||
|| SourceLabel
|
||||
== TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-tight-recommended"))
|
||||
{
|
||||
return TEXT("accepted aligned tight follow-up-packet outcome trust");
|
||||
}
|
||||
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")
|
||||
|
|
@ -426,6 +446,14 @@ namespace HyperTwistTrainingCoachLibraryInternal
|
|||
}
|
||||
if (IsAlignedBroadRecommendedGuidanceSourceLabel(SourceLabel))
|
||||
{
|
||||
if (SourceLabel == TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-broad-queued")
|
||||
|| SourceLabel
|
||||
== TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-broad-follow-up")
|
||||
|| SourceLabel
|
||||
== TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-broad-recommended"))
|
||||
{
|
||||
return TEXT("accepted aligned broad recommended-packet outcome trust");
|
||||
}
|
||||
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")
|
||||
|
|
|
|||
|
|
@ -137,14 +137,26 @@ namespace HyperTwistTrainingRepositoryLibraryInternal
|
|||
{
|
||||
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");
|
||||
|| SourceLabel == TEXT("dashboard-handoff-aligned-follow-up-packet-tight-recommended")
|
||||
|| SourceLabel
|
||||
== TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-tight-queued")
|
||||
|| SourceLabel
|
||||
== TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-tight-follow-up")
|
||||
|| SourceLabel
|
||||
== TEXT("dashboard-handoff-accepted-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");
|
||||
|| SourceLabel == TEXT("dashboard-handoff-aligned-follow-up-packet-broad-recommended")
|
||||
|| SourceLabel
|
||||
== TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-broad-queued")
|
||||
|| SourceLabel
|
||||
== TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-broad-follow-up")
|
||||
|| SourceLabel
|
||||
== TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-broad-recommended");
|
||||
}
|
||||
|
||||
bool IsStrongMethodDrillRecoveryDashboardHandoffSource(const FString& SourceLabel)
|
||||
|
|
@ -455,7 +467,13 @@ namespace HyperTwistTrainingRepositoryLibraryInternal
|
|||
|| 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");
|
||||
|| SourceLabel == TEXT("dashboard-handoff-aligned-follow-up-packet-tight-recommended")
|
||||
|| SourceLabel
|
||||
== TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-tight-queued")
|
||||
|| SourceLabel
|
||||
== TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-tight-follow-up")
|
||||
|| SourceLabel
|
||||
== TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-tight-recommended");
|
||||
}
|
||||
|
||||
bool IsAcceptedAlignedBroadRecommendedPacketOutcomeSource(const FString& SourceLabel)
|
||||
|
|
@ -465,7 +483,13 @@ namespace HyperTwistTrainingRepositoryLibraryInternal
|
|||
|| 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");
|
||||
|| SourceLabel == TEXT("dashboard-handoff-aligned-follow-up-packet-broad-recommended")
|
||||
|| SourceLabel
|
||||
== TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-broad-queued")
|
||||
|| SourceLabel
|
||||
== TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-broad-follow-up")
|
||||
|| SourceLabel
|
||||
== TEXT("dashboard-handoff-accepted-aligned-follow-up-packet-broad-recommended");
|
||||
}
|
||||
|
||||
FString ResolveMethodDrillFollowUpPacketStructureRecoverySourceLabel(
|
||||
|
|
@ -579,6 +603,10 @@ namespace HyperTwistTrainingRepositoryLibraryInternal
|
|||
|| 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-accepted-aligned-follow-up-packet-tight-queued")
|
||||
|| SourceLabel
|
||||
== TEXT("dashboard-handoff-accepted-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"))
|
||||
{
|
||||
|
|
@ -604,6 +632,10 @@ namespace HyperTwistTrainingRepositoryLibraryInternal
|
|||
|| 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-accepted-aligned-follow-up-packet-tight-follow-up")
|
||||
|| SourceLabel
|
||||
== TEXT("dashboard-handoff-accepted-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"))
|
||||
{
|
||||
|
|
@ -629,6 +661,10 @@ namespace HyperTwistTrainingRepositoryLibraryInternal
|
|||
|| 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-accepted-aligned-follow-up-packet-tight-recommended")
|
||||
|| SourceLabel
|
||||
== TEXT("dashboard-handoff-accepted-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"))
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1618,6 +1618,8 @@ private:
|
|||
bool bDisplayedCoachHandoffRecommendationUsedMethodDrillWeighting = false;
|
||||
bool bDisplayedCoachHandoffRecommendationUsedAlignedTightPacketAcceptedHistory = false;
|
||||
bool bDisplayedCoachHandoffRecommendationUsedAlignedBroadPacketAcceptedHistory = false;
|
||||
bool bDisplayedCoachHandoffRecommendationUsedAcceptedAlignedTightPacketOutcomeTrust = false;
|
||||
bool bDisplayedCoachHandoffRecommendationUsedAcceptedAlignedBroadPacketOutcomeTrust = false;
|
||||
FString DisplayedCoachHandoffMethodDrillRecoveryMemoryStartActionSourceLabel;
|
||||
EHyperTwistCoachDashboardGuidancePreviewLane ActiveGuidancePreviewLane =
|
||||
EHyperTwistCoachDashboardGuidancePreviewLane::None;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue