diff --git a/backend/routes/admin.py b/backend/routes/admin.py index 09a4127..cd3fee1 100644 --- a/backend/routes/admin.py +++ b/backend/routes/admin.py @@ -97,6 +97,40 @@ class ThreadAdminPatch(BaseModel): is_deleted: Optional[int] = None +# ------------------------------------------------------------------ +# GET /api/admin/action-items +# ------------------------------------------------------------------ +@router.get("/action-items") +async def action_items(user=Depends(require_mod)): + with db() as conn: + jobs = conn.execute( + "SELECT COUNT(*) FROM job_applications WHERE status IN ('pending','reviewing')" + ).fetchone()[0] + breeders = conn.execute( + "SELECT COUNT(*) FROM users WHERE breeder_status='pending'" + ).fetchone()[0] + reports = conn.execute( + "SELECT COUNT(*) FROM forum_reports WHERE resolved=0" + ).fetchone()[0] + fotos = conn.execute( + "SELECT COUNT(*) FROM wiki_foto_submissions WHERE status='pending'" + ).fetchone()[0] + poi_edits = conn.execute( + "SELECT COUNT(*) FROM osm_poi_edits WHERE status='pending'" + ).fetchone()[0] + users_today = conn.execute( + "SELECT COUNT(*) FROM users WHERE DATE(created_at)=DATE('now')" + ).fetchone()[0] + return { + "jobs_pending": jobs, + "breeder_pending": breeders, + "reports_open": reports, + "fotos_pending": fotos, + "poi_edits_pending": poi_edits, + "users_today": users_today, + } + + # ------------------------------------------------------------------ # GET /api/admin/stats # ------------------------------------------------------------------ diff --git a/backend/static/js/app.js b/backend/static/js/app.js index a4b6b3a..d060792 100644 --- a/backend/static/js/app.js +++ b/backend/static/js/app.js @@ -3,7 +3,7 @@ Router, State-Management, Navigation, Initialisierung. ============================================================ */ -const APP_VER = '586'; // ← bei jedem Deploy mit Frontend-Änderungen erhöhen +const APP_VER = '587'; // ← bei jedem Deploy mit Frontend-Änderungen erhöhen const APP_VERSION = '1.2.1'; // ← semantische Version, wird bei make release gesetzt const IS_STAGING = location.hostname === 'staging.banyaro.app'; diff --git a/backend/static/js/pages/admin.js b/backend/static/js/pages/admin.js index 4734713..8a3b6c8 100644 --- a/backend/static/js/pages/admin.js +++ b/backend/static/js/pages/admin.js @@ -48,6 +48,9 @@ window.Page_admin = (() => { // ------------------------------------------------------------------ function _render() { _container.innerHTML = ` + +
+