docs: expand Awards wiki — Test/Explain, Missing refs, n-fer, catalog updates

The matching "five rules" were already documented; add the parts that were only
in code: the per-QSO Explain trace (Test a callsign in the award editor), the
Missing-refs gap finder (in-scope-but-no-reference + bulk assign), how one QSO
credits several references (n-fer POTA / VUCC grid lines, comma/semicolon split),
code-vs-exact matching, and how built-in award updates skip awards you've edited.
This commit is contained in:
2026-07-24 14:48:40 +02:00
parent 15159f38a5
commit 1717677056
+56
View File
@@ -23,6 +23,17 @@ Plus a **leading/trailing** strip, a **prefix** prepended to found references, a
**dynamic** mode (any value counts, like POTA), and the **fallback searches** **dynamic** mode (any value counts, like POTA), and the **fallback searches**
described below. described below.
**One QSO can count for several references.** A contact always yields *every*
reference its field holds — the value is split on commas and semicolons, so an
n-fer POTA activation logged as `US-6544,US-0680` credits both parks, and a
grid-line VUCC contact credits each grid. There is no "one reference per QSO"
switch — it was never useful.
**Match by `code`** looks up each token of the field in the reference list (so a
partial or multi-value field still resolves), while **`exact match`** requires
the whole field to equal the reference. Use exact match when a substring would
cause false hits.
### The five rules to remember ### The five rules to remember
1. **Every regex is case-insensitive.** Award and per-reference patterns match 1. **Every regex is case-insensitive.** Award and per-reference patterns match
@@ -72,6 +83,42 @@ A custom province award where the log rarely spells the province out (it names a
Now a QSO is resolved by the province **name** if present, else by a **city** Now a QSO is resolved by the province **name** if present, else by a **city**
regex — first in the QTH, then in the address. First hit wins. regex — first in the QTH, then in the address. First hit wins.
## Why doesn't a QSO count? — Test & Missing refs
An award that matches nothing is the hardest thing to debug: the column is just
empty, and you can't tell whether the QSO was out of scope, the field was empty,
the rule looked in the wrong place, or the reference isn't on the list. Two tools
answer that.
### Test a callsign (award editor)
In the **award editor** there's a **Test** box: type a callsign and OpsLog
replays that award's rules against every QSO you have with that station and shows
what happened, step by step — the exact same code path the real matcher uses, so
what you see is what actually runs. For each contact it reports:
- whether the QSO is **in scope** (and, if not, *why* — wrong DXCC, band, mode,
emission, or outside the valid-from/to dates);
- each rule in turn (**primary**, then **Fallback 1, 2, …**), the **field value**
it scanned, the **candidates** it produced, which ones were **kept**, and which
were **rejected** (with the reason — e.g. "not on the reference list");
- rules that were **skipped** because an earlier one already matched;
- any **manual** reference you assigned by hand;
- the final **result** — what the QSO counts for.
This is the fastest way to fix a rule: if the primary scanned the wrong field, or
a candidate was rejected as unlisted, the trace says so directly.
### Missing refs (awards panel)
For an award scoped to a DXCC entity (DDFM, WAS, RAC, WAJA…), the **Missing refs**
view lists contacts that ARE in scope (right DXCC / band / mode / dates) **but
where no reference was found** — so they don't count yet. Sort by a column, tick
the matching contacts, and **assign the reference** to all of them at once (or
click a row to open the QSO and fix the field). Recompute and the fixed contacts
drop off the list. This is how you close the gaps a matcher can't fill on its own
(a French QSO logged without its department, say).
## Live detection & manual refs ## Live detection & manual refs
- References are detected **live** as you enter a callsign. - References are detected **live** as you enter a callsign.
@@ -89,6 +136,15 @@ regex — first in the QTH, then in the address. First hit wins.
or **both**. Award columns are opt-in per the Columns picker or **both**. Award columns are opt-in per the Columns picker
([[Recent QSOs and Filters]]). ([[Recent QSOs and Filters]]).
## Built-in updates vs your edits
Built-in awards ship with the app, definition **and** reference list. When a
newer version fixes a shipped award (a better fallback chain, a corrected
reference list), OpsLog offers to apply that update — **unless you've edited that
award yourself**, in which case your version is left alone (your work outranks
ours). Awards you created are never touched by updates. So you can freely tune a
built-in award without fear of a future release overwriting it.
## Rescan ## Rescan
**Rescan** re-pulls the logbook and recomputes — it picks up fresh LoTW / QRZ / **Rescan** re-pulls the logbook and recomputes — it picks up fresh LoTW / QRZ /