Fix event feed regression

This commit is contained in:
2024-12-25 15:14:25 -05:00
parent c3e6e09b74
commit a72ce97f34

View File

@@ -1252,6 +1252,17 @@ export class EventsService {
const { timeRange, startDate, endDate, metricIds } = params; const { timeRange, startDate, endDate, metricIds } = params;
const metrics = metricIds || Object.values(METRIC_IDS); const metrics = metricIds || Object.values(METRIC_IDS);
// Get period dates using TimeManager to respect 1 AM day start
let periodStart, periodEnd;
if (startDate && endDate) {
periodStart = this.timeManager.getDayStart(this.timeManager.toDateTime(startDate));
periodEnd = this.timeManager.getDayEnd(this.timeManager.toDateTime(endDate));
} else if (timeRange) {
const range = this.timeManager.getDateRange(timeRange);
periodStart = range.start;
periodEnd = range.end;
}
// Try to get from cache first // Try to get from cache first
const cacheKey = this.redisService._getCacheKey('events', params); const cacheKey = this.redisService._getCacheKey('events', params);
let cachedData = null; let cachedData = null;
@@ -1267,8 +1278,8 @@ export class EventsService {
// Fetch events for all specified metrics // Fetch events for all specified metrics
const eventPromises = metrics.map(metricId => const eventPromises = metrics.map(metricId =>
this.getEvents({ this.getEvents({
startDate, startDate: periodStart.toISO(),
endDate, endDate: periodEnd.toISO(),
timeRange, timeRange,
metricId, metricId,
sort: '-datetime' sort: '-datetime'
@@ -1277,13 +1288,27 @@ export class EventsService {
const results = await Promise.all(eventPromises); const results = await Promise.all(eventPromises);
// Transform results into a keyed object // Transform and flatten the events into a single array
const batchResults = {}; const allEvents = [];
metrics.forEach((metric, index) => { results.forEach((result, index) => {
batchResults[metric] = results[index]; const metricId = metrics[index];
const events = result.data || [];
allEvents.push(...events);
}); });
return batchResults; // Sort all events by datetime in descending order
allEvents.sort((a, b) => {
const dateA = new Date(a.attributes?.datetime || 0);
const dateB = new Date(b.attributes?.datetime || 0);
return dateB - dateA;
});
return {
data: allEvents,
meta: {
total_count: allEvents.length
}
};
} catch (error) { } catch (error) {
console.error('[EventsService] Error in batch metrics:', error); console.error('[EventsService] Error in batch metrics:', error);
throw error; throw error;