From cad76edaad1abc9e5dd5d4dd2430a65881325634 Mon Sep 17 00:00:00 2001 From: "Torsten Schulz (local)" Date: Thu, 6 Nov 2025 08:13:43 +0100 Subject: [PATCH] Enhance MemberTransferService and MemberTransferDialog with detailed debug logging Added extensive debug logging to the MemberTransferService to track member transfer details, including logging the first few members and bulk data structure. Updated the MemberTransferDialog to clear login credentials upon loading and closing, improving user experience and ensuring a clean state for configuration loading. These enhancements aim to facilitate troubleshooting and provide better visibility into the member transfer process. --- backend/services/memberTransferService.js | 70 +++++++++++++++++++ .../src/components/MemberTransferDialog.vue | 10 +++ 2 files changed, 80 insertions(+) diff --git a/backend/services/memberTransferService.js b/backend/services/memberTransferService.js index f5e7207..0cd7db5 100644 --- a/backend/services/memberTransferService.js +++ b/backend/services/memberTransferService.js @@ -251,6 +251,12 @@ class MemberTransferService { config.transferTemplate, member ); + + // Debug-Logging: Erste 3 Mitglieder vollständig loggen + if (membersArray.length < 3) { + devLog(`[transferMembers] Mitglied ${membersArray.length + 1} (${member.firstName} ${member.lastName}):`, JSON.stringify(memberData, null, 2)); + } + membersArray.push(memberData); } catch (error) { devLog(`[transferMembers] Error processing ${member.firstName} ${member.lastName}:`, error); @@ -261,6 +267,8 @@ class MemberTransferService { } } + devLog(`[transferMembers] Anzahl zu übertragender Mitglieder: ${membersArray.length}`); + // Bulk-Objekt erstellen let bulkData; @@ -305,6 +313,30 @@ class MemberTransferService { }; } + // Debug-Logging: Was wird übertragen? + devLog('[transferMembers] Bulk-Daten werden übertragen:'); + devLog('[transferMembers] Endpoint:', transferEndpointUrl); + devLog('[transferMembers] Methode:', config.transferMethod || 'POST'); + devLog('[transferMembers] Format:', config.transferFormat || 'json'); + devLog('[transferMembers] Anzahl Mitglieder im Bulk:', membersArray.length); + + // Logge die ersten 2 Mitglieder vollständig für Debugging + if (membersArray.length > 0) { + devLog('[transferMembers] Erstes Mitglied (Beispiel):', JSON.stringify(membersArray[0], null, 2)); + if (membersArray.length > 1) { + devLog('[transferMembers] Zweites Mitglied (Beispiel):', JSON.stringify(membersArray[1], null, 2)); + } + } + + // Logge die vollständige Bulk-Struktur (begrenzt auf erste 1000 Zeichen) + const bulkDataString = JSON.stringify(bulkData, null, 2); + if (bulkDataString.length > 1000) { + devLog('[transferMembers] Bulk-Daten (erste 1000 Zeichen):', bulkDataString.substring(0, 1000) + '...'); + devLog('[transferMembers] Bulk-Daten Gesamtlänge:', bulkDataString.length, 'Zeichen'); + } else { + devLog('[transferMembers] Vollständige Bulk-Daten:', bulkDataString); + } + const transferResult = await this.transferMember( transferEndpointUrl, config.transferMethod || 'POST', @@ -551,6 +583,44 @@ class MemberTransferService { */ async transferMember(endpoint, method, format, data, authToken, sessionCookie) { try { + // Debug-Logging + devLog('[transferMember] Starte Übertragung:'); + devLog('[transferMember] Endpoint:', endpoint); + devLog('[transferMember] Method:', method); + devLog('[transferMember] Format:', format); + devLog('[transferMember] AuthToken vorhanden:', !!authToken); + devLog('[transferMember] SessionCookie vorhanden:', !!sessionCookie); + + // Logge Daten-Struktur (ohne vollständige Daten bei großen Objekten) + if (typeof data === 'object' && data !== null) { + if (Array.isArray(data)) { + devLog('[transferMember] Daten ist Array mit', data.length, 'Elementen'); + if (data.length > 0) { + devLog('[transferMember] Erstes Array-Element:', JSON.stringify(data[0], null, 2)); + } + } else if (data.members && Array.isArray(data.members)) { + devLog('[transferMember] Daten enthält members-Array mit', data.members.length, 'Elementen'); + if (data.members.length > 0) { + devLog('[transferMember] Erstes Mitglied im members-Array:', JSON.stringify(data.members[0], null, 2)); + if (data.members.length > 1) { + devLog('[transferMember] Zweites Mitglied im members-Array:', JSON.stringify(data.members[1], null, 2)); + } + } + } else { + const dataString = JSON.stringify(data, null, 2); + if (dataString.length > 500) { + devLog('[transferMember] Daten (erste 500 Zeichen):', dataString.substring(0, 500) + '...'); + } else { + devLog('[transferMember] Vollständige Daten:', dataString); + } + } + } else { + devLog('[transferMember] Daten-Typ:', typeof data); + if (typeof data === 'string') { + devLog('[transferMember] Daten-String (erste 500 Zeichen):', data.substring(0, 500)); + } + } + let requestConfig = { url: endpoint, method: method.toUpperCase(), diff --git a/frontend/src/components/MemberTransferDialog.vue b/frontend/src/components/MemberTransferDialog.vue index 0dad70e..bfda938 100644 --- a/frontend/src/components/MemberTransferDialog.vue +++ b/frontend/src/components/MemberTransferDialog.vue @@ -172,7 +172,17 @@ export default { watch: { modelValue(newVal) { if (newVal) { + // WICHTIG: Felder sofort leeren, bevor Konfiguration geladen wird + this.loginCredentials = { + username: '', + password: '', + additionalField1: '', + additionalField2: '' + }; this.loadSavedConfig(); + } else { + // Beim Schließen auch leeren + this.resetForm(); } } },