DocUA commited on
Commit
3e1ef65
·
1 Parent(s): 5083460

Fix VerificationRecord validation errors for classification values

Browse files

- Add validation for classifier_decision and ground_truth_label in all interfaces
- Ensure only valid values (green, yellow, red) are used, fallback to 'green'
- Fix enhanced_dataset_interface.py: validate classification results
- Fix file_upload_interface.py: validate classification results
- Fix manual_input_interface.py: validate classification results
- Resolves 'Field must be one of [green, yellow, red], got unknown' errors

src/interface/enhanced_dataset_interface.py CHANGED
@@ -429,13 +429,22 @@ class EnhancedDatasetInterfaceController(ProgressTrackingMixin):
429
  _, classification_result = self.get_current_message_for_verification()
430
 
431
  # Create verification record
 
 
 
 
 
 
 
 
 
432
  record = VerificationRecord(
433
  message_id=current_message.message_id,
434
  original_message=current_message.text,
435
- classifier_decision=classification_result.get("decision", "unknown"),
436
  classifier_confidence=classification_result.get("confidence", 0.0),
437
  classifier_indicators=classification_result.get("indicators", []),
438
- ground_truth_label=correction.lower() if correction else current_message.pre_classified_label,
439
  verifier_notes=notes,
440
  is_correct=is_correct
441
  )
 
429
  _, classification_result = self.get_current_message_for_verification()
430
 
431
  # Create verification record
432
+ # Ensure valid classification values (green, yellow, red only)
433
+ classifier_decision = classification_result.get("decision", "green")
434
+ if classifier_decision not in ["green", "yellow", "red"]:
435
+ classifier_decision = "green" # Safe fallback
436
+
437
+ ground_truth = correction.lower() if correction else current_message.pre_classified_label
438
+ if ground_truth not in ["green", "yellow", "red"]:
439
+ ground_truth = "green" # Safe fallback
440
+
441
  record = VerificationRecord(
442
  message_id=current_message.message_id,
443
  original_message=current_message.text,
444
+ classifier_decision=classifier_decision,
445
  classifier_confidence=classification_result.get("confidence", 0.0),
446
  classifier_indicators=classification_result.get("indicators", []),
447
+ ground_truth_label=ground_truth,
448
  verifier_notes=notes,
449
  is_correct=is_correct
450
  )
src/interface/file_upload_interface.py CHANGED
@@ -389,13 +389,22 @@ class FileUploadInterfaceController(ProgressTrackingMixin):
389
  return False, "❌ Error getting current message", {}
390
 
391
  # Create verification record
 
 
 
 
 
 
 
 
 
392
  verification_record = VerificationRecord(
393
  message_id=test_message.message_id,
394
  original_message=test_message.text,
395
- classifier_decision=classification_result.get("decision", "unknown"),
396
  classifier_confidence=classification_result.get("confidence", 0.0),
397
  classifier_indicators=classification_result.get("indicators", []),
398
- ground_truth_label=correction if correction else test_message.pre_classified_label,
399
  verifier_notes=notes,
400
  is_correct=is_correct,
401
  )
 
389
  return False, "❌ Error getting current message", {}
390
 
391
  # Create verification record
392
+ # Ensure valid classification values (green, yellow, red only)
393
+ classifier_decision = classification_result.get("decision", "green")
394
+ if classifier_decision not in ["green", "yellow", "red"]:
395
+ classifier_decision = "green" # Safe fallback
396
+
397
+ ground_truth = correction if correction else test_message.pre_classified_label
398
+ if ground_truth not in ["green", "yellow", "red"]:
399
+ ground_truth = "green" # Safe fallback
400
+
401
  verification_record = VerificationRecord(
402
  message_id=test_message.message_id,
403
  original_message=test_message.text,
404
+ classifier_decision=classifier_decision,
405
  classifier_confidence=classification_result.get("confidence", 0.0),
406
  classifier_indicators=classification_result.get("indicators", []),
407
+ ground_truth_label=ground_truth,
408
  verifier_notes=notes,
409
  is_correct=is_correct,
410
  )
src/interface/manual_input_interface.py CHANGED
@@ -231,12 +231,20 @@ class ManualInputController(ProgressTrackingMixin):
231
  return False, "❌ Please select the correct classification", {}
232
  ground_truth = correction
233
 
 
 
 
 
 
 
 
 
234
  record = VerificationRecord(
235
  message_id=message_id,
236
  original_message=self.state.current_message,
237
- classifier_decision=self.state.current_classification["decision"],
238
- classifier_confidence=self.state.current_classification["confidence"],
239
- classifier_indicators=self.state.current_classification["indicators"],
240
  ground_truth_label=ground_truth,
241
  verifier_notes=notes or "",
242
  is_correct=is_correct,
 
231
  return False, "❌ Please select the correct classification", {}
232
  ground_truth = correction
233
 
234
+ # Ensure valid classification values (green, yellow, red only)
235
+ classifier_decision = self.state.current_classification.get("decision", "green")
236
+ if classifier_decision not in ["green", "yellow", "red"]:
237
+ classifier_decision = "green" # Safe fallback
238
+
239
+ if ground_truth not in ["green", "yellow", "red"]:
240
+ ground_truth = "green" # Safe fallback
241
+
242
  record = VerificationRecord(
243
  message_id=message_id,
244
  original_message=self.state.current_message,
245
+ classifier_decision=classifier_decision,
246
+ classifier_confidence=self.state.current_classification.get("confidence", 0.0),
247
+ classifier_indicators=self.state.current_classification.get("indicators", []),
248
  ground_truth_label=ground_truth,
249
  verifier_notes=notes or "",
250
  is_correct=is_correct,