Service-Termine: CI-Icons statt Wortlaut, Anstehende-Termine neu gegliedert
Naechster-Service-Kachel (Uebersicht): das "bis zum Oelwechsel"/
"bis zur Inspektion" vor der Kennzahl entfaellt zugunsten der echten
Audi-CI-Icons oil-change/inspection (vom Nutzer als SVG geliefert,
verbatim uebernommen wie die uebrigen CI-Icons). Hauptuntersuchung hat
kein eigenes Icon (kein Restkilometer-Ziel) und zeigt stattdessen ihr
Datum in derselben 40px-Groesse wie die km-Zahlen, mit dem Wort
"Hauptuntersuchung" darunter statt "bis zur Hauptuntersuchung" - vorher
war das Datumsfeld kleiner (30px), um Umbruch zu vermeiden; am
laufenden Panel nachgemessen, dass 40px keinen Umbruch verursacht.
"vsl." wird ausgeschrieben zu "voraussichtlich am". bisText()/ART_BIS
(Panel) und bisText()/BIS_TEXT (companion-app) wurden durch die
Aenderung ueberfluessig und als Orphans entfernt.
Anstehende-Termine-Box (Service-Seite): aus der dt/dd-Liste werden drei
sichtbar getrennte Bloecke (Kopfzeile mit Icon + Name + optionalem
Werkstatt-Chip, optionale Herstellervorgabe-Zeile, grosse Kennzahl,
optionale Prognose-Fusszeile) - Apple HIG (Hierarchie ueber
Position/Groesse, Inhalt nicht mit Nebensaechlichem ueberladen) plus
Audi-CI (Flaeche mit Haarlinien statt Karten). Durchlief drei
Mockup-Runden als Artefakt vor der Umsetzung, zwei davon vom Nutzer
zurueckgewiesen ("Major Information is missing" bzw. Kommentare zu
Icon-Groesse/Herstellervorgabe/Ausrichtung).
Herstellervorgabe-Logik korrigiert: eine Fahrzeugmeldung stammt immer
aus dem werkseigenen Wartungsprogramm des Bordcomputers, unabhaengig
vom in "Einrichten" gewaehlten App-Intervall - zaehlt also immer als
Herstellervorgabe, nicht nur wenn der App-Modus zufaellig "hersteller"
ist. Die Prognose-Fusszeile zeigt die Restkilometerzahl nur noch beim
eigenen (kuerzeren) Intervall, bei Herstellervorgabe nur noch das
Datum. "Eigenes" in der Ölwechsel-Intervall-Auswahl umbenannt zu
"Individuell".
companion-app-Portierung ist eine echte Neustrukturierung: die
bisherige "Naechster Oelwechsel"-Kachel mischte Oelwechsel-,
Inspektions- und Hauptuntersuchungs-Zeilen in einer gemeinsamen
Werteliste, jetzt "Anstehende Termine" mit denselben drei Bloecken wie
im Panel. Neuer Export letzterInspektion() in service.ts. Zwei
dokumentierte, vorbestehende Luecken bleiben bestehen statt neu
kaschiert zu werden: kein Werkstatt-Chip (companion-app hat keine
"Termin vereinbaren"-Funktion), Herstellervorgabe kommt aus
fahrzeug.oel.modus statt einem intervalle()-Aequivalent (das es dort
nicht gibt).
npm run typecheck sauber, npm run test 99/99, npm run build erfolgreich.
Panel deployed als Version 1787013003, synchron in installationspaket/,
live im Docker-Testcontainer per DOM-Abfrage geprueft.
Co-Authored-By: Claude Sonnet 5 <[email protected]>
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
# AGENTS.md — Project state, review findings, open items, and working rules
|
||||
|
||||
**Last updated: 2026-08-17** (merged the `umsetzung-datametric360` branch — companion app phases
|
||||
**Last updated: 2026-08-18** (merged the `umsetzung-datametric360` branch — companion app phases
|
||||
1–10 done, see `UMSETZUNGSPLAN.md`; 2026-08-13: cleaned up remaining EU Data Act residue, fixed
|
||||
oversized toggle switches, and fixed a desktop-layout audit (settings button / rings logo / popups
|
||||
overflowing past the capped content column) — see `DESIGN_AUDIT_2026-08-13.md`; 2026-08-16: fixed
|
||||
@@ -47,7 +47,12 @@ where the image placeholder's grey background had turned invisible-white; separa
|
||||
panel) was brought back in sync with everything the panel gained since 2026-08-11 - see the
|
||||
"Gap found while auditing..." entry near the end of section C; finally, the Übersicht's
|
||||
Kilometerstand/Service tiles were redesigned after the owner asked how Apple HIG and Audi CI would
|
||||
solve them - both answer the same way, and the merged "9,0 tkm/ 04/27" number field is gone).
|
||||
solve them - both answer the same way, and the merged "9,0 tkm/ 04/27" number field is gone;
|
||||
2026-08-18: the owner rejected a follow-up mockup for the "Mein Audi" service preview and
|
||||
"Anstehende Termine" boxes ("Lost information") - no code from that proposal was built; instead the
|
||||
existing Nächster-Service box on the Übersicht had its "bis zum/zur ..." wording replaced by the
|
||||
real Audi CI oil-change/inspection icons (user-supplied SVGs) placed left of the figure, in both
|
||||
codebases, per the owner's explicit request).
|
||||
This file is the entry point for every new agent
|
||||
session: what this repo is, what is finished, what is missing, and how to work here. Detail lives in
|
||||
the linked documents — this file points, it does not duplicate.
|
||||
@@ -1476,6 +1481,133 @@ wraps the web app for iPhone; a PWA home-screen install is the accepted intermed
|
||||
{opacity:.55}` als Tipp-Rückmeldung ergänzt, da der übliche `.tilebtn`-Hintergrundwechsel
|
||||
hier nicht geht), synchron in `installationspaket/`. Entwurf und Begründung als Artefakt:
|
||||
„Zwei Kacheln, drei Antworten“.
|
||||
- [x] Nächster-Service-Box: CI-Icon statt "bis zum/zur ..."-Wortlaut (2026-08-18) — der Nutzer
|
||||
lehnte zunächst einen Folge-Entwurf ab, der dieselbe HIG/CI-Systematik auf die "Mein Audi"-
|
||||
Service-Vorschau und "Anstehende Termine" auf der Service-Seite anwenden sollte ("I don't like
|
||||
it" → per Rückfrage: "Lost information", also zu viel weggelassen) — dieser Vorschlag wurde
|
||||
**nicht** umgesetzt, keine Codeänderung daraus übernommen. Stattdessen ein präziser, neuer
|
||||
Wunsch für die bereits bestehende Nächster-Service-Box auf der Übersicht: das Wort
|
||||
("bis zum Ölwechsel"/"bis zur Inspektion") vor der Kennzahl entfällt zugunsten der echten Audi-
|
||||
CI-Icons `inspection-l/-s`/`oil-change-l/-s` (vom Nutzer als SVG geliefert, aus
|
||||
`C:\Users\tobia\Downloads\Icons 2026-08-09 13_04_03\`, verbatim übernommen wie die übrigen
|
||||
CI-Icons dieses Projekts — l im 48er-, s im 24er-Grid), links der Zahl platziert; auf
|
||||
Nutzerwunsch anschließend nochmal um 30% vergrößert (24px → 31px). Umgesetzt in beiden
|
||||
Codebasen: Panel bekam `CI.oilChangeL/-S`/`CI.inspectionL/-S` (neben den bestehenden CI-
|
||||
Icon-Konstanten) und ein neues `.fig-zeile`-Wrapper-Div (`display:flex;align-items:center`)
|
||||
um Icon + `.fig` in `vHome()`'s Serviceblock; die Nebenzeile zeigt jetzt nur noch
|
||||
`vsl. DATUM`. Companion-app bekam die identischen Pfade als neue `SymbolOelwechsel`/
|
||||
`SymbolInspektion`-Komponenten in `symbole.tsx` (eigener `RahmenFlaeche`-Wrapper, da diese
|
||||
zwei — anders als die generischen Tab-Icons dort — gefüllte Flächen-Icons sind, kein
|
||||
stroke-Wrapper) und eine neue `.dm-servicefig`-CSS-Klasse in `screens.css`; `Uebersicht.tsx`
|
||||
wählt das Symbol über eine kleine `SERVICE_SYMBOL`-Tabelle nach `service.art`. **Wichtig:** die
|
||||
Icons blieben bewusst außerhalb von `design-system/` (Lizenzregel oben — echte Audi-CI-Assets
|
||||
dürfen nur in Panel/companion-app, nicht in das markenfreie `@audi-dash/ui`) — die Verdrahtung
|
||||
liegt deshalb direkt im jeweiligen Screen, nicht in der gemeinsamen `Fig`-Komponente. Die
|
||||
Hauptuntersuchung hat kein eigenes Icon (kein Restkilometer-Ziel, `restKm` ist dort immer
|
||||
`null`) und behält `bisText()` als einzige Kennzeichnung — das deckt sich in beiden Codebasen
|
||||
genau mit der Bedingung, unter der ein Icon überhaupt existiert. `npm run typecheck`/
|
||||
`npm run test` (100/100)/`npm run build` sauber. Live im Docker-Testcontainer geprüft (Version
|
||||
`1787012001`, synchron in `installationspaket/`): Ölwechsel-Icon rendert links der "8.999 km"-
|
||||
Kennzahl, Unterzeile zeigt nur noch "vsl. 18.04.2027", keine neuen Konsolenfehler.
|
||||
- [x] Nächster-Service-Box: Hauptuntersuchung-Datum in Zahlengröße + Art-Name statt "bis zur ..."
|
||||
(2026-08-18) — Folgewunsch zum Icon-Umbau: das Datum im Zahlenfeld war für die
|
||||
Hauptuntersuchung (kein Restkilometer-Ziel) bisher kleiner gesetzt (30px statt 40px), extra
|
||||
damit lange Daten wie "15.04.2027" auf 375px nicht umbrechen; der Nutzer wollte stattdessen
|
||||
dieselbe 40px-Größe wie bei Ölwechsel/Inspektion, plus darunter statt "bis zur
|
||||
Hauptuntersuchung" nur noch das Wort "Hauptuntersuchung" selbst. Vor der Umsetzung am
|
||||
laufenden Panel nachgemessen (nicht angenommen): "15.04.2027" misst bei 40px/Audi Type Wide
|
||||
182px, der Kachel-Container hat 322px — die ursprüngliche Wrap-Sorge, die zur 30px-Regel
|
||||
geführt hatte, bestätigt sich bei den tatsächlichen Container-Maßen nicht. `zahlGroesse` ist
|
||||
jetzt fest 40 (Panel `vHome()` und companion-app `Uebersicht.tsx`, `Fig size={40}`
|
||||
unabhängig von `restKm`). Da `bisText()`/`ART_BIS` (Panel) und `bisText()`/`BIS_TEXT`
|
||||
(companion-app `service.ts`) dadurch ihre einzige Aufrufstelle verloren, wurden beide als
|
||||
Orphans entfernt (inkl. des zugehörigen companion-app-Tests in `service.test.ts` — von 100 auf
|
||||
99 Tests, kein Funktionsverlust, nur der jetzt toten Funktion beraubt). Live im
|
||||
Docker-Testcontainer per DOM-Patch simuliert (Testfixture hat aktuell Ölwechsel als
|
||||
nächstgelegenen Termin, nicht die Hauptuntersuchung) und bei 390px Breite screenshotet:
|
||||
"06.08.2028" einzeilig bei 40px, "Hauptuntersuchung" darunter, kein Icon (wie vorgesehen — es
|
||||
gibt kein CI-Icon für die Hauptuntersuchung). `npm run typecheck`/`npm run test`
|
||||
(99/99)/`npm run build` in companion-app sauber. Deployed als Panel-Version `1787012002`,
|
||||
synchron in `installationspaket/`.
|
||||
- [x] "Anstehende Termine"-Box (Service-Seite) umgebaut: drei sichtbar getrennte Blöcke
|
||||
(2026-08-18) — auf Wunsch des Nutzers ein neuer Entwurf (Apple HIG + Audi CI, wie beim
|
||||
Übersicht-Umbau), mit expliziten Vorgaben: Herstellervorgabe bleibt für Ölwechsel und
|
||||
Inspektion möglich, "voraussichtlich ..." bleibt für beide erhalten, alle drei Arten werden
|
||||
sichtbar getrennt, die Hauptuntersuchung bekommt bewusst weder Herstellervorgabe noch
|
||||
Prognosezeile. Durchlief drei Mockup-Runden als Artefakt ("Drei Termine, drei Blöcke") vor der
|
||||
Umsetzung: **Runde 1** abgelehnt ("Major Information is missing"). **Runde 2** ergänzte ein
|
||||
vollständiges Feld-Inventar (Tabelle: jedes Element aus `vService()` mit Fundstelle im
|
||||
Vorschlag), integrierte den vereinbarten Werkstatttermin in den Hauptvergleich statt als
|
||||
Anhang, zeigte den "kein Eintrag im Servicebuch"-Zustand. **Runde 3** (auf drei
|
||||
Inline-Kommentare des Nutzers im Artefakt): Ölwechsel-Icon von 20px auf 26px angehoben (füllt
|
||||
in seinem 24×24-Raster nur eine 24×10-Fläche statt der fast vollen Höhe des
|
||||
Inspektion-Icons — per `getBBox()` nachgemessen, kein exakter Ausgleich möglich ohne das Icon
|
||||
unverhältnismäßig breit zu machen), Herstellervorgabe-Zeile auch am Ölwechsel-Beispiel gezeigt
|
||||
(vorher nur bei Inspektion), der Hauptuntersuchungs-Block von einem Icon-Platzhalter-Abstand
|
||||
auf echt linksbündig geändert. Danach vom Nutzer freigegeben ("Ok, implement it").
|
||||
**Umsetzung, beide Codebasen:**
|
||||
Panel (`vService()`, `audi-dashboard-app.js`): `<dl class="rows">` durch drei
|
||||
`<div class="termingruppe">` ersetzt (Kopfzeile mit Icon + Art-Name + optionalem
|
||||
`.tg-chip` für einen vereinbarten Werkstatttermin, optionale `.tg-vorgabe`-Zeile, `.tg-wert`
|
||||
als 22px/Gewicht-300-Zahl, optionale `.tg-prognose`-Fußzeile) — Auswahllogik für Wert/
|
||||
Fußzeile/Herstellervorgabe unverändert aus dem bisherigen Code übernommen, nur die Markup-
|
||||
Struktur geändert. `ART_ICON`/`ART_ICON_GROESSE` (26px Ölwechsel, 20px Inspektion) von
|
||||
`vHome()` auf Modulebene gehoben, da jetzt von zwei Stellen genutzt — `vHome()`s eigene
|
||||
Icon-Größe (31px, beide gleich) bewusst unverändert gelassen, das ist eine offene, dem Nutzer
|
||||
gestellte Rückfrage. Der Werkstatt-Chip nutzt `var(--red)` nur als Text-/Rahmenfarbe, keine
|
||||
Füllung — deckt sich mit der bereits bestehenden Projektregel "Rot ist Akzent, nie Fläche"
|
||||
(siehe iOS-Overlay-Fix vom 2026-08-13). Deployed als Version `1787013000`, synchron in
|
||||
`installationspaket/`, live im Docker-Testcontainer per direkter DOM-Abfrage geprüft (JS statt
|
||||
Screenshot, da die Browser-Pane in dieser Sitzung zeitweise nicht kompositierte): alle drei
|
||||
Blöcke rendern mit korrektem Text, Icons in 26px/20px, Hauptuntersuchung ohne Icon, keine
|
||||
neuen Konsolenfehler.
|
||||
companion-app (`Service.tsx`): dieselbe Drei-Blöcke-Struktur, aber eine **echte
|
||||
Neustrukturierung, kein 1:1-Kopieren** — die bisherige Kachel hieß "Nächster Ölwechsel" und
|
||||
mischte Ölwechsel-, Inspektions- und Hauptuntersuchungs-Zeilen fachfremd in einer gemeinsamen
|
||||
`Werteliste`; jetzt "Anstehende Termine" wie im Panel, mit denselben drei `.dm-termingruppe`-
|
||||
Blöcken. Neue `SymbolOelwechsel`/`SymbolInspektion`-Komponenten in `symbole.tsx` (bereits für
|
||||
die Übersicht angelegt, hier wiederverwendet). Neuer Export `letzterInspektion()` in
|
||||
`service.ts` (Gegenstück zu `letzterOelwechsel()`) für den "kein Eintrag"-Zustand der
|
||||
Inspektion. **Zwei bewusste, dokumentierte Vereinfachungen gegenüber dem Panel** (vorbestehende
|
||||
Lücken, nicht durch diese Änderung verursacht): (1) companion-app hat keine "Termin
|
||||
vereinbaren"-Funktion und keine `vereinbart`-Datenfelder für Service-Termine — der Werkstatt-
|
||||
Chip entfällt deshalb ersatzlos, es gibt nichts anzuzeigen. (2) companion-app hat kein
|
||||
Gegenstück zu `intervalle()`/dem generischen Herstellerintervall-Fallback des Panels; die
|
||||
Herstellervorgabe-Zeile wird stattdessen direkt aus `fahrzeug.oel.modus` abgeleitet (Ölwechsel:
|
||||
nur bei `modus === "hersteller"`, Inspektion: immer, da sie kein einstellbares Intervall hat —
|
||||
deckt sich inhaltlich mit dem Panel-Verhalten, auch ohne dieselbe Funktion zu teilen). Beide
|
||||
Punkte sind funktional gleichwertig zum bisherigen companion-app-Stand, nicht neu eingeführte
|
||||
Lücken. `npm run typecheck` sauber, `npm run test` 99/99, `npm run build` erfolgreich; die
|
||||
bestehenden "Alle Seiten rendern mit Beispieldaten"-Tests rendern die Service-Seite weiterhin
|
||||
ohne Absturz. Kein Live-Screenshot in dieser Sitzung (bräuchte einen laufenden Dev-Server samt
|
||||
Backend-Anbindung) — strukturell verifiziert über Typecheck/Tests/Build.
|
||||
**Zwei Nachbesserungen direkt nach der ersten Live-Prüfung, beide vom Nutzer gemeldet:**
|
||||
(1) "Herstellervorgabe" fehlte beim Ölwechsel, obwohl der angezeigte Wert (29.100 km /
|
||||
25.07.2028) vom Fahrzeug selbst gemeldet wird (`hatMeldung`/`fahrzeug.oelwechselFaelligTs`).
|
||||
Root Cause: die Zeile war bisher ausschließlich an `iv.hersteller` (Panel) bzw.
|
||||
`fahrzeug.oel.modus === "hersteller"` (companion-app) gekoppelt — dem *App-eigenen*
|
||||
Intervall-Modus aus "Einrichten". Der Bordcomputer kennt diesen App-Modus aber gar nicht;
|
||||
eine Fahrzeugmeldung stammt immer aus dem werkseigenen Wartungsprogramm und ist damit per
|
||||
Definition Herstellervorgabe, unabhängig vom gewählten App-Modus. Das Testprofil hat den
|
||||
Ölwechsel aktuell auf `modus: "eigen"` stehen (10.000 km/12 Monate statt 30.000 km/24
|
||||
Monate) — das war korrektes Verhalten der alten Bedingung, nur die Bedingung selbst war zu
|
||||
eng. Fix: `herstellervorgabe = hatMeldung || iv.hersteller` (Panel) bzw.
|
||||
`oelHatMeldung || fahrzeug.oel.modus === "hersteller"` (companion-app) — dieselbe alte
|
||||
Bedingung bleibt für den Fall ohne Fahrzeugmeldung erhalten (App-eigener Fallback auf das
|
||||
Herstellerintervall), kommt jetzt aber zusätzlich bei einer echten Fahrzeugmeldung zum
|
||||
Tragen. (2) Die Prognose-Fußzeile zeigte "8.999 km, voraussichtlich am 18.04.2027" auch dann,
|
||||
wenn in "Einrichten" tatsächlich Herstellervorgabe gewählt ist — dort rechnet die eigene
|
||||
Prognose ohnehin schon mit dem Herstellerintervall, die Restkilometerzahl wäre also nur eine
|
||||
zweite, verwirrende km-Angabe neben dem Fahrzeug-Wert direkt darüber. Fix: die "X km,"-
|
||||
Vorsilbe entfällt, sobald `CAR.oel.modus`/`fahrzeug.oel.modus === "hersteller"` ist — nur beim
|
||||
eigenen (kürzeren) Intervall bleibt sie stehen, weil sie dort echte Zusatzinformation ist
|
||||
(matcht damit exakt, wie die Inspektion-Fußzeile schon immer aussah, da sie kein einstellbares
|
||||
Intervall hat). Mit dem Testprofil (`modus: "eigen"`) bleibt die Kilometerzahl also weiterhin
|
||||
sichtbar — korrekt, das ist genau der Fall, für den sie gedacht ist; umschalten auf
|
||||
Herstellervorgabe in "Einrichten" würde sie ausblenden. Beide Fixes deployed als Panel-Version
|
||||
`1787013001`, synchron in `installationspaket/`, live per DOM-Abfrage geprüft: Ölwechsel-Block
|
||||
zeigt jetzt "Herstellervorgabe", keine neuen Konsolenfehler. companion-app: `npm run typecheck`
|
||||
sauber, `npm run test` 99/99, `npm run build` erfolgreich.
|
||||
- [x] **Parity rule eingeführt (2026-08-17):** der Nutzer stellte klar, dass Panel und
|
||||
`companion-app/` immer denselben funktionalen Stand haben sollen — auch wenn eine Anfrage nur
|
||||
das Panel nennt, das ist reiner Testkomfort (Docker-Instanz), keine Scope-Entscheidung. Regel
|
||||
|
||||
Reference in New Issue
Block a user