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:
parent
dc9c0d2cc0
commit
57849515ea
10 changed files with 239 additions and 26 deletions
|
|
@ -392,6 +392,14 @@ def init_db():
|
|||
);
|
||||
CREATE INDEX IF NOT EXISTS idx_osm_contrib_user ON osm_contributions(user_id, status);
|
||||
|
||||
-- Pro-Freischaltungen aus OSM-Beiträgen (1 Zeile = 1 freigeschaltetes Jahr).
|
||||
-- Idempotenz: earned = confirmed//100; nur (earned - vorhandene Zeilen) neu gewähren.
|
||||
CREATE TABLE IF NOT EXISTS osm_pro_grants (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
||||
created_at TEXT NOT NULL DEFAULT (datetime('now'))
|
||||
);
|
||||
|
||||
-- VERLORENE HUNDE
|
||||
CREATE TABLE IF NOT EXISTS lost_dogs (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue