import type { UnifiedResultFacetResult, UnifiedResultQuery } from '../../domain/unified-result'; import type { ScanImportGroup } from './datahub-import-groups'; export interface TimeslotOpenReadiness { canOpen: boolean; hasPolicyResults: boolean; } export async function loadTimeslotOpenReadiness( readFacets: (query: UnifiedResultQuery) => Promise, projectId: string, groups: ScanImportGroup[] ): Promise> { return Object.fromEntries(await Promise.all(groups.map(async group => { if (!group.assessmentIds.length) return [group.id, { canOpen: false, hasPolicyResults: false }]; try { const result = await readFacets({ audience: 'internal-analysis', projectId, assessmentIds: group.assessmentIds, sourceKind: ['scanner-finding', 'policy-observation'] }); const hasPolicyResults = result.facets.find(facet => facet.id === 'sourceKind')?.values .some(value => value.value === 'policy-observation' && value.count > 0) ?? false; return [group.id, { canOpen: result.total > 0, hasPolicyResults }]; } catch { return [group.id, { canOpen: false, hasPolicyResults: false }]; } }))); }