completeValidation method

Future<void> completeValidation({
  1. required String sessionId,
  2. required String result,
  3. String? topicId,
  4. String? validationTarget,
})

Complete a validation session by setting the result and optionally advancing mastery if the validation was confirmed.

Implementation

Future<void> completeValidation({
  required String sessionId,
  required String result,
  String? topicId,
  String? validationTarget,
}) async {
  await _client
      .from('learning_sessions')
      .update({'validation_result': result})
      .eq('id', sessionId);

  // If confirmed and we know the target, advance mastery via the authorized
  // RPC (mastery column is trigger-protected; migration 071).
  if (result == 'confirmed' && topicId != null && validationTarget != null) {
    await setTopicMastery(
      topicId: topicId,
      target: validationTarget,
      source: 'validation',
      sessionId: sessionId,
    );

    // Fire-and-forget: check if any certifications should be auto-issued
    _tryIssueCertificates(topicId);
  }
}