Files
tessera-ctl/.planning/quick/260923-le6-proxmox-abnahmebefunde-sumornull-null-be/260923-le6-SUMMARY.md
T
schalli c294bfddf2
Tessera CI/CD / Lint & Type Check (push) Successful in 57s
Tessera CI/CD / Tests (push) Successful in 1m54s
Tessera CI/CD / Desktop-Pakete bauen (push) Successful in 20s
Tessera CI/CD / Build & Publish Images (push) Successful in 3m22s
docs(quick-260923-le6): Proxmox-Abnahmebefunde behoben (PMG-Teilsumme, Aktualisieren nur fuer Admins)
Uebergabe-Notizen der pausierten Sitzung entfernt, die Arbeit ist wieder aufgenommen.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-23 15:35:30 +02:00

9.8 KiB

phase, plan, subsystem, tags, requires, provides, affects, actuals, plan_head_before, tech-stack, key-files, key-decisions, patterns-established, requirements-completed, coverage, duration, completed, status
phase plan subsystem tags requires provides affects actuals plan_head_before tech-stack key-files key-decisions patterns-established requirements-completed coverage duration completed status
quick 260923-le6 proxmox-modul
nestjs
next-intl
vitest
tdd
proxmox
phase provides
quick-260923-dhh Proxmox-Modul (PVE/PBS/PMG) inklusive normalizePmg und ServerCard; Abnahmebefund Wahrheit 7 (PMG-Teilsumme) blieb offen
sumOrNull liefert null, sobald ein Teilwert einer PMG-Summe (Spam/Viren) fehlt oder unlesbar ist — nie mehr eine Teilsumme
ServerCard zeigt Nicht-Admins fuer nie abgefragte Server einen Hinweis ohne Knopfverweis (isAdmin-Eigenschaft, Vorgabe false)
Proxmox-Modulseite zeigt den Knopf 'Jetzt aktualisieren' nur ADMIN/SUPER_ADMIN
proxmox-modul
dashboard-kachel-proxmox
tokens tasks commits
4581 3 4
6530ae5
added patterns
isAdmin?: boolean (Vorgabe false) als sichere Eigenschaft fuer UI-Elemente, deren serverseitige Aktion rollenbeschraenkt ist (uebernimmt das bestehende Muster aus page.tsx, kein neuer Mechanismus)
created modified
apps/web/src/app/(portal)/modules/proxmox/proxmox-page-roles.test.tsx
apps/api/src/proxmox/proxmox-normalize.ts
apps/api/src/proxmox/proxmox-normalize.spec.ts
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
apps/web/src/app/(portal)/modules/proxmox/page.tsx
Wortwahl fuer notPolledYetAutomatic: 'nach der naechsten automatischen Abfrage' statt 'in Kuerze', weil das Poll-Intervall je Server 1-1440 Minuten einstellbar ist und 'in Kuerze' nicht immer zutraefe
sumOrNull(a, b): null wenn a ODER b null ist (statt Ersatz-durch-Null) — Muster fuer jede zukuenftige Tageszahl aus zwei Teilwerten
id description verification human_judgment
D1 PMG-Summe (Spam/Viren) ist null, sobald genau eine Haelfte fehlt oder unlesbar ist — in beide Richtungen (in/out), Paare unabhaengig voneinander
kind ref status
unit apps/api/src/proxmox/proxmox-normalize.spec.ts#nur eine Haelfte vorhanden -> null (Spam, nur spamcount_in) pass
kind ref status
unit apps/api/src/proxmox/proxmox-normalize.spec.ts#nur eine Haelfte vorhanden -> null (Spam, nur spamcount_out) pass
kind ref status
unit apps/api/src/proxmox/proxmox-normalize.spec.ts#nur eine Haelfte vorhanden -> null (Viren, nur viruscount_in) pass
kind ref status
unit apps/api/src/proxmox/proxmox-normalize.spec.ts#nur eine Haelfte vorhanden -> null (Viren, nur viruscount_out) pass
kind ref status
unit apps/api/src/proxmox/proxmox-normalize.spec.ts#eine Haelfte ist nicht lesbar -> null (Spam, spamcount_out ist Text) pass
kind ref status
unit apps/api/src/proxmox/proxmox-normalize.spec.ts#Unabhaengigkeit der Paare: Spam unvollstaendig, Viren vollstaendig pass
false
id description verification human_judgment
D2 Auf der Proxmox-Modulseite sehen nur ADMIN/SUPER_ADMIN den Knopf 'Jetzt aktualisieren'; USER und ein noch nicht geladener Benutzer sehen ihn nicht; ServerCard verweist Nicht-Admins nicht auf den Knopf
kind ref status
unit apps/web/src/app/(portal)/modules/proxmox/proxmox-page-roles.test.tsx#Rolle USER: kein Knopf pass
kind ref status
unit apps/web/src/app/(portal)/modules/proxmox/proxmox-page-roles.test.tsx#kein Benutzer geladen (user: null): kein Knopf pass
kind ref status
unit apps/web/src/app/(portal)/modules/proxmox/proxmox-page-roles.test.tsx#Rolle ADMIN: Knopf sichtbar pass
kind ref status
unit apps/web/src/app/(portal)/modules/proxmox/proxmox-page-roles.test.tsx#Rolle SUPER_ADMIN: Knopf sichtbar pass
kind ref status
unit apps/web/src/app/(portal)/modules/proxmox/proxmox-page-roles.test.tsx#leere Serverliste bei ADMIN: weiterhin kein Knopf pass
kind ref status
unit apps/web/src/app/(portal)/modules/proxmox/components/ServerCard.test.tsx#260923-le6: isAdmin={false}, noch nie abgefragt -> automatischer Hinweis ohne Knopfverweis pass
kind ref status
unit apps/web/src/app/(portal)/modules/proxmox/components/ServerCard.test.tsx#260923-le6: isAdmin weggelassen -> verhaelt sich wie isAdmin={false} pass
false
21min 2026-09-23 complete

