Parity-Regel: Uebersicht-Service-Block in companion-app portiert

Nutzer stellte klar: Panel und companion-app sollen immer denselben
funktionalen Stand haben, auch wenn eine Anfrage nur das Panel nennt -
das ist reiner Testkomfort (Docker-Instanz laesst sich am schnellsten
ansehen), keine Scope-Entscheidung. Regel als verbindlicher Absatz in
AGENTS.md verankert, direkt unter der bestehenden Maintenance-Regel.

Erste Anwendung im selben Zug: die eben im Panel gebaute
"Naechster Service"-Kachel nach companion-app/ portiert.

- daten/service.ts: neues naechsterService() als Gegenstueck zu
  naechsterTermin() im Panel - waehlt ueber Oelwechsel-/Inspektions-
  Prognose und die von Hand gepflegte Hauptuntersuchung hinweg den
  zeitlich naechsten Termin. bisText() liefert denselben Artikel wie
  ART_BIS im Panel ("bis zum Oelwechsel" / "bis zur Inspektion").
- screens/Uebersicht.tsx: die bisherigen Kacheln "Reichweite"/
  "Kilometerstand" nebeneinander plus eine separate "Service"-Kachel
  mit Werteliste weichen einer Reichweiten-Kachel plus einer
  Service-Kachel mit .dm-serviceblock (Knopf, nur der obere Teil) und
  .dm-servicezeile (reine Anzeige) darunter - dieselbe Control/Content-
  Trennung wie im Panel.
- stile/screens.css: .dm-serviceblock/.dm-servicezeile ergaenzt.

Tests: 4 neue in service.test.ts (naechsterService waehlt das frueher
faellige Datum, nimmt die Hauptuntersuchung auf, liefert nichts ohne
Servicebuch/HU, bisText-Artikel je Art), 1 neuer in screens.test.tsx,
der mit einem vi.fn() als geheZu wirklich belegt, dass ein Klick auf
den Serviceblock navigiert und ein Klick auf die Kilometerstand-Zeile
es nicht tut - dafuer bekam zeige() in screens.test.tsx erst einen
injizierbaren geheZu-Parameter (vorher hart auf () => {} verdrahtet).

npm run typecheck sauber, npm run test 100/100 (von 95), npm run build
erfolgreich.

Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
2026-08-17 20:44:31 +02:00
co-authored by Claude Opus 5
parent 600c92fd0f
commit 2848b5286f
6 changed files with 256 additions and 62 deletions
+44
View File
@@ -185,6 +185,50 @@
padding: var(--sp-4) var(--sp-4) var(--sp-5);
}
/* Übersicht: "Nächster Service" als tippbare Kennzahl innerhalb der Kachel,
darunter der Kilometerstand als ruhige Wertezeile. Nur der obere Teil ist
ein Knopf, damit "differentiate controls from content" (Apple HIG) gilt -
deckungsgleich mit .serviceblock/.servicezeile im Panel
(audi-dashboard.css). */
.dm-serviceblock {
position: relative;
display: block;
width: 100%;
border: 0;
background: none;
padding: 0;
margin: 0;
font: inherit;
text-align: left;
color: inherit;
cursor: pointer;
}
.dm-serviceblock:active {
opacity: 0.55;
}
.dm-serviceblock__chevron {
position: absolute;
top: 2px;
right: 0;
font-size: 15px;
line-height: 1;
color: var(--fg3);
}
.dm-servicezeile {
display: flex;
align-items: baseline;
justify-content: space-between;
gap: var(--sp-4);
margin-top: var(--sp-3);
padding-top: 13px;
border-top: 1px solid var(--line);
}
.dm-servicezeile__k {
font-size: 13px;
font-weight: 300;
color: var(--fg2);
}
.dm-tanktext {
display: flex;
justify-content: space-between;