163b942ea4
OSM: Fair-Use-Rate-Limit + User-Agent für Overpass-Anfragen
...
Semaphore 2→1 (nur 1 gleichzeitige Anfrage), 2s Mindestabstand,
User-Agent mit App-Name und Kontakt — Standard-Höflichkeit für
Community-Dienste wie kumi.systems.
2026-04-25 22:09:50 +02:00
92d583e661
OSM: Prewarm deaktiviert, CACHE_DAYS 14→90 — kein Overpass-Spam mehr
...
23.500 Overpass-Anfragen täglich haben die Server-IP geblockt (406).
Fix: OSM-Cache füllt sich nur noch on-demand wenn Nutzer die Karte benutzen.
CACHE_DAYS auf 90 erhöht damit selten besuchte Bereiche länger frisch bleiben.
2026-04-25 22:05:12 +02:00
91389b9a3f
Fix: Overpass-Fallback auf kumi.systems — overpass-api.de gibt 406 zurück
...
overpass-api.de und lz4.overpass-api.de blockieren die Server-IP mit 406.
OVERPASS_URLS-Liste mit Fallback: kumi → lz4 → overpass-api.de.
_fetch_overpass probiert jede Instanz, springt bei 4xx-Fehler zur nächsten.
2026-04-25 22:00:26 +02:00
e56183b642
Feature: Ratings, Lightbox, Forum-Standort, Notifications, Routen-Recording, Chat-Picker
...
- Bewertungssystem (ratings.py): Sterne für Sitter/Walks/Places/Routen
- Admin: Server-Log-Viewer + OSM-Cache-Statistiken
- Chat: "Neue Nachricht"-Button mit Freundesliste-Picker
- Forum: 5 neue Kategorien, Standorteingabe (locationPicker), Absende-Toast, Lightbox
- Freunde: Aktivitäts-Filter (Chips), Freundschaftsanfrage → In-App-Notification
- Sitter: locationPicker statt manuelle Koordinateneingabe + ratingStars
- Tagebuch: Bilder-Lightbox im Detail-View, iOS-Modal-Header-Fix (90svh)
- Routen: Start/Stopp-Button wechselt Zustand, nutzt Page_map.isRecording()
- Benachrichtigungen: Delete-Button sichtbar, typ-basierte Navigation, Toast-Feedback
- OSM: globales Semaphore + 429-Retry-Logic; Scheduler: München-Umland, täglich
- SW by-v225, APP_VER 202
2026-04-19 09:40:35 +02:00
6fcf841594
Sprint 14: Map-Fixes, City-Prewarm, Dog-Animation, Scan-Flash
...
Karte:
- Frankfurt-Fallback (Zoom 10→14 flyTo) mit _frankfurtTimer-Cancel
wenn echter Standort eintrifft
- OSM-Tile-Fetch parallelisiert (asyncio.Semaphore(3))
- Bounds-Fix: invalidateSize() + pad(0.15) vor getBounds()
- map-pin-slash Icon für gesperrten Standort
- Scan-Done-Flash: Statusbar-Pill grün bei 100%
- Schnüffelhund: outer div (by-wander X) + inner SVG (by-sniff Y)
für natürlichere zweiachsige Bewegung
Backend:
- City-Prewarm-Job: ~70 deutsche Großstädte beim Start (+90s) und
wöchentlich (So 01:00), Fortschritts-Mails alle 5h an ADMIN_EMAIL
- ADMIN_EMAIL Env-Var in .env.example dokumentiert
Bugfixes:
- Profil-Edit: /api/profile → /profile (doppelter Prefix)
- Friends: Mobile-Portrait-Layout (flex-wrap, overflow-x:hidden)
- Trainingspläne: Pills text-wrap (flex + white-space:normal)
2026-04-17 14:06:10 +02:00
ebe4ce20cf
Sprint 10: OSM-POI-Cache, Karten-Clustering, Routen-Redesign
...
Karte (map.js):
- OSM Overpass API: Restaurants, Tierärzte, Parkplätze, Bänke, Wasserstellen
- Leaflet.markercluster für alle OSM-Layer
- Standort-Dot mit GPS-Genauigkeitskreis, Wake-Lock bei Aufzeichnung
- Community-Pins setzen/löschen, Meldungen, Crosshair-Placement
- Layer-Sichtbarkeit in localStorage (by_map_visible_v1)
Routen (routes.js + routen.py):
- Komoot-Stil: SVG-Track-Preview, Foto-Upload, Nearby-POIs im Detail-Modal
- Neue Felder: is_public, hunde_tauglichkeit, foto_urls
- Rate-Endpoint (POST /api/routes/{id}/rate)
- Foto-Upload (POST /api/routes/{id}/photo)
- Fix: json_extract $[-1] → $[#-1] (SQLite-kompatibler Pfad für letztes Element)
Backend (osm.py, database.py, scheduler.py):
- /api/osm/pois: OSM-Overpass-Cache mit Tile-Logik (14 Tage TTL)
- /api/osm/user-poi: Community-Marker CRUD
- /api/osm/report: Marker als ungültig melden
- Neue Tabellen: osm_pois, osm_tiles, user_map_pois, osm_reports
- Giftköder-Archiv-Job (täglich 03:00, soft-delete nach Ablauf)
- Giftköder-Archiv-Job als APScheduler-CronJob
UI: Orte-Menüpunkt entfernt (in Karte integriert), APP_VER auf 62
2026-04-15 16:30:10 +02:00