Feature: KI-Jahresberichte speichern + Archiv + Download — SW by-v505, APP_VER 482

This commit is contained in:
rene 2026-04-29 17:03:49 +02:00
parent b4de0aa27c
commit 9832cd24d8
6 changed files with 146 additions and 17 deletions

View file

@ -462,7 +462,45 @@ Zeitraum: letzte 2 Jahre (bis {date.today().isoformat()})
requires_premium=False,
user_id=user["id"],
)
return {"text": text}
except Exception as e:
logger.warning(f"KI nicht verfügbar: {e}")
return {"text": _FALLBACK}
text = _FALLBACK
# Bericht speichern
jahr = date.today().year
with db() as conn:
bp2 = conn.execute("SELECT id FROM breeder_profiles WHERE user_id=?", (user["id"],)).fetchone()
if bp2:
conn.execute(
"INSERT INTO breeder_jahresberichte (user_id, breeder_id, jahr, text) VALUES (?,?,?,?)",
(user["id"], bp2["id"], jahr, text)
)
saved_id = conn.execute("SELECT last_insert_rowid()").fetchone()[0]
else:
saved_id = None
return {"text": text, "saved_id": saved_id, "jahr": jahr}
# GET gespeicherte Berichte
# ------------------------------------------------------------------
@router.get("/zucht-ki/jahresbericht")
async def jahresbericht_list(user=Depends(_require_breeder)):
with db() as conn:
rows = conn.execute(
"SELECT id, jahr, created_at FROM breeder_jahresberichte WHERE user_id=? ORDER BY created_at DESC LIMIT 20",
(user["id"],)
).fetchall()
return [{"id": r["id"], "jahr": r["jahr"], "created_at": r["created_at"]} for r in rows]
@router.get("/zucht-ki/jahresbericht/{bericht_id}")
async def jahresbericht_get(bericht_id: int, user=Depends(_require_breeder)):
with db() as conn:
row = conn.execute(
"SELECT id, jahr, text, created_at FROM breeder_jahresberichte WHERE id=? AND user_id=?",
(bericht_id, user["id"])
).fetchone()
if not row:
raise HTTPException(404, "Bericht nicht gefunden.")
return dict(row)