Reverse-geocode a general area label for logged searches
Each search now stores an `area_label` (district/town) reverse-geocoded from its coarsened ~1km lat/lng bucket via postcodes.io, surfaced in the Filament Searches admin as a sortable/searchable column plus an area filter. Geocoding is cached 30 days per bucket, queries a 2km radius so low-density buckets still match the default 100m miss, and fails gracefully to null. Adds `searches:backfill-areas` (scheduled hourly) to label existing rows and retry stragglers. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -77,6 +77,16 @@ Schedule::command('fuel:archive')
|
||||
->onOneServer()
|
||||
->runInBackground();
|
||||
|
||||
// Retry area labels that failed to reverse-geocode at search time (transient
|
||||
// postcodes.io blip, or a genuinely remote point). Searches normally get their
|
||||
// area_label inline; this just mops up stragglers. Cached per bucket, so it
|
||||
// only calls the API for buckets it hasn't resolved yet.
|
||||
Schedule::command('searches:backfill-areas')
|
||||
->hourly()
|
||||
->withoutOverlapping()
|
||||
->onOneServer()
|
||||
->runInBackground();
|
||||
|
||||
// Scheduled WhatsApp updates — morning and evening
|
||||
Schedule::job(new SendScheduledWhatsAppJob('morning'))->dailyAt('07:30')->onOneServer();
|
||||
Schedule::job(new SendScheduledWhatsAppJob('evening'))->dailyAt('18:00')->onOneServer();
|
||||
|
||||
Reference in New Issue
Block a user