5.3 KiB
5.3 KiB
phase, plan, type, autonomous, requirements
| phase | plan | type | autonomous | requirements |
|---|---|---|---|---|
| quick | 260923-ku6 | quick | true |
Quick Task 260923-ku6: Drei Nachbesserungen aus dem Browser-Rundgang (Proxmox-Modul)
Objective
Drei im Browser-Rundgang zu Quick-Task 260923-dhh gefundene Fehler beheben, ohne den Funktionsumfang sonst zu veraendern:
- „Verbindung testen" prueft den gespeicherten Stand statt der Formularwerte.
- Ein frisch angelegter, noch nie abgefragter Server zeigt faelschlich die Sammelmeldung „Ein unerwarteter Fehler ist aufgetreten" statt eines ruhigen „noch keine Abfrage"-Zustands.
- Die CSS-Klasse
uppercasefaerbt in der Modulseiten-Zeile die ganze Zeile (inkl. Adresse) gross statt nur das Produktkuerzel.
Context
- Quelle: menschlicher Browser-Rundgang zu
.planning/quick/260923-dhh-proxmox-modul-pve-pbs-und-pmg-anbinden-n/260923-dhh-PLAN.md. - Betroffene Dateien:
apps/api/src/proxmox/proxmox.controller.ts,apps/api/src/proxmox/proxmox.service.ts,apps/api/src/proxmox/dto/proxmox-server.dto.ts,apps/web/src/lib/proxmox-api.ts,apps/web/src/app/(portal)/modules/proxmox/settings/components/ServerForm.tsx,apps/web/src/app/(portal)/modules/proxmox/components/ServerCard.tsx,apps/web/src/messages/de.json,apps/web/src/messages/en.json.
Tasks
Task 1: Verbindungstest prueft Formularwerte statt gespeicherten Stand (Befund 1)
apps/api/src/proxmox/dto/proxmox-server.dto.ts apps/api/src/proxmox/proxmox.service.ts apps/api/src/proxmox/proxmox.controller.ts apps/api/src/proxmox/proxmox.service.spec.ts apps/web/src/lib/proxmox-api.ts apps/web/src/app/(portal)/modules/proxmox/settings/components/ServerForm.tsx apps/web/src/app/(portal)/modules/proxmox/settings/components/ServerForm.test.tsx Backend: neues `TestProxmoxServerDto` (alle Felder optional, wie `UpdateProxmoxServerDto`). `POST servers/:id/test` nimmt diesen Body entgegen und mischt ihn mit dem gespeicherten Server: pro Feld gilt „im Formular gesendet und nicht leer -> Formularwert, sonst gespeicherter Wert" (Geheimnisfelder: nicht gesendet/leer -> gespeicherter, verschluesselter Wert bleibt bestehen und wird wie ueblich entschluesselt). Neue Route `POST servers/test` (ohne `:id`) fuer die Neuanlage — testet ausschliesslich mit den Formularwerten, ohne gespeicherten Fallback. Beide Routen rufen denselben privaten Merge-Baustein auf; dieser wird per Unit-Test abgedeckt (leeres Geheimnisfeld -> gespeicherter Wert bleibt; gefuelltes Geheimnisfeld -> neuer Wert greift; abgeschaltete Zertifikatspruefung im Formular wird uebernommen). Zugangsdaten weiterhin nicht in Log/Antwort (bestehende Riegel unveraendert). Frontend: `testServer`/neue `testDraftServer`-Funktion senden immer den vollstaendigen aktuellen Formularstand. `ServerForm` zeigt den Testen-Knopf immer (nicht nur nach dem Speichern) und waehlt je nach `savedServer` die passende Funktion. cd apps/api && pnpm vitest run src/proxmox/proxmox.service.spec.ts && cd ../web && pnpm vitest run src/app/\(portal\)/modules/proxmox/settings/components/ServerForm.test.tsx Ein Test zeigt: gespeicherter Server mit im Formular abgeschalteter Zertifikatspruefung -> Testergebnis beruecksichtigt die abgeschaltete Pruefung (nicht mehr `zertifikat`-Fehler). Ein zweiter Test zeigt: leer gelassenes Geheimnisfeld nutzt weiterhin den gespeicherten Wert. Der Testen-Knopf funktioniert auch ohne gespeicherten Server.Task 2: Ruhiger Zustand fuer "noch nie abgefragt" (Befund 2)
apps/web/src/app/(portal)/modules/proxmox/components/ServerCard.tsx apps/web/src/app/(portal)/modules/proxmox/components/ServerCard.test.tsx apps/web/src/messages/de.json apps/web/src/messages/en.json Neuer Uebersetzungsschluessel `proxmox.card.notPolledYet` (DE/EN), der auf den Knopf „Jetzt aktualisieren" verweist. In `ServerCard`: wenn `status.lastPolledAt === null` (noch keine Abfrage gelaufen), erscheint dieser ruhige Hinweis statt des Fehlerblocks — auch wenn `status.reachable` false ist (Zustand direkt nach dem Anlegen). Die bestehenden Fehlermeldungen (inkl. `unbekannt`) bleiben fuer den Fall `lastPolledAt !== null && !reachable` unveraendert. cd apps/web && pnpm vitest run src/app/\(portal\)/modules/proxmox/components/ServerCard.test.tsx Ein Test zeigt: Status mit `lastPolledAt: null, reachable: false, errorKind: null` zeigt den ruhigen Hinweistext und NICHT die Meldung "Ein unerwarteter Fehler ist aufgetreten". Bestehende Fehlermeldungs-Tests bleiben gruen.Task 3: uppercase nur auf Produktkuerzel (Befund 3)
apps/web/src/app/(portal)/modules/proxmox/components/ServerCard.tsx `uppercase` von der Zeile auf ein `` um `server.productType` verschieben; die Adresse bleibt unveraendert dargestellt. cd apps/web && pnpm vitest run src/app/\(portal\)/modules/proxmox/components/ServerCard.test.tsx Adresse erscheint in der Modulseiten-Zeile nicht mehr grossgeschrieben, Produktkuerzel weiterhin schon.Gesamtverifikation
Nach allen drei Aufgaben: pnpm --filter api test, pnpm --filter web test,
pnpm type-check, pnpm lint, pnpm --filter web exec biome check . (Warnungszahl exakt
53) muessen unveraendert/gruen sein, keine Container-Neubauten, keine Browser-Pruefung.