///|
pub(all) enum RoutinePhase {
CreateRunContext
SnapshotMarketData
Stage1Diagnosis
Stage1Validation
StrategyRouting
Stage2Decision
Stage2Validation
PersistAnalysis
FollowUpReady
} derive(Debug, Eq, ToJson, FromJson)
///|
pub(all) struct RoutinePlan {
run_id : @domain.RunId
phases : Array[RoutinePhase]
} derive(Debug, Eq, ToJson, FromJson)
///|
pub fn default_phases() -> Array[RoutinePhase] {
[
CreateRunContext,
SnapshotMarketData,
Stage1Diagnosis,
Stage1Validation,
StrategyRouting,
Stage2Decision,
Stage2Validation,
PersistAnalysis,
FollowUpReady,
]
}
///|
pub fn routine_plan(run_id : @domain.RunId) -> RoutinePlan {
{ run_id, phases: default_phases() }
}
///|
pub fn RoutinePhase::label(self : RoutinePhase) -> String {
match self {
CreateRunContext => "create_run_context"
SnapshotMarketData => "snapshot_market_data"
Stage1Diagnosis => "stage1_diagnosis"
Stage1Validation => "stage1_validation"
StrategyRouting => "strategy_routing"
Stage2Decision => "stage2_decision"
Stage2Validation => "stage2_validation"
PersistAnalysis => "persist_analysis"
FollowUpReady => "follow_up_ready"
}
}