Fix: ki_health_reports ALTER TABLE user_id Migration, INSERT try/catch, Bericht immer zurückgeben (SW by-v807)
This commit is contained in:
parent
0b06669635
commit
891e11df65
6 changed files with 24 additions and 16 deletions
|
|
@ -1236,11 +1236,16 @@ def _migrate(conn_factory):
|
||||||
CREATE TABLE IF NOT EXISTS ki_health_reports (
|
CREATE TABLE IF NOT EXISTS ki_health_reports (
|
||||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||||
dog_id INTEGER NOT NULL REFERENCES dogs(id) ON DELETE CASCADE,
|
dog_id INTEGER NOT NULL REFERENCES dogs(id) ON DELETE CASCADE,
|
||||||
user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
user_id INTEGER REFERENCES users(id) ON DELETE CASCADE,
|
||||||
bericht TEXT NOT NULL,
|
bericht TEXT NOT NULL,
|
||||||
erstellt_at TEXT NOT NULL DEFAULT (datetime('now'))
|
erstellt_at TEXT NOT NULL DEFAULT (datetime('now'))
|
||||||
)
|
)
|
||||||
""")
|
""")
|
||||||
|
# user_id nachträglich ergänzen falls Tabelle ohne diese Spalte erstellt wurde
|
||||||
|
try:
|
||||||
|
conn.execute("ALTER TABLE ki_health_reports ADD COLUMN user_id INTEGER REFERENCES users(id) ON DELETE CASCADE")
|
||||||
|
except Exception:
|
||||||
|
pass # Spalte existiert bereits
|
||||||
conn.execute("""
|
conn.execute("""
|
||||||
CREATE INDEX IF NOT EXISTS idx_ki_health_reports_dog
|
CREATE INDEX IF NOT EXISTS idx_ki_health_reports_dog
|
||||||
ON ki_health_reports(dog_id, erstellt_at DESC)
|
ON ki_health_reports(dog_id, erstellt_at DESC)
|
||||||
|
|
|
||||||
|
|
@ -341,7 +341,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 = "806" # muss mit APP_VER in app.js übereinstimmen
|
APP_VER = "807" # 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():
|
||||||
|
|
|
||||||
|
|
@ -454,11 +454,14 @@ async def ki_zusammenfassung(dog_id: int, user=Depends(get_current_user)):
|
||||||
user_is_premium=bool(user.get("is_premium")),
|
user_is_premium=bool(user.get("is_premium")),
|
||||||
user_id=user["id"],
|
user_id=user["id"],
|
||||||
)
|
)
|
||||||
with db() as conn:
|
try:
|
||||||
conn.execute(
|
with db() as conn:
|
||||||
"INSERT INTO ki_health_reports (dog_id, user_id, bericht) VALUES (?,?,?)",
|
conn.execute(
|
||||||
(dog_id, user["id"], result)
|
"INSERT INTO ki_health_reports (dog_id, user_id, bericht) VALUES (?,?,?)",
|
||||||
)
|
(dog_id, user["id"], result)
|
||||||
|
)
|
||||||
|
except Exception as e:
|
||||||
|
logger.warning(f"KI-Bericht konnte nicht gespeichert werden: {e}")
|
||||||
return {"zusammenfassung": result}
|
return {"zusammenfassung": result}
|
||||||
except KIPremiumRequired as e:
|
except KIPremiumRequired as e:
|
||||||
raise HTTPException(402, str(e))
|
raise HTTPException(402, str(e))
|
||||||
|
|
|
||||||
|
|
@ -96,9 +96,9 @@
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<!-- CSS: Reihenfolge ist wichtig — ?v= zwingt Browser zur Neuladung -->
|
<!-- CSS: Reihenfolge ist wichtig — ?v= zwingt Browser zur Neuladung -->
|
||||||
<link rel="stylesheet" href="/css/design-system.css?v=806">
|
<link rel="stylesheet" href="/css/design-system.css?v=807">
|
||||||
<link rel="stylesheet" href="/css/layout.css?v=806">
|
<link rel="stylesheet" href="/css/layout.css?v=807">
|
||||||
<link rel="stylesheet" href="/css/components.css?v=806">
|
<link rel="stylesheet" href="/css/components.css?v=807">
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
|
||||||
|
|
@ -578,10 +578,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=806"></script>
|
<script src="/js/api.js?v=807"></script>
|
||||||
<script src="/js/ui.js?v=806"></script>
|
<script src="/js/ui.js?v=807"></script>
|
||||||
<script src="/js/app.js?v=806"></script>
|
<script src="/js/app.js?v=807"></script>
|
||||||
<script src="/js/worlds.js?v=806"></script>
|
<script src="/js/worlds.js?v=807"></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 = '806'; // ← bei jedem Deploy mit Frontend-Änderungen erhöhen
|
const APP_VER = '807'; // ← 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
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
Offline-Cache + Push Notifications + Tile-Cache
|
Offline-Cache + Push Notifications + Tile-Cache
|
||||||
============================================================ */
|
============================================================ */
|
||||||
|
|
||||||
const CACHE_VERSION = 'by-v806';
|
const CACHE_VERSION = 'by-v807';
|
||||||
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
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue