banyaro/backend/routes/praise.py
rene 180de32e57 Session 2026-04-21: SEO, Wiki-Anreicherung, Training, Lober
SEO & Crawler:
- robots.txt, llms.txt, sitemap.xml (508 Seiten bei Google)
- SSR-Seiten: /info, /wiki/rassen, /wiki/rasse/{slug}, /knigge
- Open Graph, JSON-LD, Breadcrumbs in index.html

Navigation:
- Training unter "Mein Hund", Wissen collapsible
- Welcome-Seite und Landing-Page auf 5-Gruppen-Struktur

Wiki:
- KI-Anreicherung (Claude API): beschreibung, vorkommen_de, Steckbrief
- "So einen hab ich" / Züchter-Verzeichnis
- Scheduler: 50 Rassen beim Start, 20/Nacht

Training:
- Session-Logging (Erfolgsquote, Stimmung, Zufriedenheit)
- Virtueller KI-Trainer (6h-Cache)
- Trainingskalender (Habit-Tracker)
- Top-Training → automatischer Tagebucheintrag
- Gamification ohne Druck: Badges, Streak, Stats

Fortschritts-Lober:
- Jeden Montag 09:00: Claude schreibt Lob-Text pro Hund
- Push + Karte im Tagebuch

Monitoring:
- 4× täglich Status-Mail mit Scheduler-Status + Wiki-Fortschritt
2026-04-21 19:38:20 +02:00

35 lines
1.2 KiB
Python

"""BAN YARO — Fortschritts-Lober"""
from fastapi import APIRouter, Depends, Query
from auth import get_current_user
from database import db
from datetime import date
router = APIRouter()
def _current_week_key():
d = date.today()
return f"{d.isocalendar()[0]}-W{d.isocalendar()[1]:02d}"
@router.get("/current")
async def get_current_praise(dog_id: int = Query(...), user=Depends(get_current_user)):
"""Gibt den Lob-Text der aktuellen Woche zurück."""
week_key = _current_week_key()
with db() as conn:
# Sicherheitscheck: Hund gehört dem User?
dog = conn.execute(
"""SELECT d.id, d.name FROM dogs d
LEFT JOIN dog_shares ds ON ds.dog_id=d.id AND ds.shared_with_id=?
WHERE d.id=? AND (d.user_id=? OR ds.id IS NOT NULL)""",
(user["id"], dog_id, user["id"])
).fetchone()
if not dog:
return {"praise": None}
row = conn.execute(
"SELECT praise_text, generated_at FROM weekly_praise WHERE dog_id=? AND week_key=?",
(dog_id, week_key)
).fetchone()
if not row:
return {"praise": None, "week_key": week_key}
return {"praise": row["praise_text"], "week_key": week_key, "generated_at": row["generated_at"]}