docs(quick-260918-gza): Fehlermeldung — Herkunft ausweisen (Browser/Desktop-App, OS, App-Version)
Plan, Ausfuehrungsbericht, Verifikation (9/9 must_haves) und Aktenstand; lokaler Nachweis per Playwright/mailhog fuer Browser- und Desktop-Marker-Fall. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016g2npLxzH5gZpg8s2S6vKh
This commit is contained in:
+116
@@ -0,0 +1,116 @@
|
||||
---
|
||||
status: complete
|
||||
phase: quick-260918-gza
|
||||
plan: 01
|
||||
subsystem: bug-reports
|
||||
tags: [fehler-melden-knopf, herkunft, desktop-app, betreff-kuerzel]
|
||||
dependency-graph:
|
||||
requires: [quick-260914-m97, quick-260917-h2s]
|
||||
provides: [herkunfts-kuerzel-im-betreff, herkunftszeile-in-der-mail, cookie-tessera_desktop_client]
|
||||
affects: [apps/api/src/bug-reports, apps/desktop/src-tauri, apps/web/src/middleware.ts, apps/web/src/lib, apps/web/src/components/bug-report]
|
||||
tech-stack:
|
||||
added: []
|
||||
patterns: [reine-helferfunktion-mit-eigener-spec, cookie-huelle-um-bestehenden-marker-mechanismus]
|
||||
key-files:
|
||||
created:
|
||||
- apps/api/src/bug-reports/origin.ts
|
||||
- apps/api/src/bug-reports/origin.spec.ts
|
||||
- apps/web/src/lib/bug-report-api.test.ts
|
||||
modified:
|
||||
- apps/api/src/bug-reports/dto/bug-report.dto.ts
|
||||
- apps/api/src/bug-reports/bug-reports.service.ts
|
||||
- apps/api/src/bug-reports/bug-reports.service.spec.ts
|
||||
- apps/api/src/bug-reports/bug-reports.controller.spec.ts
|
||||
- apps/desktop/src-tauri/src/lib.rs
|
||||
- apps/web/src/middleware.ts
|
||||
- apps/web/src/middleware.test.ts
|
||||
- apps/web/src/lib/desktop-client.ts
|
||||
- apps/web/src/lib/desktop-client.test.ts
|
||||
- apps/web/src/lib/bug-report-api.ts
|
||||
- apps/web/src/components/bug-report/bug-report-dialog.tsx
|
||||
- apps/web/src/components/bug-report/bug-report-button.test.tsx
|
||||
- CHANGELOG.md
|
||||
- docs/anleitung-administration.md
|
||||
- docs/anleitung-betrieb.md
|
||||
decisions:
|
||||
- "Marker-/Cookie-Mechanismus aus quick-260917-h2s erweitert statt WebView-User-Agent zu ueberschreiben (Vorgabe des Orchestrators im Plan, keine Abweichung)."
|
||||
- "Regex statt neuer ua-parser-Bibliothek in origin.ts — fuenf Browser/fuenf Betriebssysteme reichen fuer ein Postfach, kein neues Paket."
|
||||
metrics:
|
||||
duration: ca. 45 min
|
||||
completed: 2026-09-18
|
||||
actuals:
|
||||
tokens: 68000
|
||||
tasks: 3
|
||||
commits: 4
|
||||
plan_head_before: ab99a9a56e6d0e1e57e07c6feb2a2fa2ab866fc4
|
||||
---
|
||||
|
||||
# Phase quick-260918-gza Plan 01: Herkunft der Fehlermeldung ausweisen — Summary
|
||||
|
||||
Fehlermeldungen des Fehler-melden-Knopfs tragen jetzt ein Herkunfts-Kuerzel im Betreff (`[Browser]`, `[Desktop/Windows]`, `[Desktop/Linux]`, Rueckfall `[Desktop]`) und eine Zeile `Herkunft: …` im Text, abgeleitet vom reinen Helfer `origin.ts` aus vier neuen optionalen DTO-Feldern (Desktop-App, ueber ein zweites Cookie `tessera_desktop_client`) bzw. dem User-Agent (Browser).
|
||||
|
||||
## Ausgefuehrte Tasks
|
||||
|
||||
1. **API — `origin.ts`, DTO-Felder, Betreff-Kuerzel, Zeile `Herkunft:`** — Commit `7169472`
|
||||
2. **Desktop-Marker (`dv`/`dc`/`dos`), Middleware-Cookie, Web-Nutzlast** — zwei Commits:
|
||||
- `b03cb21` — Rust: `with_client_marker` (rein) + `with_desktop_marker` (Huelle)
|
||||
- `f245711` — Web: Middleware-Cookie, `desktop-client.ts`, `bug-report-api.ts`, Dialog
|
||||
3. **CHANGELOG und Handbuecher** — Commit `e2a7946`
|
||||
|
||||
## Commits
|
||||
|
||||
| Hash | Betreff |
|
||||
|------|---------|
|
||||
| `7169472` | feat(bug-reports): Herkunft der Fehlermeldung im Betreff-Kuerzel und als Zeile Herkunft ausweisen |
|
||||
| `b03cb21` | feat(desktop): Version, Stand und Betriebssystem im Desktop-Marker mitgeben (dv, dc, dos) |
|
||||
| `f245711` | feat(web): Herkunft der Fehlermeldung — Cookie tessera_desktop_client und Client-Felder in der Nutzlast |
|
||||
| `e2a7946` | docs: Fehlermeldungen — Herkunft (Browser/Desktop-App, Betriebssystem, Version) und Betreff-Kürzel (Handbücher, CHANGELOG) |
|
||||
|
||||
`commits: 4` (gemessen: `git rev-list --count ab99a9a..HEAD` = 4; `plan_head_before` ist der Stand vor Task 1).
|
||||
|
||||
## Testzahlen
|
||||
|
||||
| Suite | Vorher | Nachher | Befehl |
|
||||
|---|---|---|---|
|
||||
| API `src/bug-reports` | 11 | 24 (origin 10, service 10, controller 4) | `pnpm --filter @tessera/api exec vitest run src/bug-reports` |
|
||||
| API vollstaendig | — | 1124/1124 gruen (69 Testdateien) | `pnpm --filter @tessera/api exec vitest run` |
|
||||
| API `type-check` | — | ohne Fehler | `pnpm --filter @tessera/api type-check` |
|
||||
| Web `src/lib`, `middleware.test.ts`, `src/components/bug-report` | 11 (desktop-client) + 5 (middleware) + 11 (button) = 27 | 101/101 gruen (13 Testdateien; middleware 9, desktop-client 13, bug-report-api 3 NEU, bug-report-button 13) | `pnpm --filter @tessera/web exec vitest run src/lib src/middleware.test.ts src/components/bug-report` |
|
||||
| Web vollstaendig | — | 447/447 gruen (65 Testdateien) | `pnpm --filter @tessera/web exec vitest run` |
|
||||
| Web `type-check` | — | ohne Fehler | `pnpm --filter @tessera/web type-check` |
|
||||
| Rust `cargo test --lib` | 33 (STATE-Baseline) | 37/37 gruen, `cargo fmt --check` sauber | `apps/desktop/src-tauri && cargo fmt --check && cargo test --lib` |
|
||||
|
||||
Alle Zahlen erfuellen bzw. uebertreffen die Vorgaben aus `<success_criteria>` (Rust ≥ 5 Marker-Tests — 5 vorhanden: 3 umgestellt + leerer Commit + Huelle; Middleware 9; desktop-client ≥ 11 — 13; bug-report-api 3; Komponententest 13; origin ≥ 8 — 10; Service 10; Controller 4).
|
||||
|
||||
## Deviations from Plan
|
||||
|
||||
Keine — der Plan wurde wie geschrieben ausgefuehrt. Ergaenzend zwei kleine Implementierungsentscheidungen, die im Rahmen des Plans lagen (keine Abweichung von `<behavior>`/`<action>`):
|
||||
|
||||
- **Test 9 im Service-Spec** (Betreff/Zeile/Protokollzeile fuer Desktop/Windows) nutzt fuer die Pruefung "Logger genau einmal mit Kuerzel gerufen" eine zweite, frische `makeService()`-Instanz, damit der Aufruf-Zaehler nicht durch den vorherigen `submit()` in demselben Test verfaelscht wird. Ergebnis entspricht exakt der im Plan verlangten Erwartung.
|
||||
- In `origin.ts` wurde `clean()` mit Default-Parameter `max = 40` implementiert (im Plan als `clean(value, max = 40)` vorgegeben) — keine Abweichung, nur Bestaetigung der genauen Umsetzung.
|
||||
|
||||
## Known Stubs
|
||||
|
||||
Keine.
|
||||
|
||||
## Threat Flags
|
||||
|
||||
Keine neue, im Plan nicht erfasste Sicherheitsflaeche gefunden — alle vier neuen DTO-Felder, das zweite Cookie und die Bereinigungsregeln entsprechen exakt dem Threat Register des Plans (T-GZA-01 bis T-GZA-04, T-GZA-SC).
|
||||
|
||||
## Offene Punkte fuer den Orchestrator (Nachweis, nicht Aufgabe des Executors)
|
||||
|
||||
Laut `<verification>` des Plans, ausdruecklich NICHT Teil dieser Ausfuehrung:
|
||||
|
||||
1. **Browser-Fall (Playwright MCP + mailhog):** lokal `docker compose -f docker-compose.yml -f docker-compose.dev.yml up -d mailhog` und `docker compose up -d --build api web`, dann ueber den Fehler-melden-Knopf eine Meldung senden und in `http://localhost:8025` pruefen: Betreff `[Tessera Fehlermeldung] [Browser] dev dev - /…`, Zeile `Herkunft: Browser — Chrome <N> auf Linux`, Zeilen `Browser:`/`Fenster:` weiterhin vorhanden; `docker compose logs api | grep "Bug report"` zeigt das Kuerzel.
|
||||
2. **Desktop-Fall (Windows-Test-VM nach CI-Bau):** Client auf der VM installieren bzw. per In-App-Update aktualisieren (Zugang laut Memory `reference_windows_test_vm.md`), gegen alpha melden -> Betreff `[Desktop/Windows]`, Zeile `Herkunft: Desktop-App (Windows), Tessera-App <Version> · Stand <sha7>`.
|
||||
3. **Optional — alter Desktop-Client:** ein bestehender 1.2.0-Client ohne Update erzeugt `[Desktop]` und `Desktop-App (unbekannt)` — dokumentiertes Verhalten (Betriebshandbuch Kap. 10), kein zwingender Nachweis.
|
||||
|
||||
## Self-Check: PASSED
|
||||
|
||||
- `apps/api/src/bug-reports/origin.ts` — FOUND
|
||||
- `apps/api/src/bug-reports/origin.spec.ts` — FOUND
|
||||
- `apps/web/src/lib/bug-report-api.test.ts` — FOUND
|
||||
- Commit `7169472` — FOUND (`git log --oneline --all | grep 7169472`)
|
||||
- Commit `b03cb21` — FOUND
|
||||
- Commit `f245711` — FOUND
|
||||
- Commit `e2a7946` — FOUND
|
||||
Reference in New Issue
Block a user