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

82 lines
2.0 KiB
TypeScript

import type { CanonicalFieldRole } from './canonical-model';
export type RecognitionConfidenceLevel = 'high' | 'medium' | 'low' | 'unknown';
export type RecognitionDecisionSource = 'automatic' | 'user-confirmed' | 'fallback';
export interface RecognitionEvidence {
signal: string;
message: string;
contribution: number;
}
export interface RecognitionConfidence {
level: RecognitionConfidenceLevel;
score: number;
reasons: string[];
}
export interface ToolCandidateRecognition {
toolId: string;
toolName: string;
confidence: RecognitionConfidence;
evidence: RecognitionEvidence[];
}
export interface SourceRecognition {
selected: ToolCandidateRecognition;
candidates: ToolCandidateRecognition[];
decisionSource: RecognitionDecisionSource;
requiresConfirmation: boolean;
}
export interface TableRecognition {
tableId: string;
tableIndex: number;
tableName: string;
selected: boolean;
confidence: RecognitionConfidence;
evidence: RecognitionEvidence[];
decisionSource: RecognitionDecisionSource;
requiresConfirmation: boolean;
}
export interface FieldRoleAlternative {
role: CanonicalFieldRole;
confidence: RecognitionConfidence;
}
export interface FieldRoleRecognition {
tableId: string;
tableIndex: number;
columnIndex: number;
sourceHeader: string;
proposedRole: CanonicalFieldRole | null;
appliedRole: CanonicalFieldRole;
alternatives: FieldRoleAlternative[];
confidence: RecognitionConfidence;
evidence: RecognitionEvidence[];
decisionSource: RecognitionDecisionSource;
requiresConfirmation: boolean;
}
export interface ImportRecognitionResult {
version: 1;
source: SourceRecognition;
tables: TableRecognition[];
fields: FieldRoleRecognition[];
}
export interface RecognitionOverrides {
sourceTool?: { toolId: string; toolName: string };
tableSelections?: Record<string, boolean>;
fieldRoles?: Array<{
tableId: string;
columnIndex: number;
role: CanonicalFieldRole;
}>;
candidateFieldRoles?: Array<{
decisionId: string;
role: CanonicalFieldRole;
}>;
}