Implement achievements milestone feature for awards with configurable levels (Silver, Gold, Platinum, etc.) that track progress beyond the base award target. Achievements display earned badges and progress bar toward next level. Backend: - Add calculateAchievementProgress() helper in awards.service.js - Include achievements field in getAllAwards() and getAwardById() - Add achievements validation in awards-admin.service.js - Update PUT endpoint validation schema to include achievements field Frontend: - Add achievements section to award detail page with gold badges - Add reactive achievement progress calculation that respects mode filter - Add achievements tab to admin create/edit pages with full CRUD Award Definitions: - Add achievements to DXCC (100/200/300/500) - Add achievements to DLD (50/100/200/300) - Add achievements to WAS (30/40/50) Co-Authored-By: Claude <noreply@anthropic.com>
74 lines
1.2 KiB
JSON
74 lines
1.2 KiB
JSON
{
|
|
"id": "dxcc",
|
|
"name": "DXCC",
|
|
"description": "Confirm 100 DXCC entities on HF bands",
|
|
"caption": "Contact and confirm 100 different DXCC entities on HF bands (160m-10m). Only HF band QSOs count toward this award. QSOs are confirmed when LoTW QSL is received.",
|
|
"category": "dxcc",
|
|
"rules": {
|
|
"type": "entity",
|
|
"entityType": "dxcc",
|
|
"target": 100,
|
|
"displayField": "entity",
|
|
"allowed_bands": [
|
|
"160m",
|
|
"80m",
|
|
"60m",
|
|
"40m",
|
|
"30m",
|
|
"20m",
|
|
"17m",
|
|
"15m",
|
|
"12m",
|
|
"10m"
|
|
],
|
|
"stations": []
|
|
},
|
|
"modeGroups": {
|
|
"Digi-Modes": [
|
|
"FT4",
|
|
"FT8",
|
|
"JT65",
|
|
"JT9",
|
|
"MFSK",
|
|
"PSK31",
|
|
"RTTY"
|
|
],
|
|
"Classic Digi-Modes": [
|
|
"JT65",
|
|
"JT9",
|
|
"PSK31",
|
|
"RTTY"
|
|
],
|
|
"Mixed-Mode w/o WSJT-Modes": [
|
|
"AM",
|
|
"CW",
|
|
"FM",
|
|
"PSK31",
|
|
"RTTY",
|
|
"SSB"
|
|
],
|
|
"Phone-Modes": [
|
|
"AM",
|
|
"FM",
|
|
"SSB"
|
|
]
|
|
},
|
|
"achievements": [
|
|
{
|
|
"name": "Silver",
|
|
"threshold": 100
|
|
},
|
|
{
|
|
"name": "Gold",
|
|
"threshold": 200
|
|
},
|
|
{
|
|
"name": "Platinum",
|
|
"threshold": 300
|
|
},
|
|
{
|
|
"name": "All",
|
|
"threshold": 341
|
|
}
|
|
]
|
|
} |