82 lines
2.0 KiB
TypeScript
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;
|
|
}>;
|
|
}
|