diff --git a/backend/routes/admin.py b/backend/routes/admin.py index 82cc640..38e6d1c 100644 --- a/backend/routes/admin.py +++ b/backend/routes/admin.py @@ -671,49 +671,23 @@ async def wiki_evaluate(sample: int = 20, user=Depends(require_mod)): # ------------------------------------------------------------------ -# GET /api/admin/wiki/enrichment-status — Enrichment-Statistik +# POST /api/admin/wiki/reset-gemma — Gemma-Einträge zurücksetzen # ------------------------------------------------------------------ -@router.get("/wiki/enrichment-status") -async def wiki_enrichment_status(user=Depends(require_mod)): - with db() as conn: - total = conn.execute("SELECT COUNT(*) FROM wiki_rassen").fetchone()[0] - enriched = conn.execute("SELECT COUNT(*) FROM wiki_rassen WHERE ki_enriched=1").fetchone()[0] - no_wiki = conn.execute("SELECT COUNT(*) FROM wiki_rassen WHERE ki_enriched=2").fetchone()[0] - pending = conn.execute("SELECT COUNT(*) FROM wiki_rassen WHERE ki_enriched=0").fetchone()[0] - by_model = { - row[0] or "unbekannt": row[1] - for row in conn.execute( - "SELECT ki_model, COUNT(*) FROM wiki_rassen " - "WHERE ki_enriched=1 GROUP BY ki_model ORDER BY 2 DESC" - ).fetchall() - } - with_photo = conn.execute( - "SELECT COUNT(*) FROM wiki_rassen WHERE foto_url IS NOT NULL AND foto_url != ''" - ).fetchone()[0] - return { - "total": total, - "enriched": enriched, - "no_wiki": no_wiki, - "pending": pending, - "with_photo": with_photo, - "by_model": by_model, - } +@router.post("/wiki/reset-gemma") +async def wiki_reset_gemma(user=Depends(require_mod)): + from scraper.breed_enricher import reset_gemma_entries + count = reset_gemma_entries() + return {"reset": count} # ------------------------------------------------------------------ -# POST /api/admin/wiki/fetch-photos — Wiki-Fotos laden +# POST /api/admin/wiki/translate-temperament — einmalige Migration # ------------------------------------------------------------------ -@router.post("/wiki/fetch-photos") -async def wiki_fetch_photos(limit: int = 50, user=Depends(require_mod)): - import asyncio, subprocess - proc = await asyncio.create_subprocess_exec( - "python3", "/app/scraper/fetch_wiki_images.py", "--limit", str(limit), - stdout=asyncio.subprocess.PIPE, stderr=asyncio.subprocess.PIPE - ) - stdout, stderr = await proc.communicate() - lines = (stdout + stderr).decode() - found = lines.count("Foto gespeichert") - return {"launched": True, "found": found, "log": lines[-2000:]} +@router.post("/wiki/translate-temperament") +async def wiki_translate_temperament(user=Depends(require_mod)): + from scraper.breed_enricher import translate_existing_temperaments + updated = translate_existing_temperaments() + return {"updated": updated} # ------------------------------------------------------------------ diff --git a/backend/static/css/components.css b/backend/static/css/components.css index 33c67d1..500e6fc 100644 --- a/backend/static/css/components.css +++ b/backend/static/css/components.css @@ -4029,10 +4029,9 @@ html.modal-open { white-space: nowrap; } -.wiki-badge-groesse--klein { background: #e0f2fe; color: #0369a1; } -.wiki-badge-groesse--mittel { background: #fef9c3; color: #854d0e; } -.wiki-badge-groesse--gross { background: #fce7f3; color: #9d174d; } -.wiki-badge-groesse--sehr_gross { background: #f3e8ff; color: #6b21a8; } +.wiki-badge-groesse--klein { background: #e0f2fe; color: #0369a1; } +.wiki-badge-groesse--mittel { background: #fef9c3; color: #854d0e; } +.wiki-badge-groesse--gross { background: #fce7f3; color: #9d174d; } .wiki-badge-aktivitaet--niedrig { background: #dcfce7; color: #166534; } .wiki-badge-aktivitaet--mittel { background: #fef3c7; color: #92400e; } diff --git a/backend/static/index.html b/backend/static/index.html index 85f466e..14b694d 100644 --- a/backend/static/index.html +++ b/backend/static/index.html @@ -187,7 +187,7 @@