Add counter award type support and debug logging
- Handle 'counter' type awards that count unique callsigns - Add debug logging to track QSO filtering progress - Normalize counter awards to use entityType: 'callsign' This fixes RS-44 satellite award to count unique callsigns worked via RS-44 satellite. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -74,6 +74,17 @@ function normalizeAwardRules(rules) {
|
||||
};
|
||||
}
|
||||
|
||||
// Handle "counter" type awards (like RS-44)
|
||||
// These count unique callsigns instead of entities
|
||||
if (rules.type === 'counter') {
|
||||
return {
|
||||
type: 'entity',
|
||||
entityType: rules.countBy === 'qso' ? 'callsign' : 'callsign',
|
||||
target: rules.target,
|
||||
filters: rules.filters,
|
||||
};
|
||||
}
|
||||
|
||||
return rules;
|
||||
}
|
||||
|
||||
@@ -88,16 +99,27 @@ export async function calculateAwardProgress(userId, award) {
|
||||
// Normalize rules to handle different formats
|
||||
rules = normalizeAwardRules(rules);
|
||||
|
||||
logger.debug('Calculating award progress', {
|
||||
userId,
|
||||
awardId: award.id,
|
||||
awardType: rules.type,
|
||||
entityType: rules.entityType,
|
||||
hasFilters: !!rules.filters,
|
||||
});
|
||||
|
||||
// Get all QSOs for user
|
||||
const allQSOs = await db
|
||||
.select()
|
||||
.from(qsos)
|
||||
.where(eq(qsos.userId, userId));
|
||||
|
||||
logger.debug('Total QSOs for user', { count: allQSOs.length });
|
||||
|
||||
// Apply filters if defined
|
||||
let filteredQSOs = allQSOs;
|
||||
if (rules.filters) {
|
||||
filteredQSOs = applyFilters(allQSOs, rules.filters);
|
||||
logger.debug('QSOs after filters', { count: filteredQSOs.length });
|
||||
}
|
||||
|
||||
// Calculate worked and confirmed entities
|
||||
|
||||
Reference in New Issue
Block a user