Fix: Geburtstags-KI — Rate-Limit entfernt, KI_MODE=cloud auf Staging, bessere Fehlermeldungen (SW by-v781)
This commit is contained in:
parent
9ebd40aaae
commit
34fe59a672
7 changed files with 15 additions and 12 deletions
|
|
@ -327,7 +327,7 @@ MEDIA_DIR = os.getenv("MEDIA_DIR", "/data/media")
|
||||||
os.makedirs(MEDIA_DIR, exist_ok=True)
|
os.makedirs(MEDIA_DIR, exist_ok=True)
|
||||||
app.mount("/media", StaticFiles(directory=MEDIA_DIR), name="media")
|
app.mount("/media", StaticFiles(directory=MEDIA_DIR), name="media")
|
||||||
|
|
||||||
APP_VER = "780" # muss mit APP_VER in app.js übereinstimmen
|
APP_VER = "781" # muss mit APP_VER in app.js übereinstimmen
|
||||||
|
|
||||||
@app.get("/.well-known/assetlinks.json")
|
@app.get("/.well-known/assetlinks.json")
|
||||||
async def assetlinks():
|
async def assetlinks():
|
||||||
|
|
|
||||||
|
|
@ -195,9 +195,6 @@ async def ki_geburtstag(req: BirthdayRequest, request: Request,
|
||||||
if cached:
|
if cached:
|
||||||
return {"answer": cached["content"], "cached": True}
|
return {"answer": cached["content"], "cached": True}
|
||||||
|
|
||||||
# Rate-Limit: 1 Generierung pro Tag pro User
|
|
||||||
rl_check(request, max_requests=1, window_seconds=86400, key=f"ki_bday_{req.dog_id}_{mode}")
|
|
||||||
|
|
||||||
name = req.name.strip()[:40] or "deinen Hund"
|
name = req.name.strip()[:40] or "deinen Hund"
|
||||||
rasse = req.rasse or None
|
rasse = req.rasse or None
|
||||||
alter = req.alter
|
alter = req.alter
|
||||||
|
|
|
||||||
|
|
@ -575,10 +575,10 @@
|
||||||
<div id="modal-container"></div>
|
<div id="modal-container"></div>
|
||||||
|
|
||||||
<!-- JS: Reihenfolge ist wichtig — erst Basis, dann Features -->
|
<!-- JS: Reihenfolge ist wichtig — erst Basis, dann Features -->
|
||||||
<script src="/js/api.js?v=780"></script>
|
<script src="/js/api.js?v=781"></script>
|
||||||
<script src="/js/ui.js?v=780"></script>
|
<script src="/js/ui.js?v=781"></script>
|
||||||
<script src="/js/app.js?v=780"></script>
|
<script src="/js/app.js?v=781"></script>
|
||||||
<script src="/js/worlds.js?v=780"></script>
|
<script src="/js/worlds.js?v=781"></script>
|
||||||
|
|
||||||
<!-- Feature-Seiten werden lazy geladen -->
|
<!-- Feature-Seiten werden lazy geladen -->
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
Router, State-Management, Navigation, Initialisierung.
|
Router, State-Management, Navigation, Initialisierung.
|
||||||
============================================================ */
|
============================================================ */
|
||||||
|
|
||||||
const APP_VER = '780'; // ← bei jedem Deploy mit Frontend-Änderungen erhöhen
|
const APP_VER = '781'; // ← bei jedem Deploy mit Frontend-Änderungen erhöhen
|
||||||
const APP_VERSION = '1.5.0'; // ← semantische Version, wird bei make release gesetzt
|
const APP_VERSION = '1.5.0'; // ← semantische Version, wird bei make release gesetzt
|
||||||
const IS_STAGING = location.hostname === 'staging.banyaro.app';
|
const IS_STAGING = location.hostname === 'staging.banyaro.app';
|
||||||
// Cache-Bust-Parameter nach Update-Reload sofort entfernen
|
// Cache-Bust-Parameter nach Update-Reload sofort entfernen
|
||||||
|
|
|
||||||
|
|
@ -1471,9 +1471,14 @@ window.Worlds = (() => {
|
||||||
.replace(/\n/g, '<br>');
|
.replace(/\n/g, '<br>');
|
||||||
body.innerHTML = `<div style="padding-bottom:var(--space-2)">${html}</div>`;
|
body.innerHTML = `<div style="padding-bottom:var(--space-2)">${html}</div>`;
|
||||||
}
|
}
|
||||||
} catch {
|
} catch (err) {
|
||||||
const body = ov.querySelector('#bday-ki-body');
|
const body = ov.querySelector('#bday-ki-body');
|
||||||
if (body) body.innerHTML = '<div style="color:var(--c-text-secondary)">KI momentan nicht verfügbar 🐾</div>';
|
if (body) {
|
||||||
|
const msg = err?.status === 429
|
||||||
|
? 'Heute bereits abgerufen — morgen gibt es neue Ideen 🐾'
|
||||||
|
: 'KI momentan nicht verfügbar. Versuch es später nochmal 🐾';
|
||||||
|
body.innerHTML = `<div style="color:var(--c-text-secondary)">${msg}</div>`;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
Offline-Cache + Push Notifications + Tile-Cache
|
Offline-Cache + Push Notifications + Tile-Cache
|
||||||
============================================================ */
|
============================================================ */
|
||||||
|
|
||||||
const CACHE_VERSION = 'by-v780';
|
const CACHE_VERSION = 'by-v781';
|
||||||
const CACHE_STATIC = `${CACHE_VERSION}-static`;
|
const CACHE_STATIC = `${CACHE_VERSION}-static`;
|
||||||
const CACHE_TILES = 'ban-yaro-tiles-v1'; // bleibt über SW-Updates erhalten
|
const CACHE_TILES = 'ban-yaro-tiles-v1'; // bleibt über SW-Updates erhalten
|
||||||
const CACHE_API = 'ban-yaro-api-v1'; // API-Response-Cache
|
const CACHE_API = 'ban-yaro-api-v1'; // API-Response-Cache
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,7 @@ services:
|
||||||
- DB_PATH=/data/banyaro.db
|
- DB_PATH=/data/banyaro.db
|
||||||
- MEDIA_DIR=/prod-media
|
- MEDIA_DIR=/prod-media
|
||||||
- STAGING=true
|
- STAGING=true
|
||||||
|
- KI_MODE=cloud
|
||||||
- VAPID_PUBLIC_KEY=BMKbFAmpsqJ-eFef_4XJcYpuxPWqBNAoy9buMNnMSa6ijcPzltboHi_YccPKJrUD0isBez-vJIzAgjnLTWkzcC0
|
- VAPID_PUBLIC_KEY=BMKbFAmpsqJ-eFef_4XJcYpuxPWqBNAoy9buMNnMSa6ijcPzltboHi_YccPKJrUD0isBez-vJIzAgjnLTWkzcC0
|
||||||
- VAPID_PRIVATE_KEY=8PWa9vvwMqtqsJEJGcwmiLhR0_Yl7duVX3wmWiKS878
|
- VAPID_PRIVATE_KEY=8PWa9vvwMqtqsJEJGcwmiLhR0_Yl7duVX3wmWiKS878
|
||||||
- VAPID_CONTACT=mailto:admin@banyaro.app
|
- VAPID_CONTACT=mailto:admin@banyaro.app
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue