Feature+Fix: Referral-Admin, Pro-Gates, Karten-Layer, onDogChange, Staging-Media (SW by-v855)
Features: - Admin: Referral-Tab (Virality Factor, Top-Werber, letzte Einladungen) - Karte: Regenradar (RainViewer, zoom→7, color=4), Temperatur-Layer (OWM) mit Zahlen-Grid + Legende - Wetter-Chip: Umschwung-Warnung bei ≥40%-Sprung in Niederschlagswahrscheinlichkeit - Freundschaftsanfragen: Accept/Decline direkt in Notifications (kein Pro nötig) - Freunde-Seite für Standard-User freigeschaltet Pro-Gates: - KI-Trainer, Routenvorschläge, Regenradar, Temperatur-Layer jetzt Pro-Feature - Pro-Badge (P) auf Chips für Admins/Mods in allen Welten + Welten-einrichten - Oranger Banner auf Pro-Seiten für Admin/Mod/Manager Bugfixes: - onDogChange: uebungen.js (Cache leeren + _render), trainingsplaene.js (war leer) - robots.txt vereinfacht (nur Disallow, kein Allow-Durcheinander) - Hintergrund-Foto: Querformat-Filter korrigiert (kein Fallback auf Hochformat) - Staging Media: FileResponse mit korrektem MIME-Type, no-cache statt immutable - Staging Docker: MEDIA_DIR=/data/media + /prod-media:ro Fallback-Handler - Staging-Fix: Bild-Upload auf zweitem Hund (war Read-only file system)
This commit is contained in:
parent
2f021f54c2
commit
79fa5684b9
22 changed files with 570 additions and 58 deletions
|
|
@ -188,8 +188,7 @@ async def get_welcome_dashboard(dog_id: int, user=Depends(get_current_user)):
|
|||
if not dog:
|
||||
raise HTTPException(404, "Hund nicht gefunden.")
|
||||
|
||||
# Zufälliges Foto aus den letzten 100 Tagebuchbildern
|
||||
# Alle Querformat-Fotos (breiter als hoch) des Hundes, stabile Reihenfolge
|
||||
# Hintergrundfoto: Querformat-Bilder bevorzugt, tagesweise rotierend
|
||||
photos = conn.execute(
|
||||
"""SELECT dm.url FROM diary_media dm
|
||||
JOIN diary d ON d.id = dm.diary_id
|
||||
|
|
@ -198,12 +197,13 @@ async def get_welcome_dashboard(dog_id: int, user=Depends(get_current_user)):
|
|||
ORDER BY d.datum DESC, d.id DESC, dm.id ASC""",
|
||||
(dog_id,)
|
||||
).fetchall()
|
||||
# Fallback: alle Fotos ohne Maß-Filter (Bilder vor dem Backfill)
|
||||
# Fallback: Bilder ohne Dimensionsdaten (vor dem Backfill hochgeladen)
|
||||
if not photos:
|
||||
photos = conn.execute(
|
||||
"""SELECT dm.url FROM diary_media dm
|
||||
JOIN diary d ON d.id = dm.diary_id
|
||||
WHERE d.dog_id=? AND dm.media_type='image'
|
||||
AND dm.img_width IS NULL
|
||||
ORDER BY d.datum DESC, d.id DESC, dm.id ASC""",
|
||||
(dog_id,)
|
||||
).fetchall()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue