During my morning exercise, I was thinking about this issue and I have a few more thoughts:
Simple/Minimal Change - Back-end and WebUI
For the EPG, we could add lastUpdated and grabberUuid properties. These are already in existing data structures and easy to add to the existing EPG API output.
The lastUpdated property will allow the UI to provide a simple "Last updated nnn minutes ago." message in the EPG details drawer.
With a little more effort, the grabberUuid property will allow the UI to provide a slightly more detailed message like "Last updated nnn minutes ago by {grabber_name_here}." message in the EPG details drawer.
{
"eventId": 4118,
"channelName": "ABC SYDNEY",
"channelUuid": "bea5fbd1126a6166f11902def6c0227e",
"channelNumber": "25",
"lastUpdated": 1785445486,
"grabberUuid": "478b9f70ee8c6b70a1d9efb75a170154",
"start": 1785450600,
"stop": 1785459600,
"title": "Mornings with Hamish Macdonald",
"subtitle": "Keep informed, amused, entertained and inspired each weekday morning with local Sydney stories, political insights, your opinions and engaging discussions.",
"nextEventId": 4284
},
A little more effort - WebUI
These 2 properties will also allow the UI to evaluate the EPG data that it receives and keep track of the high/low timestamps by grabber module or maybe even channel.
These timestamps could be used as a proxy for the last time the grabber module was run and displayed on the home dashboard. Perhaps with a warning if the update was too long ago.
Moderate Change - Back-end and WebUI
Add 3 new timestamps to each EPG grabber module: last_run_started, last_run_finished and last_record_updated.
If last_run_finished < last_run_started, the grabber is currently running.
If last_record_updated < last_run_started the grabber found no data during the last run.
The EPG grabber logic would have to be updated to track and store this data. Because it would require an idnode to be saved, a comet message should automatically be issued when these values are updated.
This change would provide a reasonably comprehensive overview of each EPG grabber directly from the back-end without the WebUI needing to do much more that displaying the results. Perhaps a new grabber status summary page could be created to display this data.
A lot more effort - Back-end and WebUI
Add the abovementioned properties to every service/channel object allowing for a more detailed analysis of EPG updates. This would be overkill in my opinion. However, with some extra WebUI work, this analysis could also be derived from the added lastUpdated and grabberUuid properties.