docs: add modeGroups feature to award system specification

Document the modeGroups property for award definitions, which allows
creating convenient multi-mode filters in the award detail view.

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2026-01-23 07:27:29 +01:00
parent 85d171adc8
commit b9b6afedb8

View File

@@ -71,6 +71,7 @@ Every award definition is a JSON object with the following structure:
| `caption` | string | Yes | Detailed explanation of award requirements |
| `category` | string | Yes | Grouping category for UI organization (e.g., "dxcc", "darc", "vucc") |
| `rules` | object | Yes | Award calculation rules (see Rule Types below) |
| `modeGroups` | object | No | Mode group definitions for award detail view filtering (see Mode Groups below) |
---
@@ -456,6 +457,85 @@ This creates: DLD 80m CW (only QSOs on 80m band AND CW mode count).
---
## Mode Groups
Mode groups allow awards to define convenient multi-mode filters for the award detail view. This feature enables users to filter by multiple modes at once (e.g., all digital modes combined).
### Structure
```json
{
"modeGroups": {
"Group Display Name": ["mode1", "mode2", "mode3"],
"Another Group": ["modeA", "modeB"]
}
}
```
### Properties
| Property | Type | Required | Description |
|----------|------|----------|-------------|
| Key | string | Yes | Display name shown in mode filter dropdown |
| Value | array | Yes | Array of mode strings to include in the group |
### Behavior
- **Location**: Defined at award root level (not in `rules`)
- **Optional**: Awards without `modeGroups` work as before (backward compatible)
- **UI Integration**: Creates entries in mode filter dropdown with visual separator
- **Filtering**: Selecting a mode group filter shows QSOs matching ANY mode in the group
### Example: DXCC with Mode Groups
```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).",
"category": "dxcc",
"modeGroups": {
"Digi-Modes": ["FT8", "FT4", "MFSK", "PSK31", "RTTY", "JT65", "JT9"],
"Classic Digi-Modes": ["PSK31", "RTTY", "JT65", "JT9"],
"Mixed-Mode w/o WSJT-Modes": ["PSK31", "RTTY", "AM", "SSB", "FM", "CW"],
"Phone-Modes": ["AM", "SSB", "FM"]
},
"rules": {
"type": "entity",
"entityType": "dxcc",
"target": 100,
"allowed_bands": ["160m", "80m", "60m", "40m", "30m", "20m", "17m", "15m", "12m", "10m"]
}
}
```
### UI Display
In the award detail view, the mode filter dropdown shows:
- Mixed Mode (default - aggregates all modes by band)
- ───── (visual separator)
- Digi-Modes
- Classic Digi-Modes
- Mixed-Mode w/o WSJT-Modes
- Phone-Modes
- ───── (visual separator)
- CW (individual modes)
- FT8
- SSB
- etc.
### Common Mode Group Patterns
| Group Name | Modes | Use Case |
|------------|-------|----------|
| Digi-Modes | FT8, FT4, MFSK, PSK31, RTTY, JT65, JT9 | All digital modes |
| Classic Digi-Modes | PSK31, RTTY, JT65, JT9 | Pre-WSJT digital modes |
| Phone-Modes | AM, SSB, FM | All voice modes |
| Mixed-Mode w/o WSJT | PSK31, RTTY, AM, SSB, FM, CW | Traditional mixed mode award |
---
## QSO Database Schema
The award system relies on QSO records with specific fields.