Derive drill recovery memory upstream
This commit is contained in:
parent
ad3e9ad19d
commit
f36b521fb7
5 changed files with 258 additions and 9 deletions
|
|
@ -254,6 +254,14 @@ namespace HyperTwistCoachDashboardWidgetInternal
|
|||
{
|
||||
return TEXT("weak method-drill follow-up history");
|
||||
}
|
||||
if (SourceLabel == TEXT("coach-memory-method-drill-recovery-strong"))
|
||||
{
|
||||
return TEXT("successful drill-driven recovery history");
|
||||
}
|
||||
if (SourceLabel == TEXT("coach-memory-method-drill-recovery-weak"))
|
||||
{
|
||||
return TEXT("weak drill-driven recovery history");
|
||||
}
|
||||
|
||||
return SourceLabel.IsEmpty() ? TEXT("n/a") : SourceLabel;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -44,6 +44,13 @@ namespace HyperTwistTrainingCoachLibraryInternal
|
|||
|| SourceLabel == TEXT("dashboard-handoff-method-drill-recommended");
|
||||
}
|
||||
|
||||
bool IsMethodDrillRecoveryMemorySource(const FString& SourceLabel)
|
||||
{
|
||||
return IsMethodDrillDashboardHandoffSource(SourceLabel)
|
||||
|| SourceLabel == TEXT("coach-memory-method-drill-recovery-strong")
|
||||
|| SourceLabel == TEXT("coach-memory-method-drill-recovery-weak");
|
||||
}
|
||||
|
||||
FString DescribeCoachHandoffKind(const EHyperTwistTrainingCoachHandoffKind HandoffKind)
|
||||
{
|
||||
switch (HandoffKind)
|
||||
|
|
@ -207,6 +214,14 @@ namespace HyperTwistTrainingCoachLibraryInternal
|
|||
{
|
||||
return TEXT("weak method-drill follow-up history");
|
||||
}
|
||||
if (SourceLabel == TEXT("coach-memory-method-drill-recovery-strong"))
|
||||
{
|
||||
return TEXT("successful drill-driven recovery history");
|
||||
}
|
||||
if (SourceLabel == TEXT("coach-memory-method-drill-recovery-weak"))
|
||||
{
|
||||
return TEXT("weak drill-driven recovery history");
|
||||
}
|
||||
|
||||
return SourceLabel.IsEmpty() ? TEXT("none") : SourceLabel;
|
||||
}
|
||||
|
|
@ -1134,7 +1149,7 @@ TArray<FHyperTwistCoachSignal> UHyperTwistTrainingCoachLibrary::DeriveCoachSigna
|
|||
CoachMemorySnapshot.PreferredQueueRecoveryAction
|
||||
== EHyperTwistTrainingQueueRecoveryAction::LaunchRecovery;
|
||||
const bool bMethodDrillRecoveryActionSource =
|
||||
HyperTwistTrainingCoachLibraryInternal::IsMethodDrillDashboardHandoffSource(
|
||||
HyperTwistTrainingCoachLibraryInternal::IsMethodDrillRecoveryMemorySource(
|
||||
CoachMemorySnapshot.PreferredQueueRecoveryActionSourceLabel
|
||||
);
|
||||
const float Score = 66.0f
|
||||
|
|
|
|||
|
|
@ -79,6 +79,12 @@ namespace HyperTwistTrainingRepositoryLibraryInternal
|
|||
|| SourceLabel.StartsWith(TEXT("coach-memory-dashboard-method-drill-"));
|
||||
}
|
||||
|
||||
bool IsMethodDrillRecoveryCoachMemorySource(const FString& SourceLabel)
|
||||
{
|
||||
return SourceLabel == TEXT("coach-memory-method-drill-recovery-strong")
|
||||
|| SourceLabel == TEXT("coach-memory-method-drill-recovery-weak");
|
||||
}
|
||||
|
||||
EHyperTwistTrainingCoachHandoffKind DashboardHandoffKindFromSourceLabel(const FString& SourceLabel)
|
||||
{
|
||||
if (SourceLabel == TEXT("dashboard-handoff-queued")
|
||||
|
|
@ -508,6 +514,51 @@ namespace HyperTwistTrainingRepositoryLibraryInternal
|
|||
0,
|
||||
4
|
||||
);
|
||||
const int32 MethodDrillRecoveryStartedCount =
|
||||
QueueExecutionSummary.StartedMethodDrillQueuedHandoffEventCount
|
||||
+ QueueExecutionSummary.StartedMethodDrillFollowUpHandoffEventCount
|
||||
+ QueueExecutionSummary.StartedMethodDrillRecommendedHandoffEventCount;
|
||||
const int32 MethodDrillRecoveryCompletedCount =
|
||||
QueueExecutionSummary.CompletedMethodDrillQueuedHandoffEventCount
|
||||
+ QueueExecutionSummary.CompletedMethodDrillFollowUpHandoffEventCount
|
||||
+ QueueExecutionSummary.CompletedMethodDrillRecommendedHandoffEventCount;
|
||||
const int32 MethodDrillRecoveryOutstandingCount = FMath::Max(
|
||||
0,
|
||||
MethodDrillRecoveryStartedCount - MethodDrillRecoveryCompletedCount
|
||||
);
|
||||
if (MethodDrillRecoveryStartedCount > 0)
|
||||
{
|
||||
Snapshot.MethodDrillRecoveryHistoryCount += MethodDrillRecoveryStartedCount;
|
||||
Snapshot.StrongMethodDrillRecoveryHistoryCount += MethodDrillRecoveryCompletedCount;
|
||||
Snapshot.WeakMethodDrillRecoveryHistoryCount += MethodDrillRecoveryOutstandingCount;
|
||||
Snapshot.MethodDrillRecoveryAverageOutcomeScore =
|
||||
(static_cast<float>(MethodDrillRecoveryCompletedCount) * 100.0f)
|
||||
/ static_cast<float>(MethodDrillRecoveryStartedCount);
|
||||
}
|
||||
const bool bStrongMethodDrillRecoveryHistory =
|
||||
MethodDrillRecoveryStartedCount >= 2
|
||||
&& MethodDrillRecoveryCompletedCount >= MethodDrillRecoveryOutstandingCount
|
||||
&& Snapshot.MethodDrillRecoveryAverageOutcomeScore >= 55.0f;
|
||||
const bool bWeakMethodDrillRecoveryHistory =
|
||||
MethodDrillRecoveryStartedCount >= 2
|
||||
&& MethodDrillRecoveryOutstandingCount > MethodDrillRecoveryCompletedCount
|
||||
&& Snapshot.MethodDrillRecoveryAverageOutcomeScore <= 45.0f;
|
||||
const int32 MethodDrillRecoveryLaunchBias = bStrongMethodDrillRecoveryHistory
|
||||
? FMath::Clamp(
|
||||
MethodDrillRecoveryCompletedCount
|
||||
- MethodDrillRecoveryOutstandingCount
|
||||
+ (Snapshot.MethodDrillRecoveryAverageOutcomeScore >= 75.0f ? 1 : 0),
|
||||
1,
|
||||
3)
|
||||
: 0;
|
||||
const int32 MethodDrillRecoveryPromoteBias = bWeakMethodDrillRecoveryHistory
|
||||
? FMath::Clamp(
|
||||
MethodDrillRecoveryOutstandingCount
|
||||
- MethodDrillRecoveryCompletedCount
|
||||
+ (QueueExecutionSummary.bHasCompletionGap ? 1 : 0),
|
||||
1,
|
||||
3)
|
||||
: 0;
|
||||
if (ExplicitQueuedHandoffSignal > 0
|
||||
|| ExplicitFollowUpHandoffSignal > 0
|
||||
|| ExplicitRecommendedHandoffSignal > 0)
|
||||
|
|
@ -554,13 +605,15 @@ namespace HyperTwistTrainingRepositoryLibraryInternal
|
|||
+ ExplicitDeferredFirstQueuedHandoffSignal
|
||||
+ ExplicitDeferredFirstFollowUpHandoffSignal
|
||||
+ ExplicitMethodDrillQueuedHandoffSignal
|
||||
+ ExplicitMethodDrillFollowUpHandoffSignal;
|
||||
+ ExplicitMethodDrillFollowUpHandoffSignal
|
||||
+ MethodDrillRecoveryLaunchBias;
|
||||
const int32 WeightedRecommendedRecoverySignal =
|
||||
ExplicitRecommendedRecoverySignal
|
||||
+ ExplicitRecommendedHandoffSignal
|
||||
+ ExplicitDeferredOverflowRecommendedHandoffSignal
|
||||
+ ExplicitDeferredFirstRecommendedHandoffSignal
|
||||
+ ExplicitMethodDrillRecommendedHandoffSignal;
|
||||
+ ExplicitMethodDrillRecommendedHandoffSignal
|
||||
+ MethodDrillRecoveryPromoteBias;
|
||||
const bool bQueueHistoryPrefersFollowUp =
|
||||
DominantDeferredLane == EHyperTwistTrainingCoachGuidanceLane::FollowUp
|
||||
|| (DominantCompletedLane == EHyperTwistTrainingCoachGuidanceLane::FollowUp
|
||||
|
|
@ -576,7 +629,8 @@ namespace HyperTwistTrainingRepositoryLibraryInternal
|
|||
+ FMath::Min(static_cast<float>(QueueExecutionSummary.DeferredEventCount) * 0.75f, 3.0f)
|
||||
+ FMath::Min(static_cast<float>(QueueExecutionSummary.PromotedEventCount), 3.0f)
|
||||
+ (DominantDeferredLane != EHyperTwistTrainingCoachGuidanceLane::None ? 1.5f : 0.0f)
|
||||
- (QueueExecutionSummary.bHasCompletionGap ? 1.0f : 0.0f);
|
||||
- (QueueExecutionSummary.bHasCompletionGap ? 1.0f : 0.0f)
|
||||
+ (static_cast<float>(MethodDrillRecoveryPromoteBias) * 1.5f);
|
||||
const float LaunchRecoveryActionPressure =
|
||||
(QueueExecutionSummary.bHasCompletionGap ? 4.0f : 0.0f)
|
||||
+ (QueueExecutionSummary.bHasBlockedFollowUpFriction ? 2.5f : 0.0f)
|
||||
|
|
@ -590,7 +644,8 @@ namespace HyperTwistTrainingRepositoryLibraryInternal
|
|||
+ static_cast<float>(ExplicitDeferredFirstFollowUpHandoffSignal) * 0.5f
|
||||
+ static_cast<float>(ExplicitMethodDrillQueuedHandoffSignal)
|
||||
+ static_cast<float>(ExplicitMethodDrillFollowUpHandoffSignal)
|
||||
+ static_cast<float>(ExplicitMethodDrillRecommendedHandoffSignal) * 0.5f;
|
||||
+ static_cast<float>(ExplicitMethodDrillRecommendedHandoffSignal) * 0.5f
|
||||
+ (static_cast<float>(MethodDrillRecoveryLaunchBias) * 1.75f);
|
||||
if (PromoteRecoveryActionPressure > 0.0f || LaunchRecoveryActionPressure > 0.0f)
|
||||
{
|
||||
if (PromoteRecoveryActionPressure > LaunchRecoveryActionPressure)
|
||||
|
|
@ -618,6 +673,29 @@ namespace HyperTwistTrainingRepositoryLibraryInternal
|
|||
Snapshot.PreferredQueueRecoveryActionSourceLabel = TEXT("queue-history-balanced-pressure");
|
||||
}
|
||||
}
|
||||
if (Snapshot.PreferredQueueRecoveryAction == EHyperTwistTrainingQueueRecoveryAction::LaunchRecovery
|
||||
&& bStrongMethodDrillRecoveryHistory
|
||||
&& (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-strong");
|
||||
}
|
||||
else if (Snapshot.PreferredQueueRecoveryAction
|
||||
== EHyperTwistTrainingQueueRecoveryAction::PromoteDeferred
|
||||
&& bWeakMethodDrillRecoveryHistory
|
||||
&& (Snapshot.PreferredQueueRecoveryActionSourceLabel.IsEmpty()
|
||||
|| Snapshot.PreferredQueueRecoveryActionSourceLabel.StartsWith(TEXT("queue-history"))
|
||||
|| HyperTwistTrainingRepositoryLibraryInternal::IsMethodDrillRecoveryCoachMemorySource(
|
||||
Snapshot.PreferredQueueRecoveryActionSourceLabel)))
|
||||
{
|
||||
Snapshot.PreferredQueueRecoveryActionSourceLabel =
|
||||
TEXT("coach-memory-method-drill-recovery-weak");
|
||||
}
|
||||
|
||||
if (bQueueHistoryPrefersFollowUp)
|
||||
{
|
||||
|
|
@ -634,6 +712,14 @@ namespace HyperTwistTrainingRepositoryLibraryInternal
|
|||
- (QueueExecutionSummary.bHasBlockedFollowUpFriction ? 1 : 0)
|
||||
);
|
||||
}
|
||||
if (MethodDrillRecoveryLaunchBias > 0)
|
||||
{
|
||||
Snapshot.FollowUpGuidanceContinueBias += MethodDrillRecoveryLaunchBias;
|
||||
}
|
||||
if (MethodDrillRecoveryPromoteBias > 0)
|
||||
{
|
||||
Snapshot.RecommendedGuidanceContinueBias += MethodDrillRecoveryPromoteBias;
|
||||
}
|
||||
if (bQueueHistoryPrefersFollowUp
|
||||
&& Snapshot.PreferredQueueRecoveryAction == EHyperTwistTrainingQueueRecoveryAction::PromoteDeferred)
|
||||
{
|
||||
|
|
@ -6461,6 +6547,51 @@ FHyperTwistTrainingCoachMemorySnapshot UHyperTwistTrainingRepositoryLibrary::Der
|
|||
0,
|
||||
4
|
||||
);
|
||||
const int32 MethodDrillRecoveryStartedCount =
|
||||
QueueExecutionSummary.StartedMethodDrillQueuedHandoffEventCount
|
||||
+ QueueExecutionSummary.StartedMethodDrillFollowUpHandoffEventCount
|
||||
+ QueueExecutionSummary.StartedMethodDrillRecommendedHandoffEventCount;
|
||||
const int32 MethodDrillRecoveryCompletedCount =
|
||||
QueueExecutionSummary.CompletedMethodDrillQueuedHandoffEventCount
|
||||
+ QueueExecutionSummary.CompletedMethodDrillFollowUpHandoffEventCount
|
||||
+ QueueExecutionSummary.CompletedMethodDrillRecommendedHandoffEventCount;
|
||||
const int32 MethodDrillRecoveryOutstandingCount = FMath::Max(
|
||||
0,
|
||||
MethodDrillRecoveryStartedCount - MethodDrillRecoveryCompletedCount
|
||||
);
|
||||
if (MethodDrillRecoveryStartedCount > 0)
|
||||
{
|
||||
Snapshot.MethodDrillRecoveryHistoryCount += MethodDrillRecoveryStartedCount;
|
||||
Snapshot.StrongMethodDrillRecoveryHistoryCount += MethodDrillRecoveryCompletedCount;
|
||||
Snapshot.WeakMethodDrillRecoveryHistoryCount += MethodDrillRecoveryOutstandingCount;
|
||||
Snapshot.MethodDrillRecoveryAverageOutcomeScore =
|
||||
(static_cast<float>(MethodDrillRecoveryCompletedCount) * 100.0f)
|
||||
/ static_cast<float>(MethodDrillRecoveryStartedCount);
|
||||
}
|
||||
const bool bStrongMethodDrillRecoveryHistory =
|
||||
MethodDrillRecoveryStartedCount >= 2
|
||||
&& MethodDrillRecoveryCompletedCount >= MethodDrillRecoveryOutstandingCount
|
||||
&& Snapshot.MethodDrillRecoveryAverageOutcomeScore >= 55.0f;
|
||||
const bool bWeakMethodDrillRecoveryHistory =
|
||||
MethodDrillRecoveryStartedCount >= 2
|
||||
&& MethodDrillRecoveryOutstandingCount > MethodDrillRecoveryCompletedCount
|
||||
&& Snapshot.MethodDrillRecoveryAverageOutcomeScore <= 45.0f;
|
||||
const int32 MethodDrillRecoveryLaunchBias = bStrongMethodDrillRecoveryHistory
|
||||
? FMath::Clamp(
|
||||
MethodDrillRecoveryCompletedCount
|
||||
- MethodDrillRecoveryOutstandingCount
|
||||
+ (Snapshot.MethodDrillRecoveryAverageOutcomeScore >= 75.0f ? 1 : 0),
|
||||
1,
|
||||
3)
|
||||
: 0;
|
||||
const int32 MethodDrillRecoveryPromoteBias = bWeakMethodDrillRecoveryHistory
|
||||
? FMath::Clamp(
|
||||
MethodDrillRecoveryOutstandingCount
|
||||
- MethodDrillRecoveryCompletedCount
|
||||
+ (QueueExecutionSummary.bHasCompletionGap ? 1 : 0),
|
||||
1,
|
||||
3)
|
||||
: 0;
|
||||
if (ExplicitQueuedHandoffSignal > 0
|
||||
|| ExplicitFollowUpHandoffSignal > 0
|
||||
|| ExplicitRecommendedHandoffSignal > 0)
|
||||
|
|
@ -6507,13 +6638,15 @@ FHyperTwistTrainingCoachMemorySnapshot UHyperTwistTrainingRepositoryLibrary::Der
|
|||
+ ExplicitDeferredFirstQueuedHandoffSignal
|
||||
+ ExplicitDeferredFirstFollowUpHandoffSignal
|
||||
+ ExplicitMethodDrillQueuedHandoffSignal
|
||||
+ ExplicitMethodDrillFollowUpHandoffSignal;
|
||||
+ ExplicitMethodDrillFollowUpHandoffSignal
|
||||
+ MethodDrillRecoveryLaunchBias;
|
||||
const int32 WeightedRecommendedRecoverySignal =
|
||||
ExplicitRecommendedRecoverySignal
|
||||
+ ExplicitRecommendedHandoffSignal
|
||||
+ ExplicitDeferredOverflowRecommendedHandoffSignal
|
||||
+ ExplicitDeferredFirstRecommendedHandoffSignal
|
||||
+ ExplicitMethodDrillRecommendedHandoffSignal;
|
||||
+ ExplicitMethodDrillRecommendedHandoffSignal
|
||||
+ MethodDrillRecoveryPromoteBias;
|
||||
const bool bQueueHistoryPrefersFollowUp =
|
||||
DominantDeferredLane == EHyperTwistTrainingCoachGuidanceLane::FollowUp
|
||||
|| (DominantCompletedLane == EHyperTwistTrainingCoachGuidanceLane::FollowUp
|
||||
|
|
@ -6529,7 +6662,8 @@ FHyperTwistTrainingCoachMemorySnapshot UHyperTwistTrainingRepositoryLibrary::Der
|
|||
+ FMath::Min(static_cast<float>(QueueExecutionSummary.DeferredEventCount) * 0.75f, 3.0f)
|
||||
+ FMath::Min(static_cast<float>(QueueExecutionSummary.PromotedEventCount), 3.0f)
|
||||
+ (DominantDeferredLane != EHyperTwistTrainingCoachGuidanceLane::None ? 1.5f : 0.0f)
|
||||
- (QueueExecutionSummary.bHasCompletionGap ? 1.0f : 0.0f);
|
||||
- (QueueExecutionSummary.bHasCompletionGap ? 1.0f : 0.0f)
|
||||
+ (static_cast<float>(MethodDrillRecoveryPromoteBias) * 1.5f);
|
||||
const float LaunchRecoveryActionPressure =
|
||||
(QueueExecutionSummary.bHasCompletionGap ? 4.0f : 0.0f)
|
||||
+ (QueueExecutionSummary.bHasBlockedFollowUpFriction ? 2.5f : 0.0f)
|
||||
|
|
@ -6543,7 +6677,8 @@ FHyperTwistTrainingCoachMemorySnapshot UHyperTwistTrainingRepositoryLibrary::Der
|
|||
+ static_cast<float>(ExplicitDeferredFirstFollowUpHandoffSignal) * 0.5f
|
||||
+ static_cast<float>(ExplicitMethodDrillQueuedHandoffSignal)
|
||||
+ static_cast<float>(ExplicitMethodDrillFollowUpHandoffSignal)
|
||||
+ static_cast<float>(ExplicitMethodDrillRecommendedHandoffSignal) * 0.5f;
|
||||
+ static_cast<float>(ExplicitMethodDrillRecommendedHandoffSignal) * 0.5f
|
||||
+ (static_cast<float>(MethodDrillRecoveryLaunchBias) * 1.75f);
|
||||
if (PromoteRecoveryActionPressure > 0.0f || LaunchRecoveryActionPressure > 0.0f)
|
||||
{
|
||||
if (PromoteRecoveryActionPressure > LaunchRecoveryActionPressure)
|
||||
|
|
@ -6571,6 +6706,29 @@ FHyperTwistTrainingCoachMemorySnapshot UHyperTwistTrainingRepositoryLibrary::Der
|
|||
Snapshot.PreferredQueueRecoveryActionSourceLabel = TEXT("queue-history-balanced-pressure");
|
||||
}
|
||||
}
|
||||
if (Snapshot.PreferredQueueRecoveryAction == EHyperTwistTrainingQueueRecoveryAction::LaunchRecovery
|
||||
&& bStrongMethodDrillRecoveryHistory
|
||||
&& (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-strong");
|
||||
}
|
||||
else if (Snapshot.PreferredQueueRecoveryAction
|
||||
== EHyperTwistTrainingQueueRecoveryAction::PromoteDeferred
|
||||
&& bWeakMethodDrillRecoveryHistory
|
||||
&& (Snapshot.PreferredQueueRecoveryActionSourceLabel.IsEmpty()
|
||||
|| Snapshot.PreferredQueueRecoveryActionSourceLabel.StartsWith(TEXT("queue-history"))
|
||||
|| HyperTwistTrainingRepositoryLibraryInternal::IsMethodDrillRecoveryCoachMemorySource(
|
||||
Snapshot.PreferredQueueRecoveryActionSourceLabel)))
|
||||
{
|
||||
Snapshot.PreferredQueueRecoveryActionSourceLabel =
|
||||
TEXT("coach-memory-method-drill-recovery-weak");
|
||||
}
|
||||
|
||||
if (bQueueHistoryPrefersFollowUp)
|
||||
{
|
||||
|
|
@ -6587,6 +6745,14 @@ FHyperTwistTrainingCoachMemorySnapshot UHyperTwistTrainingRepositoryLibrary::Der
|
|||
- (QueueExecutionSummary.bHasBlockedFollowUpFriction ? 1 : 0)
|
||||
);
|
||||
}
|
||||
if (MethodDrillRecoveryLaunchBias > 0)
|
||||
{
|
||||
Snapshot.FollowUpGuidanceContinueBias += MethodDrillRecoveryLaunchBias;
|
||||
}
|
||||
if (MethodDrillRecoveryPromoteBias > 0)
|
||||
{
|
||||
Snapshot.RecommendedGuidanceContinueBias += MethodDrillRecoveryPromoteBias;
|
||||
}
|
||||
if (bQueueHistoryPrefersFollowUp
|
||||
&& Snapshot.PreferredQueueRecoveryAction == EHyperTwistTrainingQueueRecoveryAction::PromoteDeferred)
|
||||
{
|
||||
|
|
@ -8470,6 +8636,25 @@ FHyperTwistTrainingCoachSessionQueueExecutionSummary UHyperTwistTrainingReposito
|
|||
{
|
||||
Summary.CompletedRecommendedEventCount += 1;
|
||||
}
|
||||
if (HyperTwistTrainingRepositoryLibraryInternal::IsMethodDrillDashboardHandoffSource(
|
||||
HistoryEntry.StartActionSourceLabel))
|
||||
{
|
||||
const EHyperTwistTrainingCoachHandoffKind CompletedHandoffKind =
|
||||
HyperTwistTrainingRepositoryLibraryInternal::DashboardHandoffKindFromSourceLabel(
|
||||
HistoryEntry.StartActionSourceLabel);
|
||||
if (CompletedHandoffKind == EHyperTwistTrainingCoachHandoffKind::Queue)
|
||||
{
|
||||
Summary.CompletedMethodDrillQueuedHandoffEventCount += 1;
|
||||
}
|
||||
else if (CompletedHandoffKind == EHyperTwistTrainingCoachHandoffKind::FollowUp)
|
||||
{
|
||||
Summary.CompletedMethodDrillFollowUpHandoffEventCount += 1;
|
||||
}
|
||||
else if (CompletedHandoffKind == EHyperTwistTrainingCoachHandoffKind::Recommended)
|
||||
{
|
||||
Summary.CompletedMethodDrillRecommendedHandoffEventCount += 1;
|
||||
}
|
||||
}
|
||||
CompletedCountsByEntryId.FindOrAdd(HistoryEntry.EntryId) += 1;
|
||||
if (Summary.LastCompletedAtUtc.IsEmpty()
|
||||
|| HyperTwistTrainingRepositoryLibraryInternal::CompareUtcStrings(
|
||||
|
|
|
|||
|
|
@ -600,6 +600,14 @@ FHyperTwistTrainingCoachPanelState UHyperTwistTrainingSubsystem::GetActiveCoachP
|
|||
ActiveCoachMemorySnapshot.WeakMethodDrillFollowUpHistoryCount;
|
||||
PanelState.MethodDrillFollowUpAverageOutcomeScore =
|
||||
ActiveCoachMemorySnapshot.MethodDrillFollowUpAverageOutcomeScore;
|
||||
PanelState.MethodDrillRecoveryHistoryCount =
|
||||
ActiveCoachMemorySnapshot.MethodDrillRecoveryHistoryCount;
|
||||
PanelState.StrongMethodDrillRecoveryHistoryCount =
|
||||
ActiveCoachMemorySnapshot.StrongMethodDrillRecoveryHistoryCount;
|
||||
PanelState.WeakMethodDrillRecoveryHistoryCount =
|
||||
ActiveCoachMemorySnapshot.WeakMethodDrillRecoveryHistoryCount;
|
||||
PanelState.MethodDrillRecoveryAverageOutcomeScore =
|
||||
ActiveCoachMemorySnapshot.MethodDrillRecoveryAverageOutcomeScore;
|
||||
PanelState.bRepositoryVerificationPassed = ActiveRepositoryRoundTripVerification.bDidRoundTripPass;
|
||||
PanelState.bRepositoryVerificationNeedsAttention = ActiveRepositoryRoundTripVerification.ResolvedPath.IsEmpty()
|
||||
|| !ActiveRepositoryRoundTripVerification.bDidRoundTripPass;
|
||||
|
|
|
|||
|
|
@ -1935,6 +1935,18 @@ struct FHyperTwistTrainingCoachMemorySnapshot
|
|||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
float MethodDrillFollowUpAverageOutcomeScore = 0.0f;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
int32 MethodDrillRecoveryHistoryCount = 0;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
int32 StrongMethodDrillRecoveryHistoryCount = 0;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
int32 WeakMethodDrillRecoveryHistoryCount = 0;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
float MethodDrillRecoveryAverageOutcomeScore = 0.0f;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
bool bNeedsCoachIntervention = false;
|
||||
|
||||
|
|
@ -3657,6 +3669,15 @@ struct FHyperTwistTrainingCoachSessionQueueExecutionSummary
|
|||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
int32 StartedMethodDrillRecommendedHandoffEventCount = 0;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
int32 CompletedMethodDrillQueuedHandoffEventCount = 0;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
int32 CompletedMethodDrillFollowUpHandoffEventCount = 0;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
int32 CompletedMethodDrillRecommendedHandoffEventCount = 0;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
int32 PromotedFollowUpEventCount = 0;
|
||||
|
||||
|
|
@ -4831,6 +4852,18 @@ struct FHyperTwistTrainingCoachPanelState
|
|||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
float MethodDrillFollowUpAverageOutcomeScore = 0.0f;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
int32 MethodDrillRecoveryHistoryCount = 0;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
int32 StrongMethodDrillRecoveryHistoryCount = 0;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
int32 WeakMethodDrillRecoveryHistoryCount = 0;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
float MethodDrillRecoveryAverageOutcomeScore = 0.0f;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
int32 SignalCount = 0;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue