Assessor_2.0/src/domain/import-profile.ts

35 lines
962 B
TypeScript

import type { DatasetSheet } from './dataset';
import type { FindingRecord } from './finding';
import type { ToolProfileDefinition } from './tool-profile-definition';
export interface ProfileDetectionContext {
fileName: string;
rawText: string;
sheets: DatasetSheet[];
}
export interface ProfileDefaults {
titleColumn: string;
sortColumn: string;
sortDirection: 'asc' | 'desc';
statusFilter: string;
}
export interface PresentationHints {
severityFieldPattern: RegExp;
titleFieldPattern: RegExp;
statusFilters: Array<{ value: string; label: string }>;
}
export interface ImportProfile {
id: string;
name: string;
version: string;
definition: ToolProfileDefinition;
detect(context: ProfileDetectionContext): number;
prioritizeSheets(sheets: DatasetSheet[]): DatasetSheet[];
defaults(sheet?: DatasetSheet): ProfileDefaults;
matchesStatus(record: FindingRecord, status: string): boolean;
presentation: PresentationHints;
}