OSM-Beiträge: Map-Button (dog=yes), Changeset-Upload, Confirm/Pro-Job

- Map-Popup: "Hund war willkommen"-Button (dog=yes) für Restaurant/Hotel/
  Shop/Tierarzt/Hundesalon → POST /osm-contrib/dog-friendly.
- OSM-Changeset-Upload (write_api): Element holen (node/way) → dog=yes →
  Changeset create/upload/close; idempotent; best-effort beim Tap.
- OSM-Endpunkte konfigurierbar (OSM_OAUTH_BASE/OSM_API_BASE) — Staging gegen
  Dev-Sandbox, KEINE echten Edits auf Produktiv-OSM.
- Scheduler-Job (täglich 03:40): Pending-Retry + Revert-Überleben (7 Tage) →
  confirmed/rejected; Pro-Freischaltung (100 confirmed = 1 Jahr, idempotent via
  osm_pro_grants). HINWEIS: is_premium/subscription direkt gesetzt — vor Prod
  mit Billing abgleichen.
- Native Attestierung/Sensoren: bewusst NICHT (iOS-App-Thema, nicht PWA).
This commit is contained in:
rene 2026-06-03 21:40:50 +02:00
parent dc9c0d2cc0
commit 57849515ea
10 changed files with 239 additions and 26 deletions

View file

@ -86,14 +86,14 @@
<title>Ban Yaro</title>
<!-- Theme + theme-color Statusleiste vor CSS setzen -->
<script src="/js/boot-early.js?v=1156"></script>
<script src="/js/boot-early.js?v=1157"></script>
<!-- CSS: Reihenfolge ist wichtig — ?v= zwingt Browser zur Neuladung -->
<link rel="stylesheet" href="/css/design-system.css?v=1156">
<link rel="stylesheet" href="/css/layout.css?v=1156">
<link rel="stylesheet" href="/css/components.css?v=1156">
<link rel="stylesheet" href="/css/utilities.css?v=1156">
<link rel="stylesheet" href="/css/lists.css?v=1156">
<link rel="stylesheet" href="/css/design-system.css?v=1157">
<link rel="stylesheet" href="/css/layout.css?v=1157">
<link rel="stylesheet" href="/css/components.css?v=1157">
<link rel="stylesheet" href="/css/utilities.css?v=1157">
<link rel="stylesheet" href="/css/lists.css?v=1157">
</head>
<body>
@ -617,11 +617,11 @@
<div id="modal-container"></div>
<!-- JS: Reihenfolge ist wichtig — erst Basis, dann Features -->
<script src="/js/api.js?v=1156"></script>
<script src="/js/ui.js?v=1156"></script>
<script src="/js/app.js?v=1156"></script>
<script src="/js/worlds.js?v=1156"></script>
<script src="/js/offline-indicator.js?v=1156"></script>
<script src="/js/api.js?v=1157"></script>
<script src="/js/ui.js?v=1157"></script>
<script src="/js/app.js?v=1157"></script>
<script src="/js/worlds.js?v=1157"></script>
<script src="/js/offline-indicator.js?v=1157"></script>
<!-- Feature-Seiten werden lazy geladen -->
@ -631,7 +631,7 @@
<!-- Boot: Offline-Banner + SW-Registration (extrahiert für CSP) -->
<script src="/js/boot.js?v=1156"></script>
<script src="/js/boot.js?v=1157"></script>
</body>