Audit, zweite Runde: der Knopf schrieb ein erfundenes Ende (2026.9.3.14)
_letztes_lebenszeichen() fiel auf "jetzt" zurueck, sobald verlauf_lesen() eine leere Liste lieferte - und die bedeutet sowohl "nichts aufgezeichnet" als auch "nicht lesbar". Am 03.09. trat der zweite Fall ein: der Knopf traf einen Neustart, der recorder war noch nicht bereit, die Abfrage lief 2:47 und kam leer zurueck. Die Fahrt bekam 18:43 statt 17:59 als Ende, 74 Minuten statt 30. Drei Quellen in fester Reihenfolge statt einer: Aufzeichnung, dann hass.states (last_reported/last_updated - weiss dasselbe ohne Datenbank), dann "jetzt", und das nur noch mit Warnung. Vier Regressionstests, drei davon gegen den alten Stand nachweislich rot. Dazu aus der Bestandspruefung: odometer_km liegt in drei alten Tankvorgaengen als Zeichenkette vor, ablage.distanz_seit_letzter_tankung() rechnete damit float - str. Laeuft jetzt durch als_kilometerstand(). Der Eingang war schon zu; das ist Altbestand. Und acht Dienste hatten keinen Klarnamen in translations/de.json - jetzt 28 Dienste, 28 Klarnamen. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -325,9 +325,22 @@ class Ablage:
|
||||
if not alle:
|
||||
return None
|
||||
letzter = max(alle, key=lambda t: t.get("ts") or "")
|
||||
if letzter.get("odometer_km") is None:
|
||||
# Durch als_kilometerstand(), nicht direkt: im Bestand liegen
|
||||
# Tankvorgaenge mit odometer_km als ZEICHENKETTE ("50250") aus einer
|
||||
# frueheren Fassung, und float - str waere hier ein TypeError. Der
|
||||
# Eingang ist inzwischen zu (jede Schreibstelle normalisiert), der
|
||||
# Altbestand aber bleibt - und dieselbe Funktion faengt gleich die 0
|
||||
# und negative Werte mit ab.
|
||||
#
|
||||
# Funktionslokal importiert: verlauf.py zieht das recorder-Modul mit,
|
||||
# und diese Datei ist sonst reine Datei-E/A. Kein Zyklus - verlauf.py
|
||||
# hat selbst keine lokalen Importe.
|
||||
from .verlauf import als_kilometerstand
|
||||
|
||||
vorher = als_kilometerstand(letzter.get("odometer_km"))
|
||||
if vorher is None:
|
||||
return None
|
||||
return round(aktueller_km - letzter["odometer_km"], 1)
|
||||
return round(aktueller_km - vorher, 1)
|
||||
|
||||
# ------------------------------------------------------ Batteriespannung
|
||||
|
||||
|
||||
Reference in New Issue
Block a user