Commit graph

798 commits

Author SHA1 Message Date
4f58a784c7 Admin: Social-Media-Tab mit Manager-Übersicht, Plattform-Auswertung und Post-Nachweis, SW by-v370 2026-04-25 10:27:39 +02:00
e2bb1a4b2d Social: Vorschläge merken (📌), Post-Link nachträglich eintragen, Quick-Post ohne prompt(), SW by-v369 2026-04-25 10:23:17 +02:00
092230c4e1 Wiki: Placeholder-Icon auf Phosphor 'dog' umgestellt (statt unförmigem Custom-SVG), SW by-v368 2026-04-25 10:15:29 +02:00
af4b1a4a55 Registrierung: Hundepassphrase-Generator (3 Wörter + Zahl, 60+ Hundewörter), SW by-v367 2026-04-25 10:08:42 +02:00
6064a1d750 Wiki-Foto-System: Gallery-Flow, Community-Fotos, Wiki-Fotos-Badge
- review_submission: Fotos ins gallery/-Verzeichnis statt breeds/ kopieren;
  foto_url der Rasse nur überschreiben wenn noch keins vorhanden (Erstbild)
- Rassen-Detail-API: user_fotos (approved submissions) mitliefern
- Rassen-Listen-API: user_foto-Subquery als Fallback wenn foto_url leer
- achievements: neue Badge-Kategorie "Wiki-Fotos" (bronze 1, silber 3, gold 10)
  mit wiki_fotos-Metrik in check_and_award und my_achievements
- Badge-Check + Push nach Foto-Approval
- wiki.js: Karten-Bild nutzt r.foto_url || r.user_foto
- wiki.js: Detail-Ansicht zeigt Community-Foto-Galerie (scrollbar, clickable)
- Dockerfile: breeds/gallery + breeds/submissions im Image anlegen
- SW by-v366, APP_VER 351
2026-04-25 09:53:24 +02:00
b608d5635f Admin: Kachel 'Fotos freizugeben' + pending_fotos in Stats-API, SW by-v365 2026-04-25 09:44:17 +02:00
034f7ef21f Moderation: Foto-Freigabe repariert (rasse_id join, delegate an wiki-API), SW by-v364 2026-04-25 09:41:56 +02:00
d603b7bae1 Wiki: Bildrechte-Bestätigung bei Foto-Einreichung (Checkbox + DB + Mod-Badge), SW by-v363 2026-04-25 09:35:06 +02:00
de73c7901e Wiki: Hunde-Silhouette als Placeholder für fehlende Rassenfotos (SW by-v362)
- _DOG_SILHOUETTE Phosphor-SVG als Modul-Konstante in wiki.js
- Karten-Fallback zeigt SVG statt UI.icon('dog')
- Detail-Ansicht zeigt 56px SVG + „Kein Foto verfügbar" wenn kein Foto
- CSS: wiki-breed-photo-fallback mit Gradient, neue wiki-detail-photo-placeholder-Klasse
- SW by-v362, APP_VER 347
2026-04-25 09:27:19 +02:00
2fed44fbd4 fetch_wiki_images: Commons File-Namespace-Suche entfernt
_commons_search() und deren Aufruf (Stufe 4+5) entfernt.
Nur WP pageimages DE/EN + Commons pageimages (exakter Treffer) bleiben.
urllib.parse Import entfernt.
2026-04-25 09:25:48 +02:00
26074a42db Scraper: Commons-Suche nur bei vollständigem Namensmatch im Dateinamen 2026-04-25 09:22:14 +02:00
fc4cfcf19b Scraper: fetch_wiki_images striktere Bildfilterung (kein PDF/Stadtfoto/Dokument) 2026-04-25 09:19:15 +02:00
93ea8a69fd Scraper: fetch_wiki_images mit Commons-Dateisuche (File-Namespace) 2026-04-25 09:17:40 +02:00
c3d33547c7 Wiki: sehr_gross Pill-CSS + Moderation Icon auf eye geändert 2026-04-25 08:59:19 +02:00
d0921a28e9 Admin-Wartung: obsolete Buttons entfernt, Enrichment-Status + Foto-Laden hinzugefügt
- Temperament→Deutsch-Button entfernt (0 englische Temperamente in DB)
- Gemma-Einträge-zurücksetzen entfernt (0 Gemma-Einträge, alle Claude Haiku)
- Neuer Button: Enrichment-Status (GET /api/admin/wiki/enrichment-status)
  zeigt Gesamt/Angereichert/Kein-Wiki/Ausstehend/Fotos/Modelle-Verteilung
- Neuer Button: Fotos laden (POST /api/admin/wiki/fetch-photos)
  führt fetch_wiki_images.py --limit 50 aus und zählt gespeicherte Fotos
