Spaces:
Sleeping
Sleeping
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=
|
| 436 |
classifier_confidence=classification_result.get("confidence", 0.0),
|
| 437 |
classifier_indicators=classification_result.get("indicators", []),
|
| 438 |
-
ground_truth_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=
|
| 396 |
classifier_confidence=classification_result.get("confidence", 0.0),
|
| 397 |
classifier_indicators=classification_result.get("indicators", []),
|
| 398 |
-
ground_truth_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=
|
| 238 |
-
classifier_confidence=self.state.current_classification
|
| 239 |
-
classifier_indicators=self.state.current_classification
|
| 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,
|