From 60709df615988e983f364fc5527ab0991e7dc073 Mon Sep 17 00:00:00 2001 From: Lars Date: Mon, 11 May 2026 17:54:53 +0200 Subject: [PATCH] feat: Implement Content Reporting Backend - Added new API endpoints for content reporting, including submission, retrieval, and status updates. - Created database migration for `content_reports` table to store report data. - Integrated content reports into the existing admin inbox for better management. - Implemented validation for report submissions, including required fields and email format. - Added tests for content reporting functionality, covering various scenarios and edge cases. - Updated frontend API utility to include new content report methods. - Bumped app version to 0.8.87 and updated relevant page versions. --- backend/main.py | 3 +- backend/migrations/052_content_reports.sql | 73 +++ backend/routers/content_reports.py | 584 +++++++++++++++++++++ backend/tests/test_p13_content_reports.py | 327 ++++++++++++ backend/version.py | 16 +- docs/compliance-implementation.md | 51 +- docs/compliance-package-register.md | 20 +- docs/compliance-roadmap.md | 28 +- frontend/src/context/OrgInboxContext.jsx | 66 ++- frontend/src/pages/InboxPage.jsx | 543 ++++++++++++++++--- frontend/src/utils/api.js | 12 + frontend/src/version.js | 3 +- 12 files changed, 1610 insertions(+), 116 deletions(-) create mode 100644 backend/migrations/052_content_reports.sql create mode 100644 backend/routers/content_reports.py create mode 100644 backend/tests/test_p13_content_reports.py diff --git a/backend/main.py b/backend/main.py index 6829f9b..10547ec 100644 --- a/backend/main.py +++ b/backend/main.py @@ -193,7 +193,7 @@ def read_root(): return out # Register routers -from routers import auth, profiles, exercises, exercise_progression_graphs, clubs, club_memberships, club_join_requests, admin_users, platform_media_storage, media_assets, skills, training_planning, training_framework_programs, catalogs, maturity_models, matrix_stack_bundle, import_wiki, import_wiki_admin, legal_documents +from routers import auth, profiles, exercises, exercise_progression_graphs, clubs, club_memberships, club_join_requests, admin_users, platform_media_storage, media_assets, skills, training_planning, training_framework_programs, catalogs, maturity_models, matrix_stack_bundle, import_wiki, import_wiki_admin, legal_documents, content_reports app.include_router(auth.router) app.include_router(profiles.router) @@ -216,6 +216,7 @@ app.include_router(matrix_stack_bundle.router) app.include_router(import_wiki.router) app.include_router(import_wiki_admin.router) app.include_router(legal_documents.router) +app.include_router(content_reports.router) # Lokale Übungs-Medien: standardmäßig nur über geschützten API-Pfad # GET /api/exercises/{id}/media/{mid}/file (?ssetoken für /