Sprint 15: Zeitzone-Fix, Gewichts-Sync, Öffnungszeiten, KI-Bericht, POI-Moderation — SW by-v432, APP_VER 411
- client_time: Browser-Lokalzeit bei allen Creates mitschicken (Tagebuch, Notizen, Forum, Verlorener Hund, Routen) — kein UTC-Versatz mehr bei Einträgen - Gewicht-Sync: health typ=gewicht schreibt dogs.gewicht_kg, einmalige Migration - Praxen: opening_hours + lat/lon/osm_id in tieraerzte-Tabelle, OSM-Nearby-Lookup, Öffnungszeiten in Karte und Detailansicht - KI-Gesundheitsbericht: alle 2 Wochen automatisch, ki_health_reports-Tabelle, Frontend-Banner mit Archiv (letzten 5 Berichte) - POI-Korrekturen: User schlägt Öffnungszeiten-Änderung vor, Moderatoren-Tab genehmigt/lehnt ab, user_edited-Flag schützt vor Overpass-Überschreibung - timeutils.py: safe_client_time() zentral für alle Routen
This commit is contained in:
parent
679dbdd862
commit
06bd8525ed
21 changed files with 724 additions and 75 deletions
|
|
@ -630,6 +630,7 @@ window.Page_routes = (() => {
|
|||
leine_empfohlen: 'leine_empfohlen' in fd,
|
||||
is_public: 'is_public' in fd,
|
||||
hunde_tauglichkeit: fd.hunde_tauglichkeit || 'sehr_gut',
|
||||
client_time: API.clientNow(),
|
||||
});
|
||||
UI.modal.close();
|
||||
UI.toast.success(`Route „${saved.name}" gespeichert!`);
|
||||
|
|
@ -2428,6 +2429,7 @@ window.Page_routes = (() => {
|
|||
leine_empfohlen: document.getElementById('ri-leine')?.checked,
|
||||
is_public: document.getElementById('ri-public')?.checked,
|
||||
hunde_tauglichkeit: _selPaw,
|
||||
client_time: API.clientNow(),
|
||||
});
|
||||
UI.modal.close();
|
||||
UI.toast.success('Route importiert! 🥾');
|
||||
|
|
@ -2551,7 +2553,7 @@ window.Page_routes = (() => {
|
|||
|
||||
ovl.querySelector('#rk-note-save')?.addEventListener('click', async () => {
|
||||
const text = ovl.querySelector('#rk-note-text')?.value?.trim() || '';
|
||||
const payload = { text, parent_label: parentLabel, location_name: locationName || null };
|
||||
const payload = { text, parent_label: parentLabel, location_name: locationName || null, client_time: API.clientNow() };
|
||||
try {
|
||||
if (existingNote?.id) {
|
||||
await API.notes.update(existingNote.id, payload);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue