From 6c9de35426ff08e7089473fc04fcf3b26d0f8740 Mon Sep 17 00:00:00 2001 From: Davide Scaini Date: Wed, 13 May 2026 00:56:04 +0200 Subject: [PATCH] Enforce 500 m minimum segment length in UI and API --- bincio/serve/server.py | 4 ++-- site/src/components/SegmentCreate.svelte | 5 ++++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/bincio/serve/server.py b/bincio/serve/server.py index e3eb32c..1e20b14 100644 --- a/bincio/serve/server.py +++ b/bincio/serve/server.py @@ -2445,8 +2445,8 @@ async def create_segment( user = _require_user(bincio_session) if len(body.polyline) < 2: raise HTTPException(400, "polyline must have at least 2 points") - if body.distance_m <= 0: - raise HTTPException(400, "distance_m must be positive") + if body.distance_m < 500: + raise HTTPException(400, "segment must be at least 500 m long") lats = [p[0] for p in body.polyline] lons = [p[1] for p in body.polyline] diff --git a/site/src/components/SegmentCreate.svelte b/site/src/components/SegmentCreate.svelte index 8781828..a1edb03 100644 --- a/site/src/components/SegmentCreate.svelte +++ b/site/src/components/SegmentCreate.svelte @@ -53,7 +53,7 @@ $: endPct = maxIdx > 0 ? (endIdx / maxIdx) * 100 : 100; $: selectedPolyline = gpsPoints.slice(startIdx, endIdx + 1); $: selectedDistance = polylineDistance(selectedPolyline); - $: canSave = segName.trim().length > 0 && selectedPolyline.length >= 2 && !saving; + $: canSave = segName.trim().length > 0 && selectedPolyline.length >= 2 && selectedDistance >= 500 && !saving; // ── Init ────────────────────────────────────────────────────────────────── onMount(async () => { @@ -379,6 +379,9 @@

Selected: {formatDistance(selectedDistance)} ({selectedPolyline.length} points) + {#if selectedDistance < 500} + — minimum 500 m + {/if}