diff --git a/UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistTraining/HyperTwistTrainingRepositoryLibrary.cpp b/UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistTraining/HyperTwistTrainingRepositoryLibrary.cpp index 2377571..6604676 100644 --- a/UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistTraining/HyperTwistTrainingRepositoryLibrary.cpp +++ b/UnrealHyperTwist/Source/UnrealHyperTwist/Private/HyperTwistTraining/HyperTwistTrainingRepositoryLibrary.cpp @@ -2228,14 +2228,46 @@ namespace HyperTwistTrainingRepositoryLibraryInternal TEXT("coach-memory-dashboard-method-drill-recovery-weak-")) || CoachMemorySnapshot.PreferredQueueRecoveryActionSourceLabel == TEXT("coach-memory-method-drill-recovery-memory-weak"); + const bool bAlignedTightFollowUpGuidanceOutcomeSource = + CoachMemorySnapshot.PreferredGuidanceSourceLabel + == TEXT("recommendation-history-aligned-tight-follow-up-outcome") + || CoachMemorySnapshot.PreferredCoachHandoffSourceLabel + == TEXT("recommendation-history-aligned-tight-follow-up-outcome") + || (CoachMemorySnapshot.PreferredGuidanceLane + == EHyperTwistTrainingCoachGuidanceLane::FollowUp + && CoachMemorySnapshot.ReliableAlignedTrustedTightFollowUpGuidanceOutcomeHistoryCount >= 2 + && CoachMemorySnapshot.ReliableAlignedTrustedTightFollowUpGuidanceOutcomeAverageScore >= 60.0f + && (CoachMemorySnapshot.ReliableAlignedTrustedBroadRecommendedGuidanceOutcomeHistoryCount <= 0 + || CoachMemorySnapshot.ReliableAlignedTrustedTightFollowUpGuidanceOutcomeAverageScore + >= CoachMemorySnapshot + .ReliableAlignedTrustedBroadRecommendedGuidanceOutcomeAverageScore + - 2.0f)); + const bool bAlignedBroadRecommendedGuidanceOutcomeSource = + CoachMemorySnapshot.PreferredGuidanceSourceLabel + == TEXT("recommendation-history-aligned-broad-recommended-outcome") + || CoachMemorySnapshot.PreferredCoachHandoffSourceLabel + == TEXT("recommendation-history-aligned-broad-recommended-outcome") + || (CoachMemorySnapshot.PreferredGuidanceLane + == EHyperTwistTrainingCoachGuidanceLane::Recommended + && CoachMemorySnapshot.ReliableAlignedTrustedBroadRecommendedGuidanceOutcomeHistoryCount >= 2 + && CoachMemorySnapshot.ReliableAlignedTrustedBroadRecommendedGuidanceOutcomeAverageScore + >= 58.0f + && (CoachMemorySnapshot.ReliableAlignedTrustedTightFollowUpGuidanceOutcomeHistoryCount <= 0 + || CoachMemorySnapshot + .ReliableAlignedTrustedBroadRecommendedGuidanceOutcomeAverageScore + >= CoachMemorySnapshot + .ReliableAlignedTrustedTightFollowUpGuidanceOutcomeAverageScore + - 2.0f)); const bool bTightMethodDrillRecoveryPlanSource = bStrongMethodDrillRecoveryMemoryHandoffSource || bTightMethodDrillRecoveryStructurePlanHandoffSource - || bNarrowMethodDrillRecoveryStructureHandoffSource; + || bNarrowMethodDrillRecoveryStructureHandoffSource + || bAlignedTightFollowUpGuidanceOutcomeSource; const bool bBroadMethodDrillRecoveryPlanSource = bWeakMethodDrillRecoveryMemoryHandoffSource || bBroadMethodDrillRecoveryStructurePlanHandoffSource - || bBroadMethodDrillRecoveryStructureHandoffSource; + || bBroadMethodDrillRecoveryStructureHandoffSource + || bAlignedBroadRecommendedGuidanceOutcomeSource; if (CoachMemorySnapshot.PreferredCoachHandoffKind == EHyperTwistTrainingCoachHandoffKind::Queue && !CoachBrief.bNeedsCoachReview && CoachBrief.FollowUpDepth <= 0) @@ -2264,6 +2296,10 @@ namespace HyperTwistTrainingRepositoryLibraryInternal { InOutSelectionPolicy = EHyperTwistTrainingSelectionPolicy::Scripted; } + else if (bAlignedTightFollowUpGuidanceOutcomeSource) + { + InOutSelectionPolicy = EHyperTwistTrainingSelectionPolicy::Scripted; + } else if (bReliableTrustedTightMethodDrillRecoveryStructurePlanHandoffSource) { InOutSelectionPolicy = EHyperTwistTrainingSelectionPolicy::Scripted; @@ -2308,7 +2344,8 @@ namespace HyperTwistTrainingRepositoryLibraryInternal || CoachBrief.bNeedsCoachReview || CoachMemorySnapshot.FollowUpReadyCoachSequenceCount > 0 || CoachMemorySnapshot.ScheduleBlockedFollowUpEventCount > 0 - || bTightMethodDrillRecoveryPlanSource; + || bTightMethodDrillRecoveryPlanSource + || bAlignedTightFollowUpGuidanceOutcomeSource; if (bShouldBiasFollowUpHandoff) { if (CoachBrief.bPreferRecognitionReplayReview @@ -2332,6 +2369,10 @@ namespace HyperTwistTrainingRepositoryLibraryInternal { InOutSelectionPolicy = EHyperTwistTrainingSelectionPolicy::Scripted; } + else if (bAlignedTightFollowUpGuidanceOutcomeSource) + { + InOutSelectionPolicy = EHyperTwistTrainingSelectionPolicy::Scripted; + } else if (bReliableTrustedTightMethodDrillRecoveryStructurePlanHandoffSource) { InOutSelectionPolicy = EHyperTwistTrainingSelectionPolicy::Scripted; @@ -2373,7 +2414,7 @@ namespace HyperTwistTrainingRepositoryLibraryInternal } return; } - if (bBroadMethodDrillRecoveryPlanSource) + if (bBroadMethodDrillRecoveryPlanSource || bAlignedBroadRecommendedGuidanceOutcomeSource) { if (CoachBrief.bPreferRecognitionReplayReview && CoachMemorySnapshot.DominantCoachSuggestedMode @@ -2399,6 +2440,14 @@ namespace HyperTwistTrainingRepositoryLibraryInternal : EHyperTwistTrainingSelectionPolicy::Weighted; } } + else if (bAlignedBroadRecommendedGuidanceOutcomeSource) + { + InOutSelectionPolicy = + CoachMemorySnapshot.DominantCoachSelectionPolicy + != EHyperTwistTrainingSelectionPolicy::Scripted + ? CoachMemorySnapshot.DominantCoachSelectionPolicy + : EHyperTwistTrainingSelectionPolicy::Weighted; + } else if (InOutSelectionPolicy == EHyperTwistTrainingSelectionPolicy::Scripted) { InOutSelectionPolicy = @@ -2436,7 +2485,8 @@ namespace HyperTwistTrainingRepositoryLibraryInternal || CoachBrief.bNeedsCoachReview || CoachMemorySnapshot.FollowUpReadyCoachSequenceCount > 0 || CoachMemorySnapshot.ScheduleBlockedFollowUpEventCount > 0 - || bReliableTrustedTightMethodDrillRecoveryStructurePlanHandoffSource; + || bReliableTrustedTightMethodDrillRecoveryStructurePlanHandoffSource + || bAlignedTightFollowUpGuidanceOutcomeSource; if (!bShouldBiasFollowUpDefaults) { return; @@ -2459,7 +2509,11 @@ namespace HyperTwistTrainingRepositoryLibraryInternal InOutMode = EHyperTwistTrainingDeliveryMode::CoachReviewed; } - if (bReliableTrustedTightMethodDrillRecoveryStructurePlanHandoffSource) + if (bAlignedTightFollowUpGuidanceOutcomeSource) + { + InOutSelectionPolicy = EHyperTwistTrainingSelectionPolicy::Scripted; + } + else if (bReliableTrustedTightMethodDrillRecoveryStructurePlanHandoffSource) { InOutSelectionPolicy = EHyperTwistTrainingSelectionPolicy::Scripted; } @@ -2494,7 +2548,14 @@ namespace HyperTwistTrainingRepositoryLibraryInternal InOutMode = CoachMemorySnapshot.DominantCoachSuggestedMode; } - if (bReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanHandoffSource) + if (bAlignedBroadRecommendedGuidanceOutcomeSource) + { + InOutSelectionPolicy = + CoachMemorySnapshot.DominantCoachSelectionPolicy != EHyperTwistTrainingSelectionPolicy::Scripted + ? CoachMemorySnapshot.DominantCoachSelectionPolicy + : EHyperTwistTrainingSelectionPolicy::Weighted; + } + else if (bReliableAlignedTrustedBroadMethodDrillRecoveryStructurePlanHandoffSource) { InOutSelectionPolicy = CoachMemorySnapshot.DominantCoachSelectionPolicy != EHyperTwistTrainingSelectionPolicy::Scripted