From 94aa261c9033aaa140ea1862d6e8cfc569def415 Mon Sep 17 00:00:00 2001 From: vikingowl Date: Sat, 18 Apr 2026 13:04:28 +0200 Subject: [PATCH] refactor(discovery/crawler): hoist land constants; document Tribe date format assumption --- .../internal/domain/discovery/crawler/constants.go | 11 +++++++++++ .../domain/discovery/crawler/marktkalendarium.go | 6 ------ .../discovery/crawler/mittelaltermarkt_online.go | 9 ++++++++- 3 files changed, 19 insertions(+), 7 deletions(-) create mode 100644 backend/internal/domain/discovery/crawler/constants.go diff --git a/backend/internal/domain/discovery/crawler/constants.go b/backend/internal/domain/discovery/crawler/constants.go new file mode 100644 index 0000000..5cc22b2 --- /dev/null +++ b/backend/internal/domain/discovery/crawler/constants.go @@ -0,0 +1,11 @@ +package crawler + +// Land names used in RawEvent/MergedEvent.Land and throughout discovery. ASCII +// forms (Oesterreich, not Österreich) to keep string comparisons and log output +// stable across locales. Defined in one place so every source parser references +// the same constants. +const ( + landDeutschland = "Deutschland" + landOesterreich = "Oesterreich" + landSchweiz = "Schweiz" +) diff --git a/backend/internal/domain/discovery/crawler/marktkalendarium.go b/backend/internal/domain/discovery/crawler/marktkalendarium.go index be8d05a..5a638bd 100644 --- a/backend/internal/domain/discovery/crawler/marktkalendarium.go +++ b/backend/internal/domain/discovery/crawler/marktkalendarium.go @@ -10,12 +10,6 @@ import ( "github.com/PuerkitoBio/goquery" ) -const ( - landDeutschland = "Deutschland" - landOesterreich = "Oesterreich" - landSchweiz = "Schweiz" -) - // MarktkalendariumSource scrapes www.marktkalendarium.de. Table rows: // Von | Bis | Veranstaltung | Ort | Platz | Webseite | Veranstalter type MarktkalendariumSource struct { diff --git a/backend/internal/domain/discovery/crawler/mittelaltermarkt_online.go b/backend/internal/domain/discovery/crawler/mittelaltermarkt_online.go index f0cf9ef..3a9d110 100644 --- a/backend/internal/domain/discovery/crawler/mittelaltermarkt_online.go +++ b/backend/internal/domain/discovery/crawler/mittelaltermarkt_online.go @@ -168,7 +168,14 @@ func tribeCountryToLand(country string) string { return "" } -// parseTribeDate parses the Tribe Events date format "YYYY-MM-DD HH:MM:SS" (local time). +// parseTribeDate parses the Tribe Events JSON date format +// "YYYY-MM-DD HH:MM:SS" in the site's local time. If the site ever switches +// to ISO-8601 with T-separator or an explicit timezone, this function will +// start returning errors and events will be silently dropped. The symptom +// will show up as "eventsFetched > 0 but Discovered = 0" in CrawlSummary — +// at that point switch to the iCal endpoint at +// https://mittelaltermarkt.online/events/?ical=1 which uses the standard +// VEVENT DTSTART format and is more durable across plugin upgrades. func parseTribeDate(s string) (*time.Time, error) { s = strings.TrimSpace(s) if s == "" {