feat(bug-reports): Herkunft der Fehlermeldung im Betreff-Kuerzel und als Zeile Herkunft ausweisen
WebView2 (Windows) sieht im User-Agent aus wie Edge, WebKitGTK (Linux) wie Safari — im Postfach war eine Client-Meldung von einer Browser-Meldung nicht zu unterscheiden. Neuer reiner Helfer origin.ts leitet aus vier optionalen DTO-Feldern (Desktop-App) bzw. dem User-Agent (Browser) ein Betreff-Kuerzel und eine Zeile "Herkunft: ..." ab; rein informativ, laengenbegrenzt, nichts wird gespeichert (T-GZA-01). Browser-Pfad ist damit Ende-zu-Ende fertig. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016g2npLxzH5gZpg8s2S6vKh
This commit is contained in:
@@ -2,6 +2,7 @@ import { Expose, Transform } from 'class-transformer';
|
||||
import {
|
||||
ArrayMaxSize,
|
||||
IsArray,
|
||||
IsIn,
|
||||
IsOptional,
|
||||
IsString,
|
||||
MaxLength,
|
||||
@@ -21,6 +22,16 @@ import {
|
||||
* Dienst nimmt beides ausschliesslich aus dem Sitzungsnachweis
|
||||
* (`@CurrentUser()`), und `whitelist: true` der globalen ValidationPipe
|
||||
* entfernt jedes Fremdfeld, das ein Client hier trotzdem mitschickt.
|
||||
*
|
||||
* Vier weitere Felder (`clientKind`, `clientOs`, `clientVersion`,
|
||||
* `clientCommit`) kommen seit quick-260918-gza vom Web-Client dazu — im
|
||||
* Browser als `clientKind=browser` mit leeren uebrigen Feldern, in der
|
||||
* Desktop-App aus dem Cookie `tessera_desktop_client`. Sie sind optional,
|
||||
* damit aeltere Web-Baue weiterhin gueltig senden (der Dienst faellt ohne
|
||||
* sie auf `browser` zurueck); `whitelist: true` verlangt ihre Deklaration
|
||||
* hier, sonst wuerde die Pipe sie stillschweigend entfernen. Sie dienen
|
||||
* ausschliesslich der Anzeige in der Mail und sind laengenbegrenzt
|
||||
* (T-GZA-01) — siehe `origin.ts`.
|
||||
*/
|
||||
export class BugReportDto {
|
||||
/** Freitext „Was ist passiert?“ — optional, hoechstens 4000 Zeichen. */
|
||||
@@ -77,4 +88,27 @@ export class BugReportDto {
|
||||
@IsString({ each: true })
|
||||
@MaxLength(1000, { each: true })
|
||||
errors!: string[];
|
||||
|
||||
/** `desktop` oder `browser` — vom Web-Client gesetzt, siehe Kopfkommentar. */
|
||||
@IsOptional()
|
||||
@IsIn(['desktop', 'browser'])
|
||||
clientKind?: 'desktop' | 'browser';
|
||||
|
||||
/** Betriebssystem der Desktop-App (`windows`, `linux`, `macos`, …), unbeglaubigt. */
|
||||
@IsOptional()
|
||||
@IsString()
|
||||
@MaxLength(20)
|
||||
clientOs?: string;
|
||||
|
||||
/** Version der Desktop-App (`CARGO_PKG_VERSION`), unbeglaubigt. */
|
||||
@IsOptional()
|
||||
@IsString()
|
||||
@MaxLength(40)
|
||||
clientVersion?: string;
|
||||
|
||||
/** Commit-Stempel der Desktop-App (`APP_COMMIT`), darf leer sein. */
|
||||
@IsOptional()
|
||||
@IsString()
|
||||
@MaxLength(40)
|
||||
clientCommit?: string;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user