Ortsnamen aus dem Backend, Verbrauchsfaktor aus dem Tankbeleg, Radzaehler ueber Fahrten

Ortsauflösung serverseitig (geokodierung.py): der Ort steht jetzt in der Fahrt
statt im Zwischenspeicher jedes Geräts. Beide Oberflächen fragen nichts mehr ab.

Verbrauchskorrektur (verbrauchskorrektur.py): Faktor = Beleg-Liter / Summe der
Einzelfahrten, voll zu voll. Statt einer Schranke am Faktor wird der Nenner
geprüft - decken die erkannten Fahrten 90-110 % der Tacho-Spanne ab? Ausgelöst
beim Schreiben eines Tankvorgangs, nicht erst bei der nächsten Fahrt.

Radzähler: summiert die Fahrten des montierten Satzes statt Tacho-Deltas. Der
alte Weg hatte Fahrzeugwechsel als gefahrene Strecke verbucht (375.962 km bei
einem Tacho von 61.823).

Null heißt unbekannt: ein Kilometerstand von 0 oder ein leeres Feld werden zu
None normalisiert, statt an sechs Lesestellen als "Tachostand null" zu gelten.
Momentanwerte der Sensoren gelten nur für einen Tankvorgang von jetzt.

Oberfläche, beide Codebasen: Wertespalte der Fahrtenliste ausgerichtet, Ort ->
Ort in "Zuletzt", "Räder" statt "Reifen", "Termin vereinbart" entfernt,
Markenlogo 20 % größer, Übersicht-Symbol auf volle Rasterbreite.

Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
2026-09-02 11:28:37 +02:00
co-authored by Claude Opus 5
parent 78a8017e95
commit 2af5c469d6
27 changed files with 1575 additions and 352 deletions
@@ -235,6 +235,10 @@ async def _fahrten_importieren(k: Koordinator, verlaeufe: dict) -> dict:
odo_start = odo_end = None
durchschnitt = None
# Bewusst OHNE Radsatz: der Rueckblick rekonstruiert Vergangenes, und
# das steckt im gespeicherten Radstand laengst drin. Wuerde er hier
# stempeln, schriebe ein erneuter Import dieselben Kilometer ein
# zweites Mal auf die Raeder.
fahrt = leere_fahrt(f_start, f_ende, "import")
fahrt.update({
"distance_km": distanz,
@@ -517,7 +521,7 @@ async def importieren(k: Koordinator, start: object, ende: object) -> None:
batterie = await _batterie_importieren(k, verlaeufe)
await k.fahrten_veroeffentlichen()
await k.tankvorgaenge_veroeffentlichen()
await k.tankvorgang_nachbereiten()
await k.batterieverlauf_veroeffentlichen()
ergebnis = {