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:
24
src/frontend/static/award-definitions/dxcc-cw.json
Normal file
24
src/frontend/static/award-definitions/dxcc-cw.json
Normal 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"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
11
src/frontend/static/award-definitions/dxcc.json
Normal file
11
src/frontend/static/award-definitions/dxcc.json
Normal 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
|
||||
}
|
||||
}
|
||||
21
src/frontend/static/award-definitions/sat-rs44.json
Normal file
21
src/frontend/static/award-definitions/sat-rs44.json
Normal 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"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
21
src/frontend/static/award-definitions/vucc-sat.json
Normal file
21
src/frontend/static/award-definitions/vucc-sat.json
Normal 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
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
21
src/frontend/static/award-definitions/was.json
Normal file
21
src/frontend/static/award-definitions/was.json
Normal 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"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user