Commit graph

287 commits

Author SHA1 Message Date
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
fc7d743153 Badge-System: personal/general Split, Punkte ohne Zahl, SW by-v328 2026-04-24 08:39:41 +02:00
0a3ad2207e Badges: Chat-Punkt am Avatar, Notif-Punkt am Burger, Aktuelles aus Sidebar, SW by-v327 2026-04-24 08:33:32 +02:00
546551a8db Zecken-Icon neu: großer Körper, kurze Beine, display:inline fix, SW by-v326 2026-04-24 08:20:25 +02:00
acd93e83e6 Zecken-Icon ohne Dreieck, kein Text, Statusleiste einzeilig (nowrap), SW by-v325 2026-04-24 08:17:48 +02:00
78d0f4289a Zecken-Icon: SVG Warndreieck mit Zecken-Silhouette (Phosphor-Stil), SW by-v324 2026-04-24 08:14:00 +02:00
544307e443 Wetter: Regenwahrscheinlichkeit im Chip, SW by-v323 2026-04-24 08:08:20 +02:00
d72ee6f89f Fix Wetter-API-Pfad (/api/api/ → /api/), API.weather.get(), SW by-v322 2026-04-24 08:05:44 +02:00
d32b802649 Wetter in Statusleiste (war hinter Legende versteckt), SW by-v321 2026-04-24 08:03:13 +02:00
0461f936ce Wetter-Chip auf Karte + Bugfix private Routen zählen für km-Stats
- GET /api/weather?lat=&lon= (Open-Meteo, 30-min TTL-Cache)
- Zecken-Warnung regelbasiert: März–Okt + Temp > 7°C
- Karte: Wetterchip oben rechts nach GPS-Fix
- stats.py + achievements.py: is_public-Filter entfernt —
  private Routen zählen jetzt für eigene km/Achievements
- SW by-v320, APP_VER 308
2026-04-24 07:59:15 +02:00
43d33c0fd1 SSH-Port DS: 22 → 4711 2026-04-24 07:39:47 +02:00
d13a23d817 PROJEKT.md: Stand 2026-04-23 final, Security + SW by-v319 2026-04-23 19:21:31 +02:00