Remove deprecated relationship change log migration and enhance error handling in FalukantService for partner retrieval
This commit is contained in:
@@ -3158,16 +3158,23 @@ class FalukantService extends BaseService {
|
||||
const step7Start = Date.now();
|
||||
const ownAge = calcAge(character.birthdate);
|
||||
if (ownAge >= 12 && family.relationships.length === 0) {
|
||||
family.possiblePartners = await this.getPossiblePartners(character.id);
|
||||
if (family.possiblePartners.length === 0) {
|
||||
// Asynchron erstellen, nicht blockieren
|
||||
this.createPossiblePartners(
|
||||
character.id,
|
||||
character.gender,
|
||||
character.regionId,
|
||||
character.titleOfNobility,
|
||||
ownAge
|
||||
).catch(err => console.error('[getFamily] Error creating partners (async):', err));
|
||||
try {
|
||||
family.possiblePartners = await this.getPossiblePartners(character.id);
|
||||
if (family.possiblePartners.length === 0) {
|
||||
// Asynchron erstellen, nicht blockieren
|
||||
this.createPossiblePartners(
|
||||
character.id,
|
||||
character.gender,
|
||||
character.regionId,
|
||||
character.titleOfNobility,
|
||||
ownAge
|
||||
).catch(err => console.error('[getFamily] Error creating partners (async):', err));
|
||||
}
|
||||
} catch (err) {
|
||||
// Fehler beim Laden nicht an Frontend durchreichen – Seite bleibt nutzbar, Log für Analyse
|
||||
console.error('[getFamily] getPossiblePartners failed (characterId=%s):', character.id, err?.message || err);
|
||||
if (err?.stack) console.error('[getFamily] getPossiblePartners stack:', err.stack);
|
||||
family.possiblePartners = [];
|
||||
}
|
||||
}
|
||||
timings.step7_possible_partners = Date.now() - step7Start;
|
||||
@@ -3399,32 +3406,43 @@ class FalukantService extends BaseService {
|
||||
{
|
||||
model: FalukantCharacter,
|
||||
as: 'proposedCharacter',
|
||||
required: false,
|
||||
attributes: ['id', 'firstName', 'lastName', 'gender', 'regionId', 'birthdate'],
|
||||
include: [
|
||||
{ model: FalukantPredefineFirstname, as: 'definedFirstName', attributes: ['name'] },
|
||||
{ model: FalukantPredefineLastname, as: 'definedLastName', attributes: ['name'] },
|
||||
{ model: TitleOfNobility, as: 'nobleTitle', attributes: ['labelTr'] },
|
||||
{ model: FalukantPredefineFirstname, as: 'definedFirstName', attributes: ['name'], required: false },
|
||||
{ model: FalukantPredefineLastname, as: 'definedLastName', attributes: ['name'], required: false },
|
||||
{ model: TitleOfNobility, as: 'nobleTitle', attributes: ['labelTr'], required: false },
|
||||
],
|
||||
},
|
||||
],
|
||||
});
|
||||
return proposals
|
||||
.filter(proposal => proposal.proposedCharacter !== null)
|
||||
.map(proposal => {
|
||||
const birthdate = new Date(proposal.proposedCharacter.birthdate);
|
||||
const age = calcAge(birthdate);
|
||||
return {
|
||||
id: proposal.id,
|
||||
requesterCharacterId: proposal.requesterCharacterId,
|
||||
proposedCharacterId: proposal.proposedCharacter.id,
|
||||
proposedCharacterName: `${proposal.proposedCharacter.definedFirstName?.name} ${proposal.proposedCharacter.definedLastName?.name}`,
|
||||
proposedCharacterGender: proposal.proposedCharacter.gender,
|
||||
proposedCharacterRegionId: proposal.proposedCharacter.regionId,
|
||||
proposedCharacterAge: age,
|
||||
proposedCharacterNobleTitle: proposal.proposedCharacter.nobleTitle?.labelTr || null,
|
||||
const valid = [];
|
||||
for (const proposal of proposals) {
|
||||
if (proposal.proposedCharacter == null) {
|
||||
console.warn('[getPossiblePartners] Proposal id=%s filtered out (proposedCharacterId=%s missing)', proposal.id, proposal.proposedCharacterId);
|
||||
continue;
|
||||
}
|
||||
const pc = proposal.proposedCharacter;
|
||||
const birthdate = pc.birthdate ? new Date(pc.birthdate) : null;
|
||||
const age = birthdate ? calcAge(birthdate) : 0;
|
||||
const name = `${pc.definedFirstName?.name ?? ''} ${pc.definedLastName?.name ?? ''}`.trim() || null;
|
||||
if (!name) {
|
||||
console.warn('[getPossiblePartners] Proposal id=%s filtered out (proposedCharacterId=%s has no name)', proposal.id, pc.id);
|
||||
continue;
|
||||
}
|
||||
valid.push({
|
||||
id: proposal.id,
|
||||
requesterCharacterId: proposal.requesterCharacterId,
|
||||
proposedCharacterId: pc.id,
|
||||
proposedCharacterName: name,
|
||||
proposedCharacterGender: pc.gender,
|
||||
proposedCharacterRegionId: pc.regionId,
|
||||
proposedCharacterAge: age,
|
||||
proposedCharacterNobleTitle: pc.nobleTitle?.labelTr ?? null,
|
||||
cost: proposal.cost,
|
||||
};
|
||||
});
|
||||
});
|
||||
}
|
||||
return valid;
|
||||
}
|
||||
|
||||
async createPossiblePartners(requestingCharacterId, requestingCharacterGender, requestingRegionId, requestingCharacterTitleOfNobility, ownAge) {
|
||||
|
||||
Reference in New Issue
Block a user