- SW by-v361, APP_VER 346
2026-04-25 08:53:28 +02:00
0af3078a2a Breed Enricher: sqlite3.Row zu dict konvertieren in _enrich_one 2026-04-25 08:40:30 +02:00
77f6af8817 Breed-Enricher: verbesserte Wikipedia-Suche + retry_missed für ki_enriched=2
- _NAME_ALIASES-Dict mit 20 Rassen-Mappings (z.B. Zwergpinscher → Miniature Pinscher)
- exsentences=5 statt exintro=1 + Threshold 80 statt 150 Zeichen (fixiert Zwergpinscher, Spinone, Thai Bangkaew)
- Neue Fallback-Kette: direkt DE/EN → name_de → Aliasse → normalisierte Namen → opensearch DE/EN
- Neue Funktion retry_missed(limit) für ki_enriched=2 ohne DB-Reset
- CLI-Flags --retry-missed und --dry-run
2026-04-25 08:36:27 +02:00
5aba366b21 Deploy: SW by-v360, APP_VER 345 2026-04-25 08:23:45 +02:00
22225d5717 Pflege: Fell schneiden vs. trimmen + Tagebuch Medien-Button nach oben
- dogs.py: Pflegeart-Filter (trimmen/schneiden) anhand Rassen-Beschreibung
- dog-profile.js: Badge '✂️ Schneiden' / ' Trimmen' bei Fell-Kategorie
- diary.js: Fotos/Videos-Button direkt nach Textfeld (vor Ort und Meilenstein)
- ki.py: Standardmodell auf claude-sonnet-4-6 umgestellt
2026-04-25 08:21:49 +02:00
69f78219ae Scraper: fetch_wiki_images.py — Rassen-Fotos via Wikipedia pageimages API
Neues standalone-Script holt fehlende Fotos für wiki_rassen direkt
von Wikipedia (de → en Fallback) und Wikimedia Commons, ohne lokalen
Download — URL wird direkt in foto_url gespeichert.

CLI: --limit N, --dry-run, --model claude-sonnet-4-6
2026-04-25 08:20:39 +02:00
8d5c7a19b1 Admin: KI-Anfragen nach Quelle aufschlüsseln (cloud/local/luna)
- ki_daily_calls: PK auf (user_id, date, source) erweitert + Index; Migration
  baut Tabelle mit neuer Struktur neu auf, behält Altdaten als 'cloud'
- ki.py: return_source=True-Parameter gibt (text, 'cloud'|'local') zurück
- training.py: ki_source aus ki.complete() auslesen, in DB speichern
- social.py: _ki_complete_tracked() zählt Luna-Anfragen mit source='luna';
  alle Content-Endpoints (generate, evaluate, training-tip, breed-of-day,
  pflege-tipp) nutzen tracking-Variante
- admin.py: Stats aufgeteilt in ki_cloud/ki_local/ki_luna je heute+Monat
- admin.js: KI-Karte zeigt 9 Zeilen mit ☁️ Claude / 🖥️ LM Studio / 🌙 Luna
- SW by-v359, APP_VER 344
2026-04-25 08:20:29 +02:00
74b6c03bb3 Social: Modernes Design — Cards, Pill-Buttons, Shadows, SW by-v359 2026-04-25 08:19:45 +02:00
8ba8f4dfa3 Moderations-Panel: neue Seite /moderation für Mods und Admins
- Backend: routes/moderation.py mit GET /stats, /reports, /users, /fotos
  und PATCH-Endpoints für Ban/Unban und Foto-Review