Quick Task 260923-le6: Zwei Abnahmebefunde des Proxmox-Moduls behoben Summary

PMG-Teilsumme wird null statt still falsch (sumOrNull), Aktualisieren-Knopf der Proxmox-Modulseite nur noch fuer ADMIN/SUPER_ADMIN sichtbar

Performance

  • Duration: 21 min
  • Started: 2026-09-23T13:12:00Z
  • Completed: 2026-09-23T13:33:50Z
  • Tasks: 3
  • Files modified: 8 (7 geaendert, 1 neu)

Accomplishments

  • sumOrNull(a, b) in proxmox-normalize.ts liefert null, sobald ein Teilwert (Spam oder Viren, je Richtung in/out) fehlt oder nicht lesbar ist — die bisherige stille Ersatz-durch-0-Addition ist vollstaendig entfernt. Damit ist Wahrheit 7 (Blocker) aus 260923-dhh-VERIFICATION.md geschlossen.
  • ServerCard bekommt die optionale Eigenschaft isAdmin (Vorgabe false) und zeigt Nicht-Admins fuer einen nie abgefragten Server einen neuen Hinweistext (proxmox.card.notPolledYetAutomatic, de/en), der auf keinen Knopf verweist.
  • Die Proxmox-Modulseite zeigt den Knopf "Jetzt aktualisieren" nur noch, wenn isAdmin wahr ist (bestehende Variable wiederverwendet, kein neuer Rollen-Mechanismus), und reicht isAdmin an ServerCard weiter.

Task Commits

Alle Aufgaben wurden per TDD (RED -> GREEN) umgesetzt und einzeln committet:

  1. Aufgabe 1 (RED): PMG-Teilsumme-Tests - c13d657 (test)
  2. Aufgabe 1 (GREEN): sumOrNull korrigiert - 2eb86e1 (fix)
  3. Aufgabe 2: ServerCard mit isAdmin und zweitem Hinweistext - 2f8dd14 (fix)
  4. Aufgabe 3: Aktualisieren-Knopf nur fuer Admins - e1b191b (fix)

Hinweis: Aufgabe 1 hatte planmaessig zwei Commits (RED/GREEN); Aufgaben 2 und 3 wurden je in einem Commit umgesetzt, wie im Plan vorgesehen (Tests zuerst rot gesehen, dann implementiert, ein Commit je Aufgabe).

