diff --git a/packages/server/src/aai-utils/billing/langfuse/LangfuseProvider.ts b/packages/server/src/aai-utils/billing/langfuse/LangfuseProvider.ts index 942c101e0e1..35977ac4e94 100644 --- a/packages/server/src/aai-utils/billing/langfuse/LangfuseProvider.ts +++ b/packages/server/src/aai-utils/billing/langfuse/LangfuseProvider.ts @@ -79,6 +79,7 @@ export class LangfuseProvider { userId?: string filter?: any[] fields?: string + orderBy?: string }): Promise { const queryParams: any = { ...params } @@ -151,13 +152,21 @@ export class LangfuseProvider { limit: 1, page: 1, filter: LangfuseProvider.UNPROCESSED_FILTER, - fields: 'core' // Minimal fields for discovery + fields: 'core', // Minimal fields for discovery + orderBy: 'timestamp' // CRITICAL: Order by timestamp ascending (default) to get OLDEST first + // Note: Langfuse API defaults to ascending order, so just 'timestamp' should work + // If this returns newest instead of oldest, we fall back to 2020-01-01 anyway }) if (response.data.length === 0) { return null // No unprocessed traces } + log.info('Found oldest unprocessed trace', { + traceId: response.data[0].id, + timestamp: response.data[0].timestamp + }) + return new Date(response.data[0].timestamp) } catch (error) { log.warn('Failed to find oldest trace, defaulting to 2020-01-01', { error })