| 1 | import { Injectable } from '@nestjs/common' |
| 2 | |
| 3 | export interface AiAvailabilityContext { |
| 4 | provider: string |
| 5 | operation: string |
| 6 | model?: string |
| 7 | module?: string |
| 8 | sourceApp?: string |
| 9 | metadata?: Record<string, unknown> |
| 10 | } |
| 11 | |
| 12 | @Injectable() |
| 13 | export class AiAvailabilityService { |
| 14 | async execute<T>( |
| 15 | _context: AiAvailabilityContext, |
| 16 | executor: () => Promise<T>, |
| 17 | ): Promise<T> { |
| 18 | return executor() |
| 19 | } |
| 20 | |
| 21 | async executeAsync<T>( |
| 22 | _context: AiAvailabilityContext, |
| 23 | executor: () => Promise<T>, |
| 24 | _extractTaskId: (result: T) => string, |
| 25 | ): Promise<T> { |
| 26 | return executor() |
| 27 | } |
| 28 | |
| 29 | async recordSuccess(_context: AiAvailabilityContext, _latencyMs?: number): Promise<void> { |
| 30 | return undefined |
| 31 | } |
| 32 | |
| 33 | async recordFailure(_context: AiAvailabilityContext, _error: unknown, _latencyMs?: number): Promise<void> { |
| 34 | return undefined |
| 35 | } |
| 36 | |
| 37 | async recordAsyncComplete( |
| 38 | _asyncTaskId: string, |
| 39 | _context: AiAvailabilityContext, |
| 40 | _params: { success: boolean, latencyMs?: number, errorMessage?: string, isBusinessError?: boolean }, |
| 41 | ): Promise<void> { |
| 42 | return undefined |
| 43 | } |
| 44 | } |
| 45 |