Compare commits

...

3 Commits

Author SHA1 Message Date
310b1547c4 revert: remove LoTW sync type support (QSL/QSO delta/full)
This reverts commit 5b78935 which added:
- Sync type parameter (qsl_delta, qsl_full, qso_delta, qso_full)
- getLastLoTWQSODate() function
- Sync type dropdown on QSO page
- Job queue handling of sync types

Reason: LoTW doesn't provide DXCC entity data for unconfirmed QSOs,
which causes award calculation issues. Going back to QSL-only sync.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-20 12:28:23 +01:00
688b0fc255 feat: add "Confirmed by at least 1 service" filter to QSO view
- Add 'any' confirmation type filter showing QSOs confirmed by LoTW OR DCL
- Backend logic: lotwQslRstatus = 'Y' OR dclQslRstatus = 'Y'
- Frontend dropdown option positioned after "All QSOs"
- Shows all QSOs confirmed by at least one service (LoTW, DCL, or both)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-20 12:14:52 +01:00
5b7893536e feat: add LoTW sync type support (QSL/QSO delta/full)
- Add syncType parameter to LoTW sync: 'qsl_delta', 'qsl_full', 'qso_delta', 'qso_full'
- qsl_* = only confirmed QSOs (qso_qsl=yes)
- qso_* = all QSOs confirmed+unconfirmed (qso_qsl=no)
- delta = incremental sync with date filter
- full = sync all records without date filter
- Add getLastLoTWQSODate() for QSO-based incremental sync
- Add sync type dropdown selector on QSO page
- Update job queue service to handle sync types
- Update API endpoint to accept syncType in request body

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-20 12:09:28 +01:00
2 changed files with 6 additions and 0 deletions

View File

@@ -401,6 +401,11 @@ export async function getUserQSOs(userId, filters = {}, options = {}) {
// Both confirmed: Confirmed by LoTW AND DCL // Both confirmed: Confirmed by LoTW AND DCL
conditions.push(eq(qsos.lotwQslRstatus, 'Y')); conditions.push(eq(qsos.lotwQslRstatus, 'Y'));
conditions.push(eq(qsos.dclQslRstatus, 'Y')); conditions.push(eq(qsos.dclQslRstatus, 'Y'));
} else if (filters.confirmationType === 'any') {
// Confirmed by at least 1 service: LoTW OR DCL
conditions.push(
sql`(${qsos.lotwQslRstatus} = 'Y' OR ${qsos.dclQslRstatus} = 'Y')`
);
} else if (filters.confirmationType === 'none') { } else if (filters.confirmationType === 'none') {
// Not confirmed: Not confirmed by LoTW AND not confirmed by DCL // Not confirmed: Not confirmed by LoTW AND not confirmed by DCL
conditions.push( conditions.push(

View File

@@ -577,6 +577,7 @@
<select bind:value={filters.confirmationType} on:change={applyFilters} class="confirmation-filter"> <select bind:value={filters.confirmationType} on:change={applyFilters} class="confirmation-filter">
<option value="all">All QSOs</option> <option value="all">All QSOs</option>
<option value="any">Confirmed by at least 1 service</option>
<option value="lotw">LoTW Only</option> <option value="lotw">LoTW Only</option>
<option value="dcl">DCL Only</option> <option value="dcl">DCL Only</option>
<option value="both">Both Confirmed</option> <option value="both">Both Confirmed</option>