Refine coach archive retention and horizon logic
This commit is contained in:
parent
840a8e5d0b
commit
8d740cb997
11 changed files with 2545 additions and 1 deletions
|
|
@ -1113,6 +1113,176 @@ FHyperTwistTrainingCoachActionPlanOutcomeSummary UHyperTwistContractLibrary::Mak
|
|||
);
|
||||
}
|
||||
|
||||
FHyperTwistTrainingCoachActionSequenceSummary UHyperTwistContractLibrary::MakeSampleTrainingCoachActionSequenceSummary()
|
||||
{
|
||||
FHyperTwistTrainingRepositoryState RepositoryState = MakeSampleTrainingRepositoryState();
|
||||
const FHyperTwistTrainingCoachActionPlan RootPlan = MakeSampleTrainingCoachActionPlan();
|
||||
const FHyperTwistCoachBrief FollowUpBrief = MakeSampleTrainingCoachFollowUpBrief();
|
||||
const FHyperTwistTrainingCoachActionPlan FollowUpPlan =
|
||||
UHyperTwistTrainingRepositoryLibrary::BuildCoachActionPlan(
|
||||
FollowUpBrief,
|
||||
TEXT("coach_follow_up_training_session_02"),
|
||||
TEXT("2026-04-28T12:20:00Z")
|
||||
);
|
||||
if (FollowUpPlan.IsStructurallyValid())
|
||||
{
|
||||
RepositoryState = UHyperTwistTrainingRepositoryLibrary::UpsertCoachActionPlan(
|
||||
RepositoryState,
|
||||
FollowUpPlan
|
||||
);
|
||||
return UHyperTwistTrainingRepositoryLibrary::DeriveCoachActionSequenceSummary(
|
||||
RepositoryState,
|
||||
FollowUpPlan,
|
||||
TEXT("2026-04-28T12:20:00Z")
|
||||
);
|
||||
}
|
||||
|
||||
return UHyperTwistTrainingRepositoryLibrary::DeriveCoachActionSequenceSummary(
|
||||
RepositoryState,
|
||||
RootPlan,
|
||||
TEXT("2026-04-28T12:20:00Z")
|
||||
);
|
||||
}
|
||||
|
||||
FHyperTwistTrainingCoachActionClosureSummary UHyperTwistContractLibrary::MakeSampleTrainingCoachActionClosureSummary()
|
||||
{
|
||||
FHyperTwistTrainingRepositoryState RepositoryState = MakeSampleTrainingRepositoryState();
|
||||
const FHyperTwistTrainingCoachActionPlan RootPlan = MakeSampleTrainingCoachActionPlan();
|
||||
const FHyperTwistCoachBrief FollowUpBrief = MakeSampleTrainingCoachFollowUpBrief();
|
||||
const FHyperTwistTrainingCoachActionPlan FollowUpPlan =
|
||||
UHyperTwistTrainingRepositoryLibrary::BuildCoachActionPlan(
|
||||
FollowUpBrief,
|
||||
TEXT("coach_follow_up_training_session_02"),
|
||||
TEXT("2026-04-28T12:20:00Z")
|
||||
);
|
||||
if (FollowUpPlan.IsStructurallyValid())
|
||||
{
|
||||
RepositoryState = UHyperTwistTrainingRepositoryLibrary::UpsertCoachActionPlan(
|
||||
RepositoryState,
|
||||
FollowUpPlan
|
||||
);
|
||||
return UHyperTwistTrainingRepositoryLibrary::DeriveCoachActionClosureSummary(
|
||||
RepositoryState,
|
||||
FollowUpPlan,
|
||||
TEXT("2026-04-28T12:20:00Z")
|
||||
);
|
||||
}
|
||||
|
||||
return UHyperTwistTrainingRepositoryLibrary::DeriveCoachActionClosureSummary(
|
||||
RepositoryState,
|
||||
RootPlan,
|
||||
TEXT("2026-04-28T12:20:00Z")
|
||||
);
|
||||
}
|
||||
|
||||
FHyperTwistTrainingCoachClosureMemorySummary UHyperTwistContractLibrary::MakeSampleTrainingCoachClosureMemorySummary()
|
||||
{
|
||||
const FHyperTwistTrainingRunStepResult StepResult = MakeSampleTrainingRunStepResult();
|
||||
if (!StepResult.IsStructurallyValid())
|
||||
{
|
||||
return FHyperTwistTrainingCoachClosureMemorySummary();
|
||||
}
|
||||
|
||||
return UHyperTwistTrainingRepositoryLibrary::DeriveCoachClosureMemorySummary(
|
||||
MakeSampleTrainingRepositoryState(),
|
||||
StepResult.UpdatedRunState.Session.UserId,
|
||||
TEXT("2026-04-28T12:20:00Z")
|
||||
);
|
||||
}
|
||||
|
||||
FHyperTwistTrainingCoachRecommendationHistorySummary UHyperTwistContractLibrary::MakeSampleTrainingCoachRecommendationHistorySummary()
|
||||
{
|
||||
const FHyperTwistTrainingRunStepResult StepResult = MakeSampleTrainingRunStepResult();
|
||||
if (!StepResult.IsStructurallyValid())
|
||||
{
|
||||
return FHyperTwistTrainingCoachRecommendationHistorySummary();
|
||||
}
|
||||
|
||||
FHyperTwistTrainingRepositoryState RepositoryState = MakeSampleTrainingRepositoryState();
|
||||
const FHyperTwistCoachBrief FollowUpBrief = MakeSampleTrainingCoachFollowUpBrief();
|
||||
const FHyperTwistTrainingCoachActionPlan FollowUpPlan =
|
||||
UHyperTwistTrainingRepositoryLibrary::BuildCoachActionPlan(
|
||||
FollowUpBrief,
|
||||
TEXT("coach_follow_up_training_session_02"),
|
||||
TEXT("2026-04-28T12:20:00Z")
|
||||
);
|
||||
if (FollowUpPlan.IsStructurallyValid())
|
||||
{
|
||||
RepositoryState = UHyperTwistTrainingRepositoryLibrary::UpsertCoachActionPlan(
|
||||
RepositoryState,
|
||||
FollowUpPlan
|
||||
);
|
||||
}
|
||||
|
||||
return UHyperTwistTrainingRepositoryLibrary::DeriveCoachRecommendationHistorySummary(
|
||||
RepositoryState,
|
||||
StepResult.UpdatedRunState.Session.UserId,
|
||||
TEXT("2026-04-28T12:20:00Z")
|
||||
);
|
||||
}
|
||||
|
||||
FHyperTwistTrainingCoachCarryForwardPolicySummary UHyperTwistContractLibrary::MakeSampleTrainingCoachCarryForwardPolicySummary()
|
||||
{
|
||||
const FHyperTwistTrainingRunStepResult StepResult = MakeSampleTrainingRunStepResult();
|
||||
if (!StepResult.IsStructurallyValid())
|
||||
{
|
||||
return FHyperTwistTrainingCoachCarryForwardPolicySummary();
|
||||
}
|
||||
|
||||
FHyperTwistTrainingRepositoryState RepositoryState = MakeSampleTrainingRepositoryState();
|
||||
const FHyperTwistCoachBrief FollowUpBrief = MakeSampleTrainingCoachFollowUpBrief();
|
||||
const FHyperTwistTrainingCoachActionPlan FollowUpPlan =
|
||||
UHyperTwistTrainingRepositoryLibrary::BuildCoachActionPlan(
|
||||
FollowUpBrief,
|
||||
TEXT("coach_follow_up_training_session_02"),
|
||||
TEXT("2026-04-28T12:20:00Z")
|
||||
);
|
||||
if (FollowUpPlan.IsStructurallyValid())
|
||||
{
|
||||
RepositoryState = UHyperTwistTrainingRepositoryLibrary::UpsertCoachActionPlan(
|
||||
RepositoryState,
|
||||
FollowUpPlan
|
||||
);
|
||||
}
|
||||
|
||||
return UHyperTwistTrainingRepositoryLibrary::DeriveCoachCarryForwardPolicySummary(
|
||||
RepositoryState,
|
||||
StepResult.UpdatedRunState.Session.UserId,
|
||||
TEXT("2026-04-28T12:20:00Z")
|
||||
);
|
||||
}
|
||||
|
||||
FHyperTwistTrainingCoachArchivePolicySummary UHyperTwistContractLibrary::MakeSampleTrainingCoachArchivePolicySummary()
|
||||
{
|
||||
const FHyperTwistTrainingRunStepResult StepResult = MakeSampleTrainingRunStepResult();
|
||||
if (!StepResult.IsStructurallyValid())
|
||||
{
|
||||
return FHyperTwistTrainingCoachArchivePolicySummary();
|
||||
}
|
||||
|
||||
FHyperTwistTrainingRepositoryState RepositoryState = MakeSampleTrainingRepositoryState();
|
||||
const FHyperTwistCoachBrief FollowUpBrief = MakeSampleTrainingCoachFollowUpBrief();
|
||||
const FHyperTwistTrainingCoachActionPlan FollowUpPlan =
|
||||
UHyperTwistTrainingRepositoryLibrary::BuildCoachActionPlan(
|
||||
FollowUpBrief,
|
||||
TEXT("coach_follow_up_training_session_02"),
|
||||
TEXT("2026-04-28T12:20:00Z")
|
||||
);
|
||||
if (FollowUpPlan.IsStructurallyValid())
|
||||
{
|
||||
RepositoryState = UHyperTwistTrainingRepositoryLibrary::UpsertCoachActionPlan(
|
||||
RepositoryState,
|
||||
FollowUpPlan
|
||||
);
|
||||
}
|
||||
|
||||
return UHyperTwistTrainingRepositoryLibrary::DeriveCoachArchivePolicySummary(
|
||||
RepositoryState,
|
||||
StepResult.UpdatedRunState.Session.UserId,
|
||||
TEXT("2026-04-28T12:20:00Z")
|
||||
);
|
||||
}
|
||||
|
||||
FHyperTwistCoachBrief UHyperTwistContractLibrary::MakeSampleTrainingCoachFollowUpBrief()
|
||||
{
|
||||
return UHyperTwistTrainingCoachLibrary::DeriveCoachFollowUpBrief(
|
||||
|
|
|
|||
|
|
@ -60,6 +60,84 @@ TArray<FHyperTwistCoachSignal> UHyperTwistTrainingCoachLibrary::DeriveCoachSigna
|
|||
{
|
||||
TArray<FHyperTwistCoachSignal> Signals;
|
||||
|
||||
if (CoachMemorySnapshot.EscalatedCoachSequenceCount > 0
|
||||
|| CoachMemorySnapshot.EscalationCaseIds.Num() > 0)
|
||||
{
|
||||
const float Score = 96.0f
|
||||
+ FMath::Min(static_cast<float>(CoachMemorySnapshot.EscalatedCoachSequenceCount) * 4.0f, 8.0f)
|
||||
+ FMath::Min(static_cast<float>(CoachMemorySnapshot.EscalationCaseIds.Num()), 6.0f);
|
||||
FHyperTwistCoachSignal Signal = HyperTwistTrainingCoachLibraryInternal::MakeSignal(
|
||||
TEXT("coach_escalation"),
|
||||
EHyperTwistCoachFocusLane::Accuracy,
|
||||
Score,
|
||||
TEXT("Escalation is needed for unresolved coaching cases"),
|
||||
FString::Printf(
|
||||
TEXT("escalatedSequences=%d, escalationCases=%d, followUpReady=%d"),
|
||||
CoachMemorySnapshot.EscalatedCoachSequenceCount,
|
||||
CoachMemorySnapshot.EscalationCaseIds.Num(),
|
||||
CoachMemorySnapshot.FollowUpReadyCoachSequenceCount),
|
||||
EHyperTwistTrainingDeliveryMode::CoachReviewed,
|
||||
EHyperTwistTrainingSelectionPolicy::Scripted);
|
||||
Signal.SuggestedDeckId = CoachMemorySnapshot.FocusDeckId;
|
||||
Signal.SuggestedMethodSegmentId = CoachMemorySnapshot.FocusMethodSegmentId;
|
||||
Signal.SuggestedCaseIds = CoachMemorySnapshot.EscalationCaseIds.Num() > 0
|
||||
? CoachMemorySnapshot.EscalationCaseIds
|
||||
: CoachMemorySnapshot.PersistentCoachWeakCaseIds;
|
||||
Signals.Add(Signal);
|
||||
}
|
||||
|
||||
if (CoachMemorySnapshot.bHasRepeatRecommendationPressure
|
||||
&& CoachMemorySnapshot.RecurringCoachCaseIds.Num() > 0)
|
||||
{
|
||||
const float Score = 78.0f
|
||||
+ FMath::Min(static_cast<float>(CoachMemorySnapshot.RepeatRecommendationSequenceCount) * 3.0f, 9.0f)
|
||||
+ FMath::Min(static_cast<float>(CoachMemorySnapshot.RecurringCoachCaseIds.Num()), 6.0f);
|
||||
FHyperTwistCoachSignal Signal = HyperTwistTrainingCoachLibraryInternal::MakeSignal(
|
||||
TEXT("repeat_recommendation"),
|
||||
EHyperTwistCoachFocusLane::Stability,
|
||||
Score,
|
||||
TEXT("Recurring coach cases need consolidation"),
|
||||
FString::Printf(
|
||||
TEXT("repeatSequences=%d, recurringCases=%d, dominantMode=%d"),
|
||||
CoachMemorySnapshot.RepeatRecommendationSequenceCount,
|
||||
CoachMemorySnapshot.RecurringCoachCaseIds.Num(),
|
||||
static_cast<int32>(CoachMemorySnapshot.DominantCoachSuggestedMode)),
|
||||
CoachMemorySnapshot.DominantCoachSuggestedMode,
|
||||
CoachMemorySnapshot.DominantCoachSelectionPolicy);
|
||||
Signal.SuggestedDeckId = CoachMemorySnapshot.FocusDeckId;
|
||||
Signal.SuggestedMethodSegmentId = CoachMemorySnapshot.FocusMethodSegmentId;
|
||||
Signal.SuggestedCaseIds = CoachMemorySnapshot.PinnedCarryForwardCaseIds.Num() > 0
|
||||
? CoachMemorySnapshot.PinnedCarryForwardCaseIds
|
||||
: CoachMemorySnapshot.RecurringCoachCaseIds;
|
||||
Signals.Add(Signal);
|
||||
}
|
||||
|
||||
if (CoachMemorySnapshot.bNeedsArchiveRetentionTuning
|
||||
|| CoachMemorySnapshot.ArchiveReopenRiskCaseIds.Num() > 0)
|
||||
{
|
||||
const float Score = 58.0f
|
||||
+ FMath::Min(CoachMemorySnapshot.ArchiveRetentionTuningScore * 0.35f, 22.0f)
|
||||
+ FMath::Min(static_cast<float>(CoachMemorySnapshot.ArchiveReopenRiskCaseIds.Num()) * 5.0f, 15.0f);
|
||||
FHyperTwistCoachSignal Signal = HyperTwistTrainingCoachLibraryInternal::MakeSignal(
|
||||
TEXT("archive_retention"),
|
||||
EHyperTwistCoachFocusLane::Stability,
|
||||
Score,
|
||||
TEXT("Archive retention needs tuning"),
|
||||
FString::Printf(
|
||||
TEXT("reopenRisk=%d, provisionalArchive=%d, stableArchive=%d"),
|
||||
CoachMemorySnapshot.ArchiveReopenRiskCaseIds.Num(),
|
||||
CoachMemorySnapshot.ProvisionalArchivedCoachCaseIds.Num(),
|
||||
CoachMemorySnapshot.StableArchivedCoachCaseIds.Num()),
|
||||
CoachMemorySnapshot.DominantCoachSuggestedMode,
|
||||
CoachMemorySnapshot.DominantCoachSelectionPolicy);
|
||||
Signal.SuggestedDeckId = CoachMemorySnapshot.FocusDeckId;
|
||||
Signal.SuggestedMethodSegmentId = CoachMemorySnapshot.FocusMethodSegmentId;
|
||||
Signal.SuggestedCaseIds = CoachMemorySnapshot.ArchiveReopenRiskCaseIds.Num() > 0
|
||||
? CoachMemorySnapshot.ArchiveReopenRiskCaseIds
|
||||
: CoachMemorySnapshot.ProvisionalArchivedCoachCaseIds;
|
||||
Signals.Add(Signal);
|
||||
}
|
||||
|
||||
if (CoachMemorySnapshot.bNeedsCoachIntervention
|
||||
|| ReviewProgramSummary.bNeedsCoachIntervention
|
||||
|| LearnerDeckStateSummary.OverdueCaseCount >= 3)
|
||||
|
|
@ -330,7 +408,26 @@ FHyperTwistCoachBrief UHyperTwistTrainingCoachLibrary::DeriveCoachBrief(
|
|||
|
||||
if (Brief.FocusCaseIds.Num() == 0)
|
||||
{
|
||||
if (Brief.bNeedsCoachReview && CoachMemorySnapshot.OverdueCaseIds.Num() > 0)
|
||||
if (CoachMemorySnapshot.EscalationCaseIds.Num() > 0)
|
||||
{
|
||||
Brief.FocusCaseIds = CoachMemorySnapshot.EscalationCaseIds;
|
||||
}
|
||||
else if (CoachMemorySnapshot.bHasPinnedCarryForwardPressure
|
||||
&& CoachMemorySnapshot.PinnedCarryForwardCaseIds.Num() > 0)
|
||||
{
|
||||
Brief.FocusCaseIds = CoachMemorySnapshot.PinnedCarryForwardCaseIds;
|
||||
}
|
||||
else if (CoachMemorySnapshot.bHasRepeatRecommendationPressure
|
||||
&& CoachMemorySnapshot.RecurringCoachCaseIds.Num() > 0)
|
||||
{
|
||||
Brief.FocusCaseIds = CoachMemorySnapshot.RecurringCoachCaseIds;
|
||||
}
|
||||
else if (CoachMemorySnapshot.bNeedsArchiveRetentionTuning
|
||||
&& CoachMemorySnapshot.ArchiveReopenRiskCaseIds.Num() > 0)
|
||||
{
|
||||
Brief.FocusCaseIds = CoachMemorySnapshot.ArchiveReopenRiskCaseIds;
|
||||
}
|
||||
else if (Brief.bNeedsCoachReview && CoachMemorySnapshot.OverdueCaseIds.Num() > 0)
|
||||
{
|
||||
Brief.FocusCaseIds = CoachMemorySnapshot.OverdueCaseIds;
|
||||
}
|
||||
|
|
@ -364,6 +461,9 @@ FHyperTwistCoachBrief UHyperTwistTrainingCoachLibrary::DeriveCoachFollowUpBrief(
|
|||
: ActionPlan.ReferenceUtc;
|
||||
Brief.TrainingSessionId = OutcomeSummary.SourceSessionId;
|
||||
Brief.SourceReviewPlanId = CurrentBrief.SourceReviewPlanId;
|
||||
Brief.CarryForwardPlanId = ActionPlan.PlanId;
|
||||
Brief.RootPlanId = !ActionPlan.RootPlanId.IsEmpty() ? ActionPlan.RootPlanId : ActionPlan.PlanId;
|
||||
Brief.FollowUpDepth = ActionPlan.FollowUpDepth + 1;
|
||||
Brief.FocusDeckId = !OutcomeSummary.FocusDeckId.IsEmpty()
|
||||
? OutcomeSummary.FocusDeckId
|
||||
: ActionPlan.FocusDeckId;
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -276,6 +276,78 @@ FHyperTwistTrainingCoachActionPlanOutcomeSummary UHyperTwistTrainingRuntimeLibra
|
|||
return FHyperTwistTrainingCoachActionPlanOutcomeSummary();
|
||||
}
|
||||
|
||||
FHyperTwistTrainingCoachActionSequenceSummary UHyperTwistTrainingRuntimeLibrary::GetActiveTrainingCoachActionSequenceSummary(
|
||||
UObject* WorldContextObject
|
||||
)
|
||||
{
|
||||
if (UHyperTwistTrainingSubsystem* TrainingSubsystem = GetTrainingSubsystem(WorldContextObject))
|
||||
{
|
||||
return TrainingSubsystem->GetActiveCoachActionSequenceSummary();
|
||||
}
|
||||
|
||||
return FHyperTwistTrainingCoachActionSequenceSummary();
|
||||
}
|
||||
|
||||
FHyperTwistTrainingCoachActionClosureSummary UHyperTwistTrainingRuntimeLibrary::GetActiveTrainingCoachActionClosureSummary(
|
||||
UObject* WorldContextObject
|
||||
)
|
||||
{
|
||||
if (UHyperTwistTrainingSubsystem* TrainingSubsystem = GetTrainingSubsystem(WorldContextObject))
|
||||
{
|
||||
return TrainingSubsystem->GetActiveCoachActionClosureSummary();
|
||||
}
|
||||
|
||||
return FHyperTwistTrainingCoachActionClosureSummary();
|
||||
}
|
||||
|
||||
FHyperTwistTrainingCoachClosureMemorySummary UHyperTwistTrainingRuntimeLibrary::GetActiveTrainingCoachClosureMemorySummary(
|
||||
UObject* WorldContextObject
|
||||
)
|
||||
{
|
||||
if (UHyperTwistTrainingSubsystem* TrainingSubsystem = GetTrainingSubsystem(WorldContextObject))
|
||||
{
|
||||
return TrainingSubsystem->GetActiveCoachClosureMemorySummary();
|
||||
}
|
||||
|
||||
return FHyperTwistTrainingCoachClosureMemorySummary();
|
||||
}
|
||||
|
||||
FHyperTwistTrainingCoachRecommendationHistorySummary UHyperTwistTrainingRuntimeLibrary::GetActiveTrainingCoachRecommendationHistorySummary(
|
||||
UObject* WorldContextObject
|
||||
)
|
||||
{
|
||||
if (UHyperTwistTrainingSubsystem* TrainingSubsystem = GetTrainingSubsystem(WorldContextObject))
|
||||
{
|
||||
return TrainingSubsystem->GetActiveCoachRecommendationHistorySummary();
|
||||
}
|
||||
|
||||
return FHyperTwistTrainingCoachRecommendationHistorySummary();
|
||||
}
|
||||
|
||||
FHyperTwistTrainingCoachCarryForwardPolicySummary UHyperTwistTrainingRuntimeLibrary::GetActiveTrainingCoachCarryForwardPolicySummary(
|
||||
UObject* WorldContextObject
|
||||
)
|
||||
{
|
||||
if (UHyperTwistTrainingSubsystem* TrainingSubsystem = GetTrainingSubsystem(WorldContextObject))
|
||||
{
|
||||
return TrainingSubsystem->GetActiveCoachCarryForwardPolicySummary();
|
||||
}
|
||||
|
||||
return FHyperTwistTrainingCoachCarryForwardPolicySummary();
|
||||
}
|
||||
|
||||
FHyperTwistTrainingCoachArchivePolicySummary UHyperTwistTrainingRuntimeLibrary::GetActiveTrainingCoachArchivePolicySummary(
|
||||
UObject* WorldContextObject
|
||||
)
|
||||
{
|
||||
if (UHyperTwistTrainingSubsystem* TrainingSubsystem = GetTrainingSubsystem(WorldContextObject))
|
||||
{
|
||||
return TrainingSubsystem->GetActiveCoachArchivePolicySummary();
|
||||
}
|
||||
|
||||
return FHyperTwistTrainingCoachArchivePolicySummary();
|
||||
}
|
||||
|
||||
FHyperTwistCoachBrief UHyperTwistTrainingRuntimeLibrary::GetActiveTrainingCoachFollowUpBrief(UObject* WorldContextObject)
|
||||
{
|
||||
if (UHyperTwistTrainingSubsystem* TrainingSubsystem = GetTrainingSubsystem(WorldContextObject))
|
||||
|
|
|
|||
|
|
@ -123,6 +123,36 @@ FHyperTwistTrainingCoachActionPlanOutcomeSummary UHyperTwistTrainingSubsystem::G
|
|||
return ActiveCoachActionPlanOutcomeSummary;
|
||||
}
|
||||
|
||||
FHyperTwistTrainingCoachActionSequenceSummary UHyperTwistTrainingSubsystem::GetActiveCoachActionSequenceSummary() const
|
||||
{
|
||||
return ActiveCoachActionSequenceSummary;
|
||||
}
|
||||
|
||||
FHyperTwistTrainingCoachActionClosureSummary UHyperTwistTrainingSubsystem::GetActiveCoachActionClosureSummary() const
|
||||
{
|
||||
return ActiveCoachActionClosureSummary;
|
||||
}
|
||||
|
||||
FHyperTwistTrainingCoachClosureMemorySummary UHyperTwistTrainingSubsystem::GetActiveCoachClosureMemorySummary() const
|
||||
{
|
||||
return ActiveCoachClosureMemorySummary;
|
||||
}
|
||||
|
||||
FHyperTwistTrainingCoachRecommendationHistorySummary UHyperTwistTrainingSubsystem::GetActiveCoachRecommendationHistorySummary() const
|
||||
{
|
||||
return ActiveCoachRecommendationHistorySummary;
|
||||
}
|
||||
|
||||
FHyperTwistTrainingCoachCarryForwardPolicySummary UHyperTwistTrainingSubsystem::GetActiveCoachCarryForwardPolicySummary() const
|
||||
{
|
||||
return ActiveCoachCarryForwardPolicySummary;
|
||||
}
|
||||
|
||||
FHyperTwistTrainingCoachArchivePolicySummary UHyperTwistTrainingSubsystem::GetActiveCoachArchivePolicySummary() const
|
||||
{
|
||||
return ActiveCoachArchivePolicySummary;
|
||||
}
|
||||
|
||||
FHyperTwistCoachBrief UHyperTwistTrainingSubsystem::GetActiveCoachFollowUpBrief() const
|
||||
{
|
||||
return ActiveCoachFollowUpBrief;
|
||||
|
|
@ -1176,6 +1206,12 @@ void UHyperTwistTrainingSubsystem::RefreshRepositoryViews()
|
|||
ActiveCoachActionPlan = FHyperTwistTrainingCoachActionPlan();
|
||||
ActiveCoachActionPlanSummary = FHyperTwistTrainingCoachActionPlanSummary();
|
||||
ActiveCoachActionPlanOutcomeSummary = FHyperTwistTrainingCoachActionPlanOutcomeSummary();
|
||||
ActiveCoachActionSequenceSummary = FHyperTwistTrainingCoachActionSequenceSummary();
|
||||
ActiveCoachActionClosureSummary = FHyperTwistTrainingCoachActionClosureSummary();
|
||||
ActiveCoachClosureMemorySummary = FHyperTwistTrainingCoachClosureMemorySummary();
|
||||
ActiveCoachRecommendationHistorySummary = FHyperTwistTrainingCoachRecommendationHistorySummary();
|
||||
ActiveCoachCarryForwardPolicySummary = FHyperTwistTrainingCoachCarryForwardPolicySummary();
|
||||
ActiveCoachArchivePolicySummary = FHyperTwistTrainingCoachArchivePolicySummary();
|
||||
ActiveCoachFollowUpBrief = FHyperTwistCoachBrief();
|
||||
ActiveLearnerMethodSegments.Reset();
|
||||
ActiveLearnerPresets.Reset();
|
||||
|
|
@ -1237,6 +1273,26 @@ void UHyperTwistTrainingSubsystem::RefreshRepositoryViews()
|
|||
ActiveRunState.Session.UserId,
|
||||
ActiveLearnerDeckStateSummary.ReferenceUtc
|
||||
);
|
||||
ActiveCoachClosureMemorySummary = UHyperTwistTrainingRepositoryLibrary::DeriveCoachClosureMemorySummary(
|
||||
TrainingRepositoryState,
|
||||
ActiveRunState.Session.UserId,
|
||||
ActiveLearnerDeckStateSummary.ReferenceUtc
|
||||
);
|
||||
ActiveCoachRecommendationHistorySummary = UHyperTwistTrainingRepositoryLibrary::DeriveCoachRecommendationHistorySummary(
|
||||
TrainingRepositoryState,
|
||||
ActiveRunState.Session.UserId,
|
||||
ActiveLearnerDeckStateSummary.ReferenceUtc
|
||||
);
|
||||
ActiveCoachCarryForwardPolicySummary = UHyperTwistTrainingRepositoryLibrary::DeriveCoachCarryForwardPolicySummary(
|
||||
TrainingRepositoryState,
|
||||
ActiveRunState.Session.UserId,
|
||||
ActiveLearnerDeckStateSummary.ReferenceUtc
|
||||
);
|
||||
ActiveCoachArchivePolicySummary = UHyperTwistTrainingRepositoryLibrary::DeriveCoachArchivePolicySummary(
|
||||
TrainingRepositoryState,
|
||||
ActiveRunState.Session.UserId,
|
||||
ActiveLearnerDeckStateSummary.ReferenceUtc
|
||||
);
|
||||
ActiveReplayReviewAnalytics = UHyperTwistReplayReviewLibrary::DeriveReplayReviewAnalytics(
|
||||
ActiveRunState.ReplayPacket
|
||||
);
|
||||
|
|
@ -1284,6 +1340,20 @@ void UHyperTwistTrainingSubsystem::RefreshRepositoryViews()
|
|||
ActiveLearnerDeckStateSummary.ReferenceUtc
|
||||
)
|
||||
: FHyperTwistTrainingCoachActionPlanOutcomeSummary();
|
||||
ActiveCoachActionSequenceSummary = ActiveCoachActionPlan.IsStructurallyValid()
|
||||
? UHyperTwistTrainingRepositoryLibrary::DeriveCoachActionSequenceSummary(
|
||||
TrainingRepositoryState,
|
||||
ActiveCoachActionPlan,
|
||||
ActiveLearnerDeckStateSummary.ReferenceUtc
|
||||
)
|
||||
: FHyperTwistTrainingCoachActionSequenceSummary();
|
||||
ActiveCoachActionClosureSummary = ActiveCoachActionPlan.IsStructurallyValid()
|
||||
? UHyperTwistTrainingRepositoryLibrary::DeriveCoachActionClosureSummary(
|
||||
TrainingRepositoryState,
|
||||
ActiveCoachActionPlan,
|
||||
ActiveLearnerDeckStateSummary.ReferenceUtc
|
||||
)
|
||||
: FHyperTwistTrainingCoachActionClosureSummary();
|
||||
ActiveCoachSignals = UHyperTwistTrainingCoachLibrary::DeriveCoachSignals(
|
||||
ActiveRunSummary,
|
||||
ActiveDeckScopedStats,
|
||||
|
|
@ -1305,6 +1375,7 @@ void UHyperTwistTrainingSubsystem::RefreshRepositoryViews()
|
|||
ActiveRecognitionReplaySummary
|
||||
);
|
||||
ActiveCoachFollowUpBrief = ActiveCoachActionPlanOutcomeSummary.IsStructurallyValid()
|
||||
&& ActiveCoachActionClosureSummary.bShouldSpawnFollowUp
|
||||
? UHyperTwistTrainingCoachLibrary::DeriveCoachFollowUpBrief(
|
||||
ActiveCoachBrief,
|
||||
ActiveCoachActionPlan,
|
||||
|
|
|
|||
|
|
@ -185,6 +185,24 @@ public:
|
|||
UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
|
||||
static FHyperTwistTrainingCoachActionPlanOutcomeSummary MakeSampleTrainingCoachActionPlanOutcomeSummary();
|
||||
|
||||
UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
|
||||
static FHyperTwistTrainingCoachActionSequenceSummary MakeSampleTrainingCoachActionSequenceSummary();
|
||||
|
||||
UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
|
||||
static FHyperTwistTrainingCoachActionClosureSummary MakeSampleTrainingCoachActionClosureSummary();
|
||||
|
||||
UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
|
||||
static FHyperTwistTrainingCoachClosureMemorySummary MakeSampleTrainingCoachClosureMemorySummary();
|
||||
|
||||
UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
|
||||
static FHyperTwistTrainingCoachRecommendationHistorySummary MakeSampleTrainingCoachRecommendationHistorySummary();
|
||||
|
||||
UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
|
||||
static FHyperTwistTrainingCoachCarryForwardPolicySummary MakeSampleTrainingCoachCarryForwardPolicySummary();
|
||||
|
||||
UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
|
||||
static FHyperTwistTrainingCoachArchivePolicySummary MakeSampleTrainingCoachArchivePolicySummary();
|
||||
|
||||
UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
|
||||
static FHyperTwistCoachBrief MakeSampleTrainingCoachFollowUpBrief();
|
||||
|
||||
|
|
|
|||
|
|
@ -87,6 +87,15 @@ struct FHyperTwistCoachBrief
|
|||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString SourceReviewPlanId;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString CarryForwardPlanId;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString RootPlanId;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
int32 FollowUpDepth = 0;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
EHyperTwistCoachPriority Priority = EHyperTwistCoachPriority::Informational;
|
||||
|
||||
|
|
|
|||
|
|
@ -361,6 +361,48 @@ public:
|
|||
const FString& ReferenceUtc
|
||||
);
|
||||
|
||||
UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Repository|Coach")
|
||||
static FHyperTwistTrainingCoachActionSequenceSummary DeriveCoachActionSequenceSummary(
|
||||
const FHyperTwistTrainingRepositoryState& RepositoryState,
|
||||
const FHyperTwistTrainingCoachActionPlan& AnchorPlan,
|
||||
const FString& ReferenceUtc
|
||||
);
|
||||
|
||||
UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Repository|Coach")
|
||||
static FHyperTwistTrainingCoachActionClosureSummary DeriveCoachActionClosureSummary(
|
||||
const FHyperTwistTrainingRepositoryState& RepositoryState,
|
||||
const FHyperTwistTrainingCoachActionPlan& AnchorPlan,
|
||||
const FString& ReferenceUtc
|
||||
);
|
||||
|
||||
UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Repository|Coach")
|
||||
static FHyperTwistTrainingCoachClosureMemorySummary DeriveCoachClosureMemorySummary(
|
||||
const FHyperTwistTrainingRepositoryState& RepositoryState,
|
||||
const FString& UserId,
|
||||
const FString& ReferenceUtc
|
||||
);
|
||||
|
||||
UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Repository|Coach")
|
||||
static FHyperTwistTrainingCoachRecommendationHistorySummary DeriveCoachRecommendationHistorySummary(
|
||||
const FHyperTwistTrainingRepositoryState& RepositoryState,
|
||||
const FString& UserId,
|
||||
const FString& ReferenceUtc
|
||||
);
|
||||
|
||||
UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Repository|Coach")
|
||||
static FHyperTwistTrainingCoachCarryForwardPolicySummary DeriveCoachCarryForwardPolicySummary(
|
||||
const FHyperTwistTrainingRepositoryState& RepositoryState,
|
||||
const FString& UserId,
|
||||
const FString& ReferenceUtc
|
||||
);
|
||||
|
||||
UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Repository|Coach")
|
||||
static FHyperTwistTrainingCoachArchivePolicySummary DeriveCoachArchivePolicySummary(
|
||||
const FHyperTwistTrainingRepositoryState& RepositoryState,
|
||||
const FString& UserId,
|
||||
const FString& ReferenceUtc
|
||||
);
|
||||
|
||||
UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Repository")
|
||||
static FHyperTwistTrainingCaseRecommendation MakeCaseRecommendation(
|
||||
const FHyperTwistTrainingCase& TrainingCase,
|
||||
|
|
|
|||
|
|
@ -90,6 +90,30 @@ public:
|
|||
UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach", meta = (WorldContext = "WorldContextObject"))
|
||||
static FHyperTwistTrainingCoachActionPlanOutcomeSummary GetActiveTrainingCoachActionPlanOutcomeSummary(UObject* WorldContextObject);
|
||||
|
||||
UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach", meta = (WorldContext = "WorldContextObject"))
|
||||
static FHyperTwistTrainingCoachActionSequenceSummary GetActiveTrainingCoachActionSequenceSummary(UObject* WorldContextObject);
|
||||
|
||||
UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach", meta = (WorldContext = "WorldContextObject"))
|
||||
static FHyperTwistTrainingCoachActionClosureSummary GetActiveTrainingCoachActionClosureSummary(UObject* WorldContextObject);
|
||||
|
||||
UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach", meta = (WorldContext = "WorldContextObject"))
|
||||
static FHyperTwistTrainingCoachClosureMemorySummary GetActiveTrainingCoachClosureMemorySummary(UObject* WorldContextObject);
|
||||
|
||||
UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach", meta = (WorldContext = "WorldContextObject"))
|
||||
static FHyperTwistTrainingCoachRecommendationHistorySummary GetActiveTrainingCoachRecommendationHistorySummary(
|
||||
UObject* WorldContextObject
|
||||
);
|
||||
|
||||
UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach", meta = (WorldContext = "WorldContextObject"))
|
||||
static FHyperTwistTrainingCoachCarryForwardPolicySummary GetActiveTrainingCoachCarryForwardPolicySummary(
|
||||
UObject* WorldContextObject
|
||||
);
|
||||
|
||||
UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach", meta = (WorldContext = "WorldContextObject"))
|
||||
static FHyperTwistTrainingCoachArchivePolicySummary GetActiveTrainingCoachArchivePolicySummary(
|
||||
UObject* WorldContextObject
|
||||
);
|
||||
|
||||
UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach", meta = (WorldContext = "WorldContextObject"))
|
||||
static FHyperTwistCoachBrief GetActiveTrainingCoachFollowUpBrief(UObject* WorldContextObject);
|
||||
|
||||
|
|
|
|||
|
|
@ -83,6 +83,24 @@ public:
|
|||
UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
|
||||
FHyperTwistTrainingCoachActionPlanOutcomeSummary GetActiveCoachActionPlanOutcomeSummary() const;
|
||||
|
||||
UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
|
||||
FHyperTwistTrainingCoachActionSequenceSummary GetActiveCoachActionSequenceSummary() const;
|
||||
|
||||
UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
|
||||
FHyperTwistTrainingCoachActionClosureSummary GetActiveCoachActionClosureSummary() const;
|
||||
|
||||
UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
|
||||
FHyperTwistTrainingCoachClosureMemorySummary GetActiveCoachClosureMemorySummary() const;
|
||||
|
||||
UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
|
||||
FHyperTwistTrainingCoachRecommendationHistorySummary GetActiveCoachRecommendationHistorySummary() const;
|
||||
|
||||
UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
|
||||
FHyperTwistTrainingCoachCarryForwardPolicySummary GetActiveCoachCarryForwardPolicySummary() const;
|
||||
|
||||
UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
|
||||
FHyperTwistTrainingCoachArchivePolicySummary GetActiveCoachArchivePolicySummary() const;
|
||||
|
||||
UFUNCTION(BlueprintPure, Category = "HyperTwist|Training|Coach")
|
||||
FHyperTwistCoachBrief GetActiveCoachFollowUpBrief() const;
|
||||
|
||||
|
|
@ -414,6 +432,24 @@ private:
|
|||
UPROPERTY()
|
||||
FHyperTwistTrainingCoachActionPlanOutcomeSummary ActiveCoachActionPlanOutcomeSummary;
|
||||
|
||||
UPROPERTY()
|
||||
FHyperTwistTrainingCoachActionSequenceSummary ActiveCoachActionSequenceSummary;
|
||||
|
||||
UPROPERTY()
|
||||
FHyperTwistTrainingCoachActionClosureSummary ActiveCoachActionClosureSummary;
|
||||
|
||||
UPROPERTY()
|
||||
FHyperTwistTrainingCoachClosureMemorySummary ActiveCoachClosureMemorySummary;
|
||||
|
||||
UPROPERTY()
|
||||
FHyperTwistTrainingCoachRecommendationHistorySummary ActiveCoachRecommendationHistorySummary;
|
||||
|
||||
UPROPERTY()
|
||||
FHyperTwistTrainingCoachCarryForwardPolicySummary ActiveCoachCarryForwardPolicySummary;
|
||||
|
||||
UPROPERTY()
|
||||
FHyperTwistTrainingCoachArchivePolicySummary ActiveCoachArchivePolicySummary;
|
||||
|
||||
UPROPERTY()
|
||||
FHyperTwistCoachBrief ActiveCoachFollowUpBrief;
|
||||
|
||||
|
|
|
|||
|
|
@ -1734,6 +1734,39 @@ struct FHyperTwistTrainingCoachMemorySnapshot
|
|||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
TArray<FString> PendingReviewPlanIds;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
TArray<FString> ArchivedResolvedCaseIds;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
TArray<FString> PersistentCoachWeakCaseIds;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
TArray<FString> EscalationCaseIds;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
TArray<FString> RecurringCoachCaseIds;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
TArray<FString> SuppressedResolvedCoachCaseIds;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
TArray<FString> PinnedCarryForwardCaseIds;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
TArray<FString> LongTermArchivedCoachCaseIds;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
TArray<FString> ExpiredCarryForwardCaseIds;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
TArray<FString> StableArchivedCoachCaseIds;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
TArray<FString> ProvisionalArchivedCoachCaseIds;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
TArray<FString> ArchiveReopenRiskCaseIds;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString LastTrainingAtUtc;
|
||||
|
||||
|
|
@ -1743,6 +1776,31 @@ struct FHyperTwistTrainingCoachMemorySnapshot
|
|||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
int32 ActiveTrainingDayStreak = 0;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
int32 ClosedCoachSequenceCount = 0;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
int32 EscalatedCoachSequenceCount = 0;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
int32 FollowUpReadyCoachSequenceCount = 0;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
int32 RepeatRecommendationSequenceCount = 0;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
EHyperTwistTrainingDeliveryMode DominantCoachSuggestedMode = EHyperTwistTrainingDeliveryMode::Timer;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
EHyperTwistTrainingSelectionPolicy DominantCoachSelectionPolicy =
|
||||
EHyperTwistTrainingSelectionPolicy::Weighted;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
float ArchiveStabilityScore = 0.0f;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
float ArchiveRetentionTuningScore = 0.0f;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
bool bNeedsCoachIntervention = false;
|
||||
|
||||
|
|
@ -1751,6 +1809,18 @@ struct FHyperTwistTrainingCoachMemorySnapshot
|
|||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
bool bNeedsCadenceRecovery = false;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
bool bHasRepeatRecommendationPressure = false;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
bool bHasPinnedCarryForwardPressure = false;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
bool bHasStableArchiveMemory = false;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
bool bNeedsArchiveRetentionTuning = false;
|
||||
};
|
||||
|
||||
USTRUCT(BlueprintType)
|
||||
|
|
@ -2714,6 +2784,12 @@ struct FHyperTwistTrainingCoachActionPlan
|
|||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString SourceReviewPlanId;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString ParentPlanId;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString RootPlanId;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString FocusDeckId;
|
||||
|
||||
|
|
@ -2750,6 +2826,9 @@ struct FHyperTwistTrainingCoachActionPlan
|
|||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
EHyperTwistTrainingCoachActionPlanState PlanState = EHyperTwistTrainingCoachActionPlanState::Draft;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
int32 FollowUpDepth = 0;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString CreatedAtUtc;
|
||||
|
||||
|
|
@ -2961,6 +3040,465 @@ struct FHyperTwistTrainingCoachActionPlanOutcomeSummary
|
|||
}
|
||||
};
|
||||
|
||||
USTRUCT(BlueprintType)
|
||||
struct FHyperTwistTrainingCoachActionSequenceSummary
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString UserId;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString ReferenceUtc;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString RootPlanId;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString LatestPlanId;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString FocusDeckId;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString FocusMethodSegmentId;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
int32 PlanCount = 0;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
int32 CarryForwardPlanCount = 0;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
int32 ActivePlanCount = 0;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
int32 CompletedPlanCount = 0;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
int32 AbortedPlanCount = 0;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
int32 MaxFollowUpDepth = 0;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
int32 TotalFocusCaseCount = 0;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
int32 UnresolvedFollowUpCaseCount = 0;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
float AverageCompletionRate = 0.0f;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
float AverageOutcomeScore = 0.0f;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
float LatestOutcomeScore = 0.0f;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
bool bHasOpenPlan = false;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
bool bNeedsMoreFollowUp = false;
|
||||
|
||||
bool IsStructurallyValid() const
|
||||
{
|
||||
return !UserId.IsEmpty() && !RootPlanId.IsEmpty() && PlanCount > 0;
|
||||
}
|
||||
};
|
||||
|
||||
USTRUCT(BlueprintType)
|
||||
struct FHyperTwistTrainingCoachActionClosureSummary
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString UserId;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString ReferenceUtc;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString RootPlanId;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString LatestPlanId;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString FocusDeckId;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString FocusMethodSegmentId;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString ClosureLabel;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
EHyperTwistTrainingDeliveryMode RecommendedNextMode = EHyperTwistTrainingDeliveryMode::Timer;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
TArray<FString> ResolvedCaseIds;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
TArray<FString> PersistentWeakCaseIds;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
TArray<FString> UnresolvedCaseIds;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
int32 TotalAttemptCount = 0;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
int32 RepeatedFailureCaseCount = 0;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
int32 ResolvedCaseCount = 0;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
int32 PersistentWeakCaseCount = 0;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
int32 UnresolvedCaseCount = 0;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
float ClosureScore = 0.0f;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
bool bSequenceClosed = false;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
bool bShouldArchiveResolvedCases = false;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
bool bShouldSpawnFollowUp = false;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
bool bNeedsEscalation = false;
|
||||
|
||||
bool IsStructurallyValid() const
|
||||
{
|
||||
return !UserId.IsEmpty() && !RootPlanId.IsEmpty();
|
||||
}
|
||||
};
|
||||
|
||||
USTRUCT(BlueprintType)
|
||||
struct FHyperTwistTrainingCoachClosureMemorySummary
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString UserId;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString ReferenceUtc;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString FocusRootPlanId;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString FocusDeckId;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString FocusMethodSegmentId;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString FocusClosureLabel;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
int32 SequenceCount = 0;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
int32 ClosedSequenceCount = 0;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
int32 EscalatedSequenceCount = 0;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
int32 FollowUpReadySequenceCount = 0;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
int32 ArchivedResolvedCaseCount = 0;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
int32 PersistentWeakCaseCount = 0;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
float AverageClosureScore = 0.0f;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
TArray<FString> ArchivedResolvedCaseIds;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
TArray<FString> PersistentWeakCaseIds;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
TArray<FString> EscalationCaseIds;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
bool bHasEscalationPressure = false;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
bool bHasFollowUpPressure = false;
|
||||
|
||||
bool IsStructurallyValid() const
|
||||
{
|
||||
return !UserId.IsEmpty() && SequenceCount > 0;
|
||||
}
|
||||
};
|
||||
|
||||
USTRUCT(BlueprintType)
|
||||
struct FHyperTwistTrainingCoachRecommendationHistorySummary
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString UserId;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString ReferenceUtc;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString LatestPlanId;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString FocusDeckId;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString FocusMethodSegmentId;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString DominantPrimaryActionLabel;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
EHyperTwistTrainingDeliveryMode DominantSuggestedMode = EHyperTwistTrainingDeliveryMode::Timer;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
EHyperTwistTrainingSelectionPolicy DominantSelectionPolicy =
|
||||
EHyperTwistTrainingSelectionPolicy::Weighted;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
int32 SequenceCount = 0;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
int32 PlanCount = 0;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
int32 RepeatRecommendationSequenceCount = 0;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
int32 EscalatedSequenceCount = 0;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
int32 FollowUpReadySequenceCount = 0;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
int32 RecurringCaseCount = 0;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
int32 ArchivedResolvedCaseCount = 0;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
int32 EscalationCaseCount = 0;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
float AverageClosureScore = 0.0f;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
float AverageFollowUpDepth = 0.0f;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
TArray<FString> RecurringCaseIds;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
TArray<FString> ArchivedResolvedCaseIds;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
TArray<FString> EscalationCaseIds;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
bool bHasRepeatRecommendationPressure = false;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
bool bShouldBiasCoachReviewed = false;
|
||||
|
||||
bool IsStructurallyValid() const
|
||||
{
|
||||
return !UserId.IsEmpty() && SequenceCount > 0;
|
||||
}
|
||||
};
|
||||
|
||||
USTRUCT(BlueprintType)
|
||||
struct FHyperTwistTrainingCoachCarryForwardPolicySummary
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString UserId;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString ReferenceUtc;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString FocusDeckId;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString FocusMethodSegmentId;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
EHyperTwistTrainingDeliveryMode DominantSuggestedMode = EHyperTwistTrainingDeliveryMode::Timer;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
EHyperTwistTrainingSelectionPolicy DominantSelectionPolicy =
|
||||
EHyperTwistTrainingSelectionPolicy::Weighted;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
TArray<FString> SuppressedResolvedCaseIds;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
TArray<FString> PinnedCarryForwardCaseIds;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
TArray<FString> RecurringCarryForwardCaseIds;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
TArray<FString> EscalationCarryForwardCaseIds;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
int32 SuppressedResolvedCaseCount = 0;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
int32 PinnedCarryForwardCaseCount = 0;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
int32 RecurringCarryForwardCaseCount = 0;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
int32 EscalationCarryForwardCaseCount = 0;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
float CarryForwardIntensityScore = 0.0f;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
bool bSuppressResolvedResurfacing = false;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
bool bPinRecurringCases = false;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
bool bBiasCoachReviewed = false;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
bool bNeedsEscalationHandOff = false;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
bool bHasActiveCarryForwardPressure = false;
|
||||
|
||||
bool IsStructurallyValid() const
|
||||
{
|
||||
return !UserId.IsEmpty();
|
||||
}
|
||||
};
|
||||
|
||||
USTRUCT(BlueprintType)
|
||||
struct FHyperTwistTrainingCoachArchivePolicySummary
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString UserId;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString ReferenceUtc;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString FocusDeckId;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
FString FocusMethodSegmentId;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
EHyperTwistTrainingDeliveryMode DominantSuggestedMode = EHyperTwistTrainingDeliveryMode::Timer;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
EHyperTwistTrainingSelectionPolicy DominantSelectionPolicy =
|
||||
EHyperTwistTrainingSelectionPolicy::Weighted;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
TArray<FString> LongTermArchivedCaseIds;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
TArray<FString> ExpiredCarryForwardCaseIds;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
TArray<FString> RetainedCarryForwardCaseIds;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
TArray<FString> EscalationRetainedCaseIds;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
TArray<FString> SuppressedResolvedCaseIds;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
TArray<FString> StableLongTermArchivedCaseIds;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
TArray<FString> ProvisionalArchivedCaseIds;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
TArray<FString> ReopenRiskArchivedCaseIds;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
int32 LongTermArchivedCaseCount = 0;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
int32 ExpiredCarryForwardCaseCount = 0;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
int32 RetainedCarryForwardCaseCount = 0;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
int32 EscalationRetainedCaseCount = 0;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
int32 SuppressedResolvedCaseCount = 0;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
int32 StableLongTermArchivedCaseCount = 0;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
int32 ProvisionalArchivedCaseCount = 0;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
int32 ReopenRiskArchivedCaseCount = 0;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
float ArchiveStabilityScore = 0.0f;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
float ArchiveRetentionTuningScore = 0.0f;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
bool bShouldExpireResolvedCarryForward = false;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
bool bShouldRetainEscalationCarryForward = false;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
bool bHasStableArchiveMemory = false;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
bool bHasActiveArchivePressure = false;
|
||||
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "HyperTwist")
|
||||
bool bNeedsArchiveRetentionTuning = false;
|
||||
|
||||
bool IsStructurallyValid() const
|
||||
{
|
||||
return !UserId.IsEmpty();
|
||||
}
|
||||
};
|
||||
|
||||
USTRUCT(BlueprintType)
|
||||
struct FHyperTwistTrainingRepositoryState
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue