Add real Audi CI battery/edit icons, manual km-correction for tire sets
Replaced the hand-drawn placeholder battery icon with the real Audi CI battery-12v-l/-s (user supplied the actual SVGs) next to "Ruhespannung", matching the existing poi-l/poi-s size-variant convention. Added a km-correction control to the Sommerräder/Winterräder tiles: a pencil icon (Audi CI edit-s) opens an inline field to manually correct the tire-set's accumulated km. The tricky part was persistence - configCarZuProfil() deliberately never writes km back (a stale browser copy could otherwise clobber a since-elapsed automatic increment), so this needed its own backend service, audi_dashboard_reifen_km_setzen, that overwrites only the stored counter and leaves referenz_odo_km alone - the existing odometer-delta tracking in reifenzaehler.py then continues accumulating from the corrected value on its own, no other backend change required. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -105,3 +105,37 @@ def audi_dashboard_reifen_wechseln(satz=None):
|
||||
return
|
||||
_fortschreiben_und_veroeffentlichen(_aktueller_km(), neuer_aktiv=satz)
|
||||
log.info(f"audi_dashboard: aktiver Reifensatz auf '{satz}' umgeschaltet")
|
||||
|
||||
|
||||
@service
|
||||
def audi_dashboard_reifen_km_setzen(satz=None, km=None):
|
||||
"""Manuelle Korrektur des gefahrenen Kilometerstands eines Reifensatzes
|
||||
(Editier-Symbol neben der km-Anzeige in der App). Überschreibt nur den
|
||||
gespeicherten Zähler selbst - referenz_odo_km (der zuletzt verarbeitete
|
||||
Fahrzeug-Kilometerstand) bleibt unverändert, damit die nächste
|
||||
Fortschreibung (kilometerstand_geaendert oben) weiterhin korrekt von hier
|
||||
aus weiterzählt, statt auf den neuen Wert einen erneuten Delta seit dem
|
||||
alten Stand aufzuschlagen. configCarZuProfil() im Frontend schreibt km nie
|
||||
selbst mit (siehe Kommentar dort) - genau deshalb braucht es diesen
|
||||
eigenen Service statt eines einfachen Profil-Überschreibens."""
|
||||
if satz not in ("sommer", "winter"):
|
||||
log.warning(f"audi_dashboard: ungültiger Reifensatz '{satz}'")
|
||||
return
|
||||
try:
|
||||
km = round(float(km), 1)
|
||||
except (TypeError, ValueError):
|
||||
log.warning(f"audi_dashboard: ungültiger km-Wert '{km}'")
|
||||
return
|
||||
if km < 0:
|
||||
log.warning(f"audi_dashboard: negativer km-Wert '{km}' abgelehnt")
|
||||
return
|
||||
p = profil.profil_lesen()
|
||||
if p is None:
|
||||
return
|
||||
reifen = p.setdefault("reifen", {})
|
||||
saetze = reifen.setdefault("saetze", {})
|
||||
saetze.setdefault(satz, {})["km"] = km
|
||||
profil.profil_schreiben(p)
|
||||
frontend_veroeffentlichung.profil_veroeffentlichen()
|
||||
_zustaende_veroeffentlichen(p)
|
||||
log.info(f"audi_dashboard: km-Stand '{satz}' manuell auf {km} gesetzt")
|
||||
|
||||
Reference in New Issue
Block a user