- Frontend: pages/moderation.js mit 4 Tabs (Übersicht, Fotos, User, Forum)
- Sidebar-Eintrag (nur für Moderatoren/Admins sichtbar, gelb)
- Page in index.html registriert, pages-Objekt in app.js ergänzt
- Router in main.py eingebunden (/api/moderation)
- SW-Cache by-v357, app.js/ui.js/api.js auf v=94
2026-04-25 08:19:19 +02:00
d0abb6de9b PROJEKT.md: Stand 2026-04-24 Sprint 10 — Social Media Manager, Pflege-System, Breed-Enricher, SW by-v356 2026-04-24 21:02:51 +02:00
ba5547f993 Pflege-System: Pflegetipps im Hundeprofil + Rassen-Autocomplete
- GET /api/dogs/{id}/pflege: rassenspezifische Pflegetipps
- pflege_tipps DB-Tabelle (43 Tipps, 10 Kategorien) geseedet
- dogs.rasse_id für Wiki-Verknüpfung (Migration)
- Hundeprofil: Tipp des Tages + alle Tipps aufklappbar
- Hundeprofil-Edit: Rassen-Autocomplete mit Wiki-Match-Badge
- Social: Post-Bestätigung (Gepostet!-Button, Quick-Mark, Pending-Banner)
- Social: Pflegetipp-Button (allg. + rassenspezifisch)
- Social: Diversitäts-Check, Kategorie-Tagging
- Social: 104 Übungen, Übungsübersicht-Modal
- Admin: Social-Media-Tracking-Sektion
- SW by-v356, APP_VER 343
2026-04-24 20:56:47 +02:00
75615140c4 DB Migration: social_content fehlende Spalten (coaching, media_url, category, exercise_id) 2026-04-24 20:35:00 +02:00
548210b908 Social: 104 Übungen in 7 Kategorien + Übungsübersicht-Modal
Grundkommando(10) Tricks(18) Problemverhalten(12) Mental(8)
Körperpflege(7) Hundesport(6) Welpe-Basics(5) + erweitert auf 104 total
Modal zeigt alle Übungen mit Nutzungs-Counter, SW by-v350
2026-04-24 20:22:40 +02:00
1cb0c2df77 Social: Trainingstipp-Generator, Übungen in DB, 3 Stil-Varianten
- training_exercises Tabelle mit 13 Übungen aus App-Bibliothek
- POST /social/training-tip: Stil-Varianten tutorial/community/aspirational
- exercise_id in social_content für Wiederholungs-Tracking
- Admin-Stats: Social-Media-Sektion mit Status-Übersicht + letzte 10 Posts
- SW by-v349, APP_VER 336
2026-04-24 20:13:22 +02:00
ca0ce79815 social: UploadFile Import-Fix (ForwardRef-Fehler → 502) 2026-04-24 19:35:35 +02:00
0df6d569c1 Social Media Manager: Route, DB, KI-Prompts, Frontend, Rolle; SW by-v338 2026-04-24 19:13:30 +02:00
d90d4f1eeb breed_enricher: Wikipedia-grounded via Haiku, ki_source-Spalte, Gemma-Reset; SW by-v337 2026-04-24 18:43:31 +02:00
eb6eaea04e SW by-v336, APP_VER 323 — admin Qualitätsbewertungs-Button 2026-04-24 18:36:22 +02:00
fdca0a7ecc admin: Qualitätsbewertungs-Button mit Scores-Tabelle 2026-04-24 18:33:02 +02:00
eea1de6d95 ki: return_model-Flag + ki_model in wiki_rassen; Evaluator filtert Claude-Einträge raus 2026-04-24 18:29:23 +02:00
d80abf07e5 breed_evaluator: LLM-as-Judge Qualitätsbewertung via Claude Haiku 2026-04-24 18:27:15 +02:00
1c80481f42 ki: Port 11435, Modell gemma-4-31b-it (LM Studio 0.4.x) 2026-04-24 18:15:32 +02:00
15c696d409 requirements: openai 1.59.0→1.59.2 (korrekte Version) 2026-04-24 18:04:15 +02:00
6125027dcf requirements: openai 1.50→1.59 (Fix proxies-Fehler mit httpx 0.28) 2026-04-24 18:03:22 +02:00
af30ffcd42 ki: LM Studio auf Mac (10.47.11.70), Modell gemma-4-31b 2026-04-24 17:59:22 +02:00
228dc0170a breed_enricher: User-Agent für Wikipedia API (Fix 403) 2026-04-24 17:43:16 +02:00
28cad893d1 breed_enricher: Wikimedia-Foto-Fetch + alle Rassen in einem Rutsch (limit 2000)
- breed_enricher: _fetch_wikimedia_photo() (de/en Fallback via Wikipedia API)
- breed_enricher: foto_url nach KI-Anreicherung automatisch befüllen
- scheduler: Startup- und Nacht-Job auf limit=2000 (357 ausstehende Rassen)
- scheduler: Status-Report alle 2h statt 2×/Tag
- dogs.py: sitting_access → sitting_subscriptions (SQL-Fix)
2026-04-24 17:38:40 +02:00
988cffcbd4 Karte refresh(): _scheduleOsmLoad() aufrufen — OSM-Marker nach Seitenwechsel ohne Pan, SW by-v335 2026-04-24 11:19:40 +02:00
005552042d Karte: invalidateSize() in refresh() — leere Karte nach Seitenwechsel, SW by-v334 2026-04-24 11:07:22 +02:00
e0b4914e20 PROJEKT.md: Stand 2026-04-24, SW by-v333, Wetter/Badges/Anti-Cheat/Desktop-Tabs 2026-04-24 11:04:17 +02:00
9151c14306 Fix Karte-Legende Desktop: #page-map Spezifität (components.css Überschreibung), SW by-v333 2026-04-24 11:00:55 +02:00
c503737fb1 Desktop Tab-Grid: Gesundheit (5 Sp.), Admin (4 Sp.), Karte-Legende (8 Sp.), SW by-v332 2026-04-24 10:58:12 +02:00
7ac421fcf9 Routen-Validierung: >15 km/h Ø zählt nicht für Stats/Trophäen, SW by-v331 2026-04-24 09:46:15 +02:00
b5e4eab84d Push geo-filter: Giftköder-Alert nur im 30km-Radius, Standort via Alerts-Check gespeichert 2026-04-24 09:35:55 +02:00
9213b58d3c Fix App.checkNearbyAlerts Export, Karte refresh nach Meldung, Button 'Absenden', SW by-v330 2026-04-24 09:29:23 +02:00
5a755e4922 Burger-Badge via Alerts-Check, Alert-Linie stärker, Linie weg nach Erledigen, SW by-v329 2026-04-24 09:17:15 +02:00