Add awards system with progress tracking

Implement awards display with progress calculation based on QSO data.

## Backend
- Add awards service with progress calculation logic
- Support for DXCC, WAS, VUCC, and satellite awards
- Filter QSOs by band, mode, and other criteria
- Calculate worked/confirmed entities per award
- API endpoints:
  - GET /api/awards - List all awards
  - GET /api/awards/:id/progress - Get award progress
  - GET /api/awards/:id/entities - Get detailed entity breakdown

## Frontend
- Create awards listing page with progress cards
- Add Awards link to navigation bar
- Display award progress bars with worked/confirmed counts
- Link to individual award detail pages (to be implemented)
- Copy award definitions to static folder

## Award Definitions
- DXCC Mixed Mode (100 entities)
- DXCC CW (100 entities, CW only)
- WAS Mixed Mode (50 states)
- VUCC Satellite (100 grids)
- RS-44 Satellite Award (100 QSOs)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-16 08:47:30 +01:00
parent 31488e556c
commit 884bdb436d
10 changed files with 755 additions and 1 deletions

View File

@@ -0,0 +1,24 @@
{
"id": "dxcc-cw",
"name": "DXCC CW",
"description": "Confirm 100 DXCC entities using CW mode",
"category": "dxcc",
"rules": {
"type": "filtered",
"baseRule": {
"type": "entity",
"entityType": "dxcc",
"target": 100
},
"filters": {
"operator": "AND",
"filters": [
{
"field": "mode",
"operator": "eq",
"value": "CW"
}
]
}
}
}

View File

@@ -0,0 +1,11 @@
{
"id": "dxcc-mixed",
"name": "DXCC Mixed Mode",
"description": "Confirm 100 DXCC entities on any band/mode",
"category": "dxcc",
"rules": {
"type": "entity",
"entityType": "dxcc",
"target": 100
}
}

View File

@@ -0,0 +1,21 @@
{
"id": "sat-rs44",
"name": "RS-44 Satellite",
"description": "Work 44 QSOs on satellite RS-44",
"category": "custom",
"rules": {
"type": "counter",
"target": 44,
"countBy": "qso",
"filters": {
"operator": "AND",
"filters": [
{
"field": "satName",
"operator": "eq",
"value": "RS-44"
}
]
}
}
}

View File

@@ -0,0 +1,21 @@
{
"id": "vucc-satellite",
"name": "VUCC Satellite",
"description": "Confirm 100 unique grid squares via satellite",
"category": "vucc",
"rules": {
"type": "entity",
"entityType": "grid",
"target": 100,
"filters": {
"operator": "AND",
"filters": [
{
"field": "satellite",
"operator": "eq",
"value": true
}
]
}
}
}

View File

@@ -0,0 +1,21 @@
{
"id": "was-mixed",
"name": "WAS Mixed Mode",
"description": "Confirm all 50 US states",
"category": "was",
"rules": {
"type": "entity",
"entityType": "state",
"target": 50,
"filters": {
"operator": "AND",
"filters": [
{
"field": "entity",
"operator": "eq",
"value": "United States"
}
]
}
}
}