diff --git a/backend/services/falukantService.js b/backend/services/falukantService.js index aa7c321..bbe04b6 100644 --- a/backend/services/falukantService.js +++ b/backend/services/falukantService.js @@ -3258,12 +3258,14 @@ class FalukantService extends BaseService { if (user.money < cost) { throw new PreconditionError('insufficientFunds'); } - const traits = gift.characterTraits; + const traits = Array.isArray(gift.characterTraits) ? gift.characterTraits : []; + // Wenn keine passenden characterTraits gefunden wurden, behandeln wir das als neutralen Wert (0) + // statt einen Fehler zu werfen. Das erlaubt das Versenden, auch wenn keine Trait-Übereinstimmung vorliegt. if (!traits.length) { - throw new Error('noTraits'); + console.warn(`sendGift: no matching characterTraits for user id=${user.id} giftId=${giftId}`); } - // Finde den höchsten Charakterwert (wie im Frontend) - const highestCharacterValue = Math.max(...traits.map(ct => ct.suitability)); + // Finde den höchsten Charakterwert (wie im Frontend). Falls keine Traits vorhanden, 0. + const highestCharacterValue = traits.length ? Math.max(...traits.map(ct => ct.suitability)) : 0; const moodRecord = gift.promotionalgiftmoods[0]; if (!moodRecord) { throw new Error('noMoodData');