feat(schnellstart): Kacheln je Geraetetyp in der Oberflaeche pflegen
Prüfung / pruefung (pull_request) Canceled after 0s
Prüfung / pruefung (push) Canceled after 0s
Prüfung / e2e (pull_request) Canceled after 0s
Prüfung / e2e (push) Canceled after 0s

Welche Vorlagen auf der Geraeteseite als Kachel erscheinen, stand nur im Seed.
Wer eine eigene Vorlage dort haben wollte, kam nicht heran; wer eine
mitgelieferte loswerden wollte, auch nicht.

Neue Seite Verwaltung -> Schnellstart: je Geraetetyp eine Liste, Reihenfolge
ueber Hoch und Runter. Kein Drag & Drop -- der Editor braucht dnd-kit fuer
hundert Schritte, hier sind es zwei bis vier Kacheln, und zwei Knoepfe sind am
Handy verlaesslicher als eine Ziehgeste neben einer scrollenden Seite.

Gespeichert wird die ganze Liste; position kommt aus ihrer Reihenfolge, damit es
nur eine Wahrheit darueber gibt. Zur Auswahl stehen nur veroeffentlichte, nicht
archivierte Vorlagen.

Einstellung.schnellstartGepflegt haelt den Seed heraus, sobald jemand
gespeichert hat -- auch bei unveraenderter Liste. Eine fehlende Zeile sagt
nicht, ob sie noch nie da war oder bewusst entfernt wurde.

Das Durchklicken des gebauten Stands fand einen Fehler, den die Suite nicht
gesehen haette: die Umsortierung wurde nicht gespeichert. Altdaten tragen
mehrere Zeilen auf position 0, und bei gleicher Position ist die Reihenfolge in
Postgres nicht festgelegt -- Lesemodell und Dienst gaben sie unterschiedlich
zurueck, und der Vergleich hielt die Umsortierung fuer einen Leerlauf. Behoben
durch einen eindeutigen Tiebreak in beiden Abfragen, mit Regressionstest.

Closes #34
This commit is contained in:
Florian Wilde
2026-10-04 17:40:46 +02:00
parent 0060a55387
commit 4bd34c4233
17 changed files with 910 additions and 24 deletions
+15
View File
@@ -273,6 +273,21 @@ export async function typVorgabenSaeen(
db: PrismaClient,
vorlagen: readonly GesaeteVorlage[],
): Promise<number> {
/*
* Hat jemand den Schnellstart in der Oberflaeche gespeichert, haelt der Seed
* sich heraus — auch bei einer Vorgabe, die dort fehlt (#022). Eine fehlende
* Zeile sagt nicht, ob sie noch nie da war oder bewusst entfernt wurde; ohne
* diese Marke kaeme eine entfernte Kachel beim naechsten Lauf zurueck.
*/
const einstellung = await db.einstellung.findUnique({
where: { id: "global" },
select: { schnellstartGepflegt: true },
});
if (einstellung?.schnellstartGepflegt) {
console.log(" Schnellstart je Geraetetyp: in der Oberflaeche gepflegt, bleibt unberührt");
return 0;
}
const nachName = new Map(vorlagen.map((eintrag) => [eintrag.name, eintrag.vorlageId]));
let angelegt = 0;