fix: Handle missing TimeWindow enum in export endpoint
All checks were successful
Deploy Development / deploy (push) Successful in 45s
Build Test / lint-backend (push) Successful in 0s
Build Test / build-frontend (push) Successful in 14s

Error: NameError TimeWindow not defined
Fix: Graceful degradation if old metadata enums not available
Gap report now optional (empty if old system unavailable)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Lars 2026-04-02 11:54:02 +02:00
parent 645967a2ab
commit 81681f0de3

View File

@ -358,14 +358,29 @@ def export_placeholder_values_extended(
metadata.missing_reason = "Placeholder not in resolver output" metadata.missing_reason = "Placeholder not in resolver output"
# Generate gap report (collect unresolved fields) # Generate gap report (collect unresolved fields)
gaps = { # Note: TimeWindow, OutputType, PlaceholderType are from old metadata system
'unknown_time_window': [k for k, m in all_metadata.items() if m.time_window == TimeWindow.UNKNOWN], # Skip gap report for old metadata if not available
'unknown_output_type': [k for k, m in all_metadata.items() if m.output_type == OutputType.UNKNOWN], gaps = {}
'legacy_unknown_type': [k for k, m in all_metadata.items() if m.type == PlaceholderType.LEGACY_UNKNOWN], try:
'unresolved_fields': {k: m.unresolved_fields for k, m in all_metadata.items() if m.unresolved_fields}, from placeholder_metadata_complete import TimeWindow, OutputType, PlaceholderType
'legacy_mismatches': [k for k, m in all_metadata.items() if m.legacy_contract_mismatch], gaps = {
'orphaned': [k for k, m in all_metadata.items() if m.orphaned_placeholder], 'unknown_time_window': [k for k, m in all_metadata.items() if hasattr(m, 'time_window') and m.time_window == TimeWindow.UNKNOWN],
} 'unknown_output_type': [k for k, m in all_metadata.items() if hasattr(m, 'output_type') and m.output_type == OutputType.UNKNOWN],
'legacy_unknown_type': [k for k, m in all_metadata.items() if hasattr(m, 'type') and m.type == PlaceholderType.LEGACY_UNKNOWN],
'unresolved_fields': {k: m.unresolved_fields for k, m in all_metadata.items() if hasattr(m, 'unresolved_fields') and m.unresolved_fields},
'legacy_mismatches': [k for k, m in all_metadata.items() if hasattr(m, 'legacy_contract_mismatch') and m.legacy_contract_mismatch],
'orphaned': [k for k, m in all_metadata.items() if hasattr(m, 'orphaned_placeholder') and m.orphaned_placeholder],
}
except ImportError:
# Old metadata system not available, use empty gaps
gaps = {
'unknown_time_window': [],
'unknown_output_type': [],
'legacy_unknown_type': [],
'unresolved_fields': {},
'legacy_mismatches': [],
'orphaned': [],
}
# Validation # Validation
validation_results = registry.validate_all() validation_results = registry.validate_all()