All files / apps/work-orders-service/src/triage triage-classifier.ts

100% Statements 1/1
100% Branches 0/0
100% Functions 0/0
100% Lines 1/1

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20                                2x      
import { WorkOrderTriage } from '@app/contracts';
 
export interface TriageInput {
  title: string;
  description: string;
  priority: string;
}
 
/**
 * Boundary between the domain and the LLM provider, mirroring the
 * NotificationSender pattern: the consumer depends on this abstraction, tests
 * substitute it, and swapping providers touches exactly one class.
 *
 * `null` means "no classification available" (missing key, API failure,
 * refusal) — triage is advisory, so absence is a valid outcome, not an error.
 */
export abstract class TriageClassifier {
  abstract classify(input: TriageInput): Promise<WorkOrderTriage | null>;
}