[ 'completion' => 0.30, 'engagement' => 0.25, 'assessment' => 0.20, 'on_time' => 0.15, 'inverse_risk' => 0.10, ], 'risk_provider' => 'explainable-heuristic', 'risk_provider_version' => '1.0', 'risk_weights' => [ 'inactivity' => 30, 'deadline' => 25, 'low_progress' => 25, 'assessment_failure' => 20, ], 'inactivity_days' => 7, 'due_soon_days' => 7, ];