Assessor_2.0/src/domain/finding.ts

61 lines
2.4 KiB
TypeScript

import type { JsonValue } from './canonical-model';
export type Severity = 'critical' | 'high' | 'medium' | 'low' | 'info' | 'unknown';
/** Read-only original observations, not a GPO execution order or effective endpoint state. */
export type PolicySourceDeviationField = 'operation' | 'data' | 'typeCode' | 'value';
export interface PolicySourceEvidence {
id: string;
backupKey?: string;
backupInstanceId?: string;
gpoId?: string;
nativeBackupId?: string;
sourceReference: string;
sequence?: number;
values: JsonValue[];
/** Presentation of a retained current comparison, never endpoint effectiveness. */
baselineRelation?: 'aligned' | 'conflicting' | 'review';
/** Per retained value, fields proven different from every current baseline variant; value is the safe whole-value fallback. */
deviationFields?: PolicySourceDeviationField[][];
/** Per retained collection value, configured members absent from every current baseline variant. */
deviationItems?: string[][];
}
export interface RecordField {
label: string;
value: string;
index: number;
}
export interface FindingRecord {
id: string;
/** Stable database identity of the projected canonical finding occurrence. */
findingOccurrenceId?: string;
/** Stable database identity shared by occurrences of the same finding. */
findingDefinitionId?: string;
/** Exact source scope for native report metrics; never inferred from display names. */
scanRunId?: string;
importFileId?: string;
/** Presentation-only provenance of Fail comparisons, using the Processing tile's exact backup identity. */
policyFailingBackupSources?: Array<{ id: string; label: string }>;
policySourceEvidence?: PolicySourceEvidence[];
/** Individual baseline memberships of one rolled-up technical policy setting. */
policyBaselineLabels?: string[];
/** Original row identities allow earlier baseline-specific notes to remain readable. */
policyReviewMembers?: Array<{ id: string; baseline: string }>;
index: number;
title: string;
fields: RecordField[];
filled: RecordField[];
meta: RecordField[];
sourceFile?: string;
sourceSheet?: string;
/**
* Der Bericht markiert diese Zeile selbst als die konkret ausgewertete
* (z. B. CIS-CAT: `<tr class="evaluated">` im Belegabschnitt eines Rule
* Result) - unabhaengig von jeder Auswahl oder Suche in ASSESSOR.
*/
highlighted?: boolean;
}