feat(web): Herkunft der Fehlermeldung — Cookie tessera_desktop_client und Client-Felder in der Nutzlast
Die Middleware liest jetzt zusaetzlich dv/dc/dos aus der Anfrage und legt daraus das Cookie tessera_desktop_client an (bereinigt per Muster, nur wenn alle drei Werte gueltig sind); desktop-client.ts liest es zurueck. Der Fehler-melden-Dialog fuellt daraus vier neue Nutzlastfelder (clientKind/clientOs/clientVersion/clientCommit), damit die API die Herkunft der Meldung ausweisen kann. Ohne das zweite Cookie (alter Client) bleibt es bei "Desktop-App (unbekannt)". Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016g2npLxzH5gZpg8s2S6vKh
This commit is contained in:
@@ -13,6 +13,12 @@
|
||||
* — das Bild als Datei, alle uebrigen Felder als Text — mit Cookie
|
||||
* (`credentials: 'include'`) und OHNE eigenen Content-Type-Header: die
|
||||
* Multipart-Grenze setzt der Browser selbst.
|
||||
*
|
||||
* Seit quick-260918-gza traegt die Nutzlast zusaetzlich vier Herkunftsfelder
|
||||
* (`clientKind`, `clientOs`, `clientVersion`, `clientCommit`) — im Browser
|
||||
* `clientKind=browser` mit leeren uebrigen Feldern, in der Desktop-App aus
|
||||
* `getDesktopClientInfo()` (apps/web/src/lib/desktop-client.ts). Die API
|
||||
* leitet daraus das Betreff-Kuerzel und die Zeile `Herkunft:` ab.
|
||||
*/
|
||||
|
||||
const API_URL = process.env.NEXT_PUBLIC_API_URL || 'http://localhost:3001';
|
||||
@@ -79,6 +85,10 @@ export interface BugReportPayload {
|
||||
clientTime: string;
|
||||
errors: string[];
|
||||
screenshot: Blob | null;
|
||||
clientKind: 'desktop' | 'browser';
|
||||
clientOs: string;
|
||||
clientVersion: string;
|
||||
clientCommit: string;
|
||||
}
|
||||
|
||||
export type BugReportResult = { ok: true } | { ok: false; status: number };
|
||||
@@ -93,6 +103,10 @@ export async function sendBugReport(p: BugReportPayload): Promise<BugReportResul
|
||||
body.append('userAgent', p.userAgent);
|
||||
body.append('viewport', p.viewport);
|
||||
body.append('clientTime', p.clientTime);
|
||||
body.append('clientKind', p.clientKind);
|
||||
body.append('clientOs', p.clientOs);
|
||||
body.append('clientVersion', p.clientVersion);
|
||||
body.append('clientCommit', p.clientCommit);
|
||||
for (const line of p.errors) body.append('errors', line);
|
||||
if (p.screenshot) body.append('screenshot', p.screenshot, 'screenshot.png');
|
||||
|
||||
|
||||
Reference in New Issue
Block a user