Tagebuch-Wochenrückblick + 171 Hundezitate

Wochenrückblick (diary.js _loadPraise) merkt sich jetzt das Wegklicken pro
Kalenderwoche (localStorage by_diary_praise_dismissed) — kommt nicht mehr bei
jedem Öffnen. Lob-Text abwechslungsreich (scheduler.py): wöchentlich
rotierender KI-Fokus + Fallback-Varianten-Pool statt einem festen Satz,
prominente Wochenzahl raus.

WELT-Welt Tageszitat: _QUOTES von 31 auf 171 erweitert (web-recherchiert,
57% mit benannter Quelle statt vorher 29%) — Wiederholung erst nach ~5,7
Monaten statt monatlich.
This commit is contained in:
rene 2026-06-14 20:22:44 +02:00
parent e86d89f3d9
commit 51aad6cf1b
3 changed files with 180 additions and 6 deletions

View file

@ -989,6 +989,7 @@ async def _generate_praise_for_dog(dog: dict, user_id: int) -> str:
from datetime import date, timedelta
since = (date.today() - timedelta(days=7)).isoformat()
week_num = date.today().isocalendar()[1]
name = dog["name"]
rasse = dog.get("rasse") or "Hund"
@ -1029,16 +1030,30 @@ async def _generate_praise_for_dog(dog: dict, user_id: int) -> str:
else:
aktivitaet_text = ", ".join(aktivitaet_parts)
# W\u00f6chentlich rotierender Fokus \u2192 die KI klingt nicht jede Woche gleich.
_toene = [
"Betone die enge Verbundenheit zwischen {name} und dir.",
"Hebe die kleinen Abenteuer und besonderen Momente hervor.",
"W\u00fcrdige die sch\u00f6ne gemeinsame Routine und Verl\u00e4sslichkeit.",
"Feiere das gemeinsame Wachsen und die Fortschritte.",
"Betone Ruhe, Geborgenheit und Vertrauen.",
"Schreibe verspielt und mit einem Augenzwinkern.",
]
ton = _toene[week_num % len(_toene)].replace("{name}", name)
prompt = f"""Du bist ein warmer, wohlwollender Begleiter f\u00fcr Hundebesitzer. Schreibe eine kurze pers\u00f6nliche Lob-Nachricht (2-3 S\u00e4tze) f\u00fcr die vergangene Woche.
Hund: {name} ({rasse})
Letzte 7 Tage: {aktivitaet_text}
Dabei seit: {stats.get('weeks_total', 1)} Wochen
Fokus dieser Woche: {ton}
Regeln (unbedingt einhalten):
- Nur loben, NIEMALS Ratschl\u00e4ge geben oder auf Fehlendes hinweisen
- Sprich \u00fcber den Hund: "{name} hatte eine tolle Woche" \u2014 nicht \u00fcber den Besitzer
- Auch bei 0 Aktivit\u00e4ten: positive Formulierung (\u201eAuch ruhige Wochen geh\u00f6ren dazu\u201c)
- Variiere Einstieg und Wortwahl \u2014 klinge NICHT wie letzte Woche
- Erw\u00e4hne KEINE Wochenzahl und keine nackten Statistik-Zahlen
- Maximal 3 kurze S\u00e4tze
- Warm, pers\u00f6nlich, keine Floskeln
- Kein "Du solltest...", kein "Vergiss nicht...", keine Empfehlungen"""
@ -1051,11 +1066,24 @@ Regeln (unbedingt einhalten):
)
return text.strip()
except Exception:
# Fallback wenn KI nicht verfügbar
if aktivitaet_parts:
return f"{name} hatte eine aktive Woche \u2014 {aktivitaet_text}. Das ist toll! \U0001f43e"
else:
return f"Auch ruhige Wochen geh\u00f6ren dazu. {name} wei\u00df, dass du f\u00fcr ihn da bist. \U0001f43e"
# Fallback wenn KI nicht verfügbar — Varianten-Pool, deterministisch pro
# Woche+Hund gewählt, damit der Text nicht jede Woche identisch klingt.
aktiv_varianten = [
f"{name} hatte eine richtig aktive Woche — {aktivitaet_text}. Stark! 🐾",
f"Was für eine Woche, {name}! {aktivitaet_text} — das kann sich sehen lassen. 🌟",
f"{name} war diese Woche voll dabei: {aktivitaet_text}. Weiter so! 🐶",
f"Tolle Woche mit {name}{aktivitaet_text}. Ihr seid ein super Team! 🐾",
f"{aktivitaet_text} — dafür hat sich {name} eine extra Streicheleinheit verdient. ✨",
]
ruhig_varianten = [
f"Auch ruhige Wochen gehören dazu. {name} weiß, dass du für ihn da bist. 🐾",
f"Diese Woche war's gemütlich — und das ist völlig okay. {name} genießt die Zeit mit dir. 🌿",
f"Nicht jede Woche muss voll sein. {name} fühlt sich bei dir einfach wohl. ☀️",
f"Eine entspannte Woche mit {name} — manchmal ist genau das das Schönste. 🐾",
f"{name} und du — auch ohne großes Programm seid ihr ein eingespieltes Team. 🐶",
]
pool = aktiv_varianten if aktivitaet_parts else ruhig_varianten
return pool[(week_num + dog["id"]) % len(pool)]
# ------------------------------------------------------------------