feat: ship DDFM v2 (postal-code OR-rule) via the award catalog so it reaches the team
DDFM now derives the French department from the address postal code, not only
from a note typed by hand — the catalog def gains the address OR-rule (\d{2}\d{3}
-> Dxx), France+Corsica scope, and version 2. On next launch every operator whose
DDFM is unedited auto-upgrades to it (user-edited copies are offered it); the
materialised award_refs then recompute so ~500+ French QSOs gain their department.
Also: a catalog definition update now clears the award_refs backfill flag, so any
future catalog bump self-heals the stored columns without a manual flag bump.
This commit is contained in:
@@ -2452,6 +2452,14 @@ func (a *App) migrateAwardDefs() {
|
|||||||
applog.Printf("awards: %s updated from the catalog (v%d)", code, defByCode(migrated, code).Version)
|
applog.Printf("awards: %s updated from the catalog (v%d)", code, defByCode(migrated, code).Version)
|
||||||
a.reseedRefsFromCatalog(code)
|
a.reseedRefsFromCatalog(code)
|
||||||
}
|
}
|
||||||
|
// A catalog definition changed (e.g. DDFM gained the postal-code OR-rule), so
|
||||||
|
// the materialised award_refs on existing QSOs are now stale. Clear the
|
||||||
|
// one-shot backfill flag; backfillAwardRefsOnce runs later in startup and will
|
||||||
|
// re-materialise every row against the updated definitions. This makes ANY
|
||||||
|
// future catalog bump self-heal the stored columns without a manual flag bump.
|
||||||
|
if len(updated) > 0 {
|
||||||
|
_ = a.settings.Set(a.ctx, keyAwardsMaterialized, "")
|
||||||
|
}
|
||||||
// Version-gated correction of the built-in awards' Validate sources, which
|
// Version-gated correction of the built-in awards' Validate sources, which
|
||||||
// an earlier version wrongly set equal to Confirm (so VALIDATED == CONFIRMED
|
// an earlier version wrongly set equal to Confirm (so VALIDATED == CONFIRMED
|
||||||
// even for paper-QSL-only entities). Re-apply the canonical Confirm/Validate
|
// even for paper-QSL-only entities). Re-apply the canonical Confirm/Validate
|
||||||
|
|||||||
@@ -7,8 +7,17 @@
|
|||||||
"type": "QSOFIELDS",
|
"type": "QSOFIELDS",
|
||||||
"field": "note",
|
"field": "note",
|
||||||
"pattern": "(?i)\\b(D\\d{1,2}[AB]?)\\b",
|
"pattern": "(?i)\\b(D\\d{1,2}[AB]?)\\b",
|
||||||
|
"or_rules": [
|
||||||
|
{
|
||||||
|
"field": "address",
|
||||||
|
"match_by": "code",
|
||||||
|
"pattern": "\\b(\\d{2})\\d{3}\\b",
|
||||||
|
"prefix": "D"
|
||||||
|
}
|
||||||
|
],
|
||||||
"dxcc_filter": [
|
"dxcc_filter": [
|
||||||
227
|
227,
|
||||||
|
214
|
||||||
],
|
],
|
||||||
"confirm": [
|
"confirm": [
|
||||||
"lotw",
|
"lotw",
|
||||||
@@ -17,7 +26,9 @@
|
|||||||
"validate": [
|
"validate": [
|
||||||
"lotw"
|
"lotw"
|
||||||
],
|
],
|
||||||
|
"ref_display": "name",
|
||||||
"total": 96,
|
"total": 96,
|
||||||
"builtin": true
|
"builtin": true,
|
||||||
|
"version": 2
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user