Assessor_2.0/src/compliance/bsi-catalog-management.ts

40 lines
1.5 KiB
TypeScript

/** Data Hub BSI catalog tile: which BSI Kernel catalog and ISO 27001 mapping are active, and where from. */
export interface BsiCatalogState {
version: 1;
/** `bundled`: the pinned snapshots shipped with ASSESSOR; `bsi`: stored by `Update from BSI`. */
origin: 'bundled' | 'bsi';
updatedAt?: string;
catalogVersion: string;
crosswalkVersion: string;
requirementCount: number;
crosswalkEntryCount: number;
catalogSha256: string;
crosswalkSha256: string;
/** Mapping targets the active catalog does not contain; they are reported, never reinterpreted. */
missingTargets: string[];
}
export interface BsiCatalogRefreshResult extends BsiCatalogState {
updated: boolean;
}
/**
* Data Hub BSI tile: the retrieval index of the active Kernel catalog for direct BSI mappings (user decision
* 2026-10-09). `outdated` means only an index of another catalog state exists; `unavailable` means embedding or
* Qdrant is not configured. A BSI mapping still builds a missing index itself.
*/
export interface BsiSearchIndexStatus {
version: 1;
state: 'unavailable' | 'not-built' | 'outdated' | 'building' | 'built' | 'failed';
catalogVersion: string;
corpusVersion: string;
requirementCount: number;
/** Indexed chunks of the active catalog state; a requirement with long guidance has several. */
indexedChunks: number;
/** While building: embedded chunks of all chunks. */
progress?: { completed: number; total: number };
builtAt?: string;
error?: string;
disabledReason?: string;
}