diff --git a/backend/routers/media_assets.py b/backend/routers/media_assets.py index 3d15535..16bd252 100644 --- a/backend/routers/media_assets.py +++ b/backend/routers/media_assets.py @@ -1145,7 +1145,10 @@ def list_media_assets( cur.execute( f"""SELECT ma.id, ma.mime_type, ma.byte_size, ma.original_filename, ma.visibility, ma.club_id, ma.uploaded_by_profile_id, ma.lifecycle_state, ma.created_at, ma.sha256, - ma.copyright_notice, ma.storage_key, {tags_select} + ma.copyright_notice, ma.storage_key, ma.rights_status, + ma.legal_hold_active, ma.legal_hold_reason_code, ma.legal_hold_reason_note, + ma.legal_hold_set_at, ma.legal_hold_set_by_profile_id, + {tags_select} pr.name AS uploader_name, pr.email AS uploader_email, cl.name AS club_name diff --git a/backend/version.py b/backend/version.py index e0aeb41..cfed7f6 100644 --- a/backend/version.py +++ b/backend/version.py @@ -1,6 +1,6 @@ # Shinkan Jinkendo Version Information -APP_VERSION = "0.8.84" +APP_VERSION = "0.8.85" BUILD_DATE = "2026-05-11" DB_SCHEMA_VERSION = "20260511051" @@ -33,6 +33,16 @@ MODULE_VERSIONS = { } CHANGELOG = [ + { + "version": "0.8.85", + "date": "2026-05-11", + "changes": [ + "Fix P-11: Listquery fehlte legal_hold_active/reason_code/reason_note/set_at — Badge und 'Sperre aufheben' im Modal waren nie sichtbar.", + "Fix P-11: submitLegalHold rief loadMedia() statt loadItems() auf ('loadMedia is not a function').", + "Fix P-11: Journal-Renderpfad verwendete nw.legal_hold_reason_code/note statt nw.reason_code/note (Keys aus dem Audit-Log).", + "Fix P-11: Archiv-Picker (ExerciseFormPage, ExerciseInlineFileMediaModal) filtert Legal-Hold-Assets auch fuer Superadmins heraus.", + ], + }, { "version": "0.8.84", "date": "2026-05-11", diff --git a/frontend/src/components/ExerciseInlineFileMediaModal.jsx b/frontend/src/components/ExerciseInlineFileMediaModal.jsx index 94ae4e4..c287241 100644 --- a/frontend/src/components/ExerciseInlineFileMediaModal.jsx +++ b/frontend/src/components/ExerciseInlineFileMediaModal.jsx @@ -151,7 +151,7 @@ export default function ExerciseInlineFileMediaModal({ limit: 48, lifecycle: 'active', }) - setItems(Array.isArray(res.items) ? res.items : []) + setItems(Array.isArray(res.items) ? res.items.filter(a => !a.legal_hold_active) : []) } catch (e) { setErr(e.message || String(e)) setItems([]) diff --git a/frontend/src/pages/ExerciseFormPage.jsx b/frontend/src/pages/ExerciseFormPage.jsx index d00508b..bb55272 100644 --- a/frontend/src/pages/ExerciseFormPage.jsx +++ b/frontend/src/pages/ExerciseFormPage.jsx @@ -434,7 +434,7 @@ function ExerciseFormPage() { q: archiveQ.trim() || undefined, limit: 40, }) - if (!cancelled) setArchiveItems(res.items || []) + if (!cancelled) setArchiveItems((res.items || []).filter(a => !a.legal_hold_active)) } catch (e) { if (!cancelled) setArchiveError(e.message || String(e)) } finally { diff --git a/frontend/src/pages/MediaLibraryPage.jsx b/frontend/src/pages/MediaLibraryPage.jsx index c5fe26a..3244781 100644 --- a/frontend/src/pages/MediaLibraryPage.jsx +++ b/frontend/src/pages/MediaLibraryPage.jsx @@ -508,7 +508,7 @@ export default function MediaLibraryPage() { setLegalHoldDialog(null) setModal(null) setModalDraft(null) - await loadMedia() + await loadItems() } catch (e) { alert(e.message || String(e)) } finally { @@ -1634,21 +1634,21 @@ export default function MediaLibraryPage() { <>
Grund: - {LEGAL_HOLD_REASON_LABELS[nw.legal_hold_reason_code] || nw.legal_hold_reason_code || '—'} + {LEGAL_HOLD_REASON_LABELS[nw.reason_code] || nw.reason_code || '—'}
- {nw.legal_hold_reason_note ? ( + {nw.reason_note ? (
Begründung: - {nw.legal_hold_reason_note} + {nw.reason_note}
) : null} ) : evt.event_type === 'legal_hold_released' ? ( <> - {nw.legal_hold_release_note ? ( + {nw.release_note ? (
Freigabegrund: - {nw.legal_hold_release_note} + {nw.release_note}
) : null}
diff --git a/frontend/src/version.js b/frontend/src/version.js index 3fadadf..caae68c 100644 --- a/frontend/src/version.js +++ b/frontend/src/version.js @@ -1,6 +1,6 @@ // Shinkan Jinkendo Frontend Version -export const APP_VERSION = "0.8.84" +export const APP_VERSION = "0.8.85" export const BUILD_DATE = "2026-05-11" export const PAGE_VERSIONS = {