Files Created/Modified

  • apps/api/src/proxmox/proxmox-normalize.ts - sumOrNull liefert null bei fehlendem Teilwert statt Ersatz-durch-0
  • apps/api/src/proxmox/proxmox-normalize.spec.ts - 6 neue Testfaelle fuer beide Richtungen (Spam/Viren), unlesbare Haelfte, Unabhaengigkeit der Paare
  • apps/web/src/app/(portal)/modules/proxmox/components/ServerCard.tsx - neue isAdmin-Eigenschaft (Vorgabe false), waehlt den Hinweistext fuer nie abgefragte Server
  • apps/web/src/app/(portal)/modules/proxmox/components/ServerCard.test.tsx - bestehenden Test auf isAdmin umgestellt, zwei neue Faelle (isAdmin={false}, weggelassen)
  • apps/web/src/messages/de.json / en.json - neuer Schluessel proxmox.card.notPolledYetAutomatic
  • apps/web/src/app/(portal)/modules/proxmox/page.tsx - Knopf nur bei isAdmin, reicht isAdmin={isAdmin} an ServerCard weiter
  • apps/web/src/app/(portal)/modules/proxmox/proxmox-page-roles.test.tsx (neu) - Seitentest mit 5 Faellen (USER, user: null, ADMIN, SUPER_ADMIN, leere Liste bei ADMIN)

Decisions Made

  • Formulierung "Noch keine Abfrage gelaufen. Die Werte erscheinen nach der naechsten automatischen Abfrage." statt eines "in Kuerze"-Hinweises, weil das Poll-Intervall je Server zwischen 1 und 1440 Minuten liegen kann (@Max(1440)) — die gewaehlte Formulierung stimmt bei jedem Intervall und verweist auf keinen Knopf.
  • Keine weiteren Aenderungen an der Modulseite (Festlegung des Nutzers: kein Umbau, keine zusaetzlichen Details oder Statusfarben) — bestaetigt eingehalten.

Deviations from Plan

None - plan genau wie geschrieben ausgefuehrt.

Issues Encountered

None.

Beobachtungen (nicht behoben, dem Nutzer zur Entscheidung vorgelegt)

  • Inaktive Server: Ein inaktiver, nie abgefragter Server (isActive: false) wird nicht automatisch abgefragt (proxmox-scheduler.service.ts fragt nur aktive Server ab). Der neue Nicht-Admin-Hinweistext "...erscheinen nach der naechsten automatischen Abfrage" trifft fuer diesen Randfall nicht ganz zu. Das ist ein vorbestehender Randfall — auch die Admin-Karte beachtet isActive heute nicht — und liegt ausserhalb dieses Auftrags (Festlegung: kein Umbau). Wird hier nur vermerkt, nicht behoben.

Verifikation (alle gruen, wie im Plan verlangt)

  • pnpm --filter api exec vitest run src/proxmox - 82 Tests gruen (26 in proxmox-normalize.spec.ts, davon 6 neu)
  • pnpm --filter web exec vitest run "src/app/(portal)/modules/proxmox" src/messages - 32 Tests gruen
  • pnpm --filter api type-check und pnpm --filter web type-check - ohne Fehler
  • biome lint auf den 6 Plan-Dateien - ohne Befund
  • biome check auf der neuen Datei proxmox-page-roles.test.tsx - ohne Befund (nach biome check --write fuer Formatierung)
  • biome check auf den 5 vorbestehenden Dateien - weiterhin genau 6 Befunde (vorbestehende Formatierung + organizeImports in page.tsx), keine neuen Befunde — wie im Plan festgelegt nicht behoben (fremder Diff)
  • Keine Container-Neubauten, kein Deploy, keine Browserpruefung — wie im Plan vorgesehen

User Setup Required

None - keine externe Konfiguration noetig.

Next Phase Readiness

  • Die offene Luecke (Wahrheit 7) aus 260923-dhh-VERIFICATION.md ist geschlossen; das Proxmox-Modul hat keine bekannten offenen Abnahmebefunde mehr.
  • Offen beim Nutzer (keine Entscheidung noetig, nur zur Kenntnis): der oben vermerkte Randfall bei inaktiven, nie abgefragten Servern.

Self-Check: PASSED

Alle im Plan genannten Dateien wurden gefunden, alle vier Commits sind im Log nachweisbar.


Plan: 260923-le6 Completed: 2026-09-23