Verschlafene Kilometer am Fahrtanfang zurueckholen

Der Dongle wacht nach dem Motorstart erst nach 28 s bis 19,5 min auf; was in
der Zeit gefahren wird, zeichnet er nicht auf. Die Kilometer holt das
Screening jetzt aus dem Endkilometerstand der Vorgaengerin zurueck und haelt
in luecke_km fest, wie viel davon betroffen ist.

Keine Sperre der GNSS-Verfeinerung, sondern eine Zerlegung: verschlafener
Anfang in ganzen Kilometern, aufgezeichneter Rest metergenau. Sonst waere die
feine Zahl systematisch zu klein und wuerde bei kleinen Luecken die Korrektur
stillschweigend wieder kassieren.

Zwei Schutzgitter, beide am Bestand gelernt: LUECKE_MAX_KM = 50 gegen
Differenzen, die keine Weckverzoegerung mehr sein koennen, und ein Rueckfall,
wenn _vollstaendig() die Werte daraufhin verwerfen wuerde.

Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
2026-09-06 16:56:14 +02:00
co-authored by Claude Opus 5
parent 52fbf375d2
commit d6e27666a3
11 changed files with 361 additions and 3 deletions
@@ -1 +1 @@
{"version":"2026.9.6.1","sha256":"abd252933364319a0bf8069f258986b419a0d90e681da0ac51805f58af4123c6","bytes":378619,"gebaut":"2026-09-06T11:46:33Z"}
{"version":"2026.9.6.2","sha256":"9c9f09af98149f065e1f874c452d71f0ebb5232334a4740a8f2fe272e161a10b","bytes":378683,"gebaut":"2026-09-06T14:47:37Z"}
@@ -4639,6 +4639,7 @@ function vTrip(id) {
<div class="row"><dt>Ziel</dt><dd>${dezeitpunkt(new Date(t.ts_end))}<small data-fahrtort="ziel">${fahrtOrtText(t.end_address, t.end_lat, t.end_lon)}</small></dd></div>
<div class="row"><dt>Startkilometer</dt><dd>${t.odo_start != null ? de(t.odo_start) + " km" : "noch offen"}</dd></div>
<div class="row"><dt>Endkilometer</dt><dd>${t.odo_end != null ? de(t.odo_end) + " km" : "noch offen"}</dd></div>
${t.luecke_km ? `<div class="row"><dt>Nicht aufgezeichnet</dt><dd>${luecketext(t)}</dd></div>` : ""}
<div class="row"><dt>Dauer</dt><dd>${dauerText(t.duration_s)}</dd></div>
<div class="row"><dt>Ø Geschwindigkeit</dt><dd>${t.avg_speed_kmh != null ? de(t.avg_speed_kmh, 1) + " km/h" : "liegt nicht vor"}</dd></div>
<div class="row"><dt>Höchstgeschwindigkeit</dt><dd>${t.vmax_kmh != null ? de(t.vmax_kmh) + " km/h" : "liegt nicht vor"}</dd></div>
@@ -4649,6 +4650,18 @@ function vTrip(id) {
<button class="aktion loeschen" data-tripdel="${t.trip_id}">Fahrt löschen</button>`;
}
/* Der Dongle kommt aus dem Schlaf nur ueber seinen Beschleunigungssensor hoch
und braucht dafuer gemessene 28 s bis 19,5 min. Was in dieser Zeit gefahren
wird, zeichnet er nicht auf. Die Kilometer holt das Screening aus dem
Endkilometerstand der Vorgaengerin zurueck (verlauf.aufzeichnungsluecke_km),
die Route ist unwiederbringlich weg. Deshalb steht es hier: eine Fahrt, die
auf den ersten Metern keine Spur hat, soll nicht so aussehen, als waere sie
vollstaendig aufgezeichnet. */
function luecketext(t) {
const km = de(t.luecke_km) + " km";
return t.luecke_unsicher ? `${km} am Anfang · Zuordnung unsicher` : `${km} am Anfang`;
}
function quad(t, v) { return `<span class="label" style="margin-top:20px">${t}</span>
<div class="quad">${v.map((x) => `<div><div class="n">${x[0]}</div><div class="l">${x[1]}</div></div>`).join("")}</div>`; }
/* Der Kachelkopf traegt seit der Designpruefung 2026-08-30 denselben