wuerth-plato: Kontext (Memory + settings.json) ins Sync-Repo aufnehmen

This commit is contained in:
marcus hinz
2026-06-17 20:19:42 +02:00
parent 67b83ba2be
commit f63f8c2f1c
41 changed files with 986 additions and 0 deletions
+31
View File
@@ -0,0 +1,31 @@
---
name: project_logging
description: Logging-Lösung — pino-BE + offline-fähiger FE-Log-Sync; Board (Phase 3) noch offen
metadata:
node_type: memory
type: project
originSessionId: c4e04d11-9b40-4c6a-9333-ce3bbf949ba2
---
**Implementiert 2026-06-03 (Branch development), Phase 1+2:**
- **BE:** `nestjs-pino` als App-Logger → strukturiertes JSON auf stdout (Cluster-Pipeline frisst das).
Kein pino-Transport (bricht unter webpack); lokal `… | npx pino-pretty`. Sensible Header redacted,
`/health` vom Auto-Logging ausgenommen. Bestehende `Logger.*`-Aufrufe routen automatisch durch pino.
`LOG_LEVEL`-Env steuert das Level.
- **`POST /client-logs`** (SessionAuthGuard, `ClientLogModule`): nimmt FE-Log-Batches, schreibt sie mit
`source:'fe'` + Actor aus der **Session** (nicht aus dem Body), Batch-Cap 100.
- **FE:** `clientLog` (frontend-common, Singleton): gedeckelter In-Memory-Ring (200), Batch-Sync (50) an
`/client-logs` sobald online — Heartbeat-getriggert, gleiches Muster wie Outbox. Retry bei Fehler,
kein Log-Loop, Einträge PII-frei (message/stack/code/context/path, gekürzt). In `main.js` verdrahtet:
`window.onerror` + `unhandledrejection` + Vue `errorHandler`, früh im Boot. (Vorher gingen uncaught
FE-Fehler komplett verloren.)
- Geteilter Typ `ClientLogEntry` in `@plato/models`. Commits `6f78d4b` (BE) + `fcc62f2` (FE).
**Bewusste Tradeoffs:** FE-Puffer ist in-memory (kein Storage-Dependency, übersteht keinen Reload —
Sync läuft aber sofort bei capture/online). errorList (Toasts) ist NICHT an clientLog gekoppelt — nur
uncaught/globale Fehler werden gesynct (Bridging wäre ein leichter Zusatz).
**Phase 3 (offen):** das Board. Empfehlung Grafana/Loki (oder vorhandener Cluster-Stack) — JSON-stdout ist
schon board-ready. Sentry/GlitchTip nur falls Stacktrace-Grouping gewünscht (SaaS = Egress/Ticket-Risiko →
self-service beachten). **Offene Frage an Marcus:** was bietet der Würth-Cluster schon (Grafana/Loki, ELK)?
Eine kleine `logger`-Abstraktion hält einen späteren Sentry/OTEL-Wechsel call-site-frei.