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"
# Generate gap report (collect unresolved fields)
gaps = {
'unknown_time_window': [k for k, m in all_metadata.items() if m.time_window == TimeWindow.UNKNOWN],
'unknown_output_type': [k for k, m in all_metadata.items() if m.output_type == OutputType.UNKNOWN],
'legacy_unknown_type': [k for k, m in all_metadata.items() if m.type == PlaceholderType.LEGACY_UNKNOWN],
'unresolved_fields': {k: m.unresolved_fields for k, m in all_metadata.items() if m.unresolved_fields},
'legacy_mismatches': [k for k, m in all_metadata.items() if m.legacy_contract_mismatch],
'orphaned': [k for k, m in all_metadata.items() if m.orphaned_placeholder],
}
# Note: TimeWindow, OutputType, PlaceholderType are from old metadata system
# Skip gap report for old metadata if not available
gaps = {}
try:
from placeholder_metadata_complete import TimeWindow, OutputType, PlaceholderType
gaps = {
'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_results = registry.validate_all()