Tagesfoto-Cache validieren + bei Diary/Media-Löschung mit-bereinigen

Bug: daily_photo_cache zeigte auf gelöschte Tagebuch-Foto-URLs, weil
Löschen eines Eintrags oder einzelnen Medien-Items den Cache nicht
mit-bereinigte. Heim-Tab in der iOS-App lud dann 404 → kein Tagesbild.

Fix in dogs.py /welcome-dashboard:
- Bevor das Cache-Foto zurückgegeben wird, prüfen ob die URL noch in
  diary_media existiert. Wenn nicht: Cache-Eintrag löschen und neu
  wählen → selbstheilend für alte verwaiste Einträge.

Fix in diary.py:
- delete_diary: vor dem CASCADE-Delete von diary_media die URLs
  sammeln und alle daily_photo_cache-Zeilen darauf löschen.
- delete_media_item: gleicher Cleanup für die eine URL.

Cache ist klein (max 1 Eintrag pro Hund pro Tag) — Hygiene-Cleanup
ist günstig und macht das System defensiv.
This commit is contained in:
rene 2026-05-30 19:00:56 +02:00
parent f934560a12
commit d23d696745
7 changed files with 42 additions and 16 deletions

View file

@ -86,14 +86,14 @@
<title>Ban Yaro</title>
<!-- Theme + theme-color Statusleiste vor CSS setzen -->
<script src="/js/boot-early.js?v=1139"></script>
<script src="/js/boot-early.js?v=1140"></script>
<!-- CSS: Reihenfolge ist wichtig — ?v= zwingt Browser zur Neuladung -->
<link rel="stylesheet" href="/css/design-system.css?v=1139">
<link rel="stylesheet" href="/css/layout.css?v=1139">
<link rel="stylesheet" href="/css/components.css?v=1139">
<link rel="stylesheet" href="/css/utilities.css?v=1139">
<link rel="stylesheet" href="/css/lists.css?v=1139">
<link rel="stylesheet" href="/css/design-system.css?v=1140">
<link rel="stylesheet" href="/css/layout.css?v=1140">
<link rel="stylesheet" href="/css/components.css?v=1140">
<link rel="stylesheet" href="/css/utilities.css?v=1140">
<link rel="stylesheet" href="/css/lists.css?v=1140">
</head>
<body>
@ -617,11 +617,11 @@
<div id="modal-container"></div>
<!-- JS: Reihenfolge ist wichtig — erst Basis, dann Features -->
<script src="/js/api.js?v=1139"></script>
<script src="/js/ui.js?v=1139"></script>
<script src="/js/app.js?v=1139"></script>
<script src="/js/worlds.js?v=1139"></script>
<script src="/js/offline-indicator.js?v=1139"></script>
<script src="/js/api.js?v=1140"></script>
<script src="/js/ui.js?v=1140"></script>
<script src="/js/app.js?v=1140"></script>
<script src="/js/worlds.js?v=1140"></script>
<script src="/js/offline-indicator.js?v=1140"></script>
<!-- Feature-Seiten werden lazy geladen -->
@ -631,7 +631,7 @@
<!-- Boot: Offline-Banner + SW-Registration (extrahiert für CSP) -->
<script src="/js/boot.js?v=1139"></script>
<script src="/js/boot.js?v=1140"></script>
</body>