Files
openmaic/OpenMAIC/lib/classroom/generation-resume-policy.ts
2026-08-16 14:58:47 +08:00

23 lines
904 B
TypeScript

export type ClassroomGenerationResumeMode = 'none' | 'scenes' | 'media';
/**
* Published learner bundles are immutable course content. Even if a corrupt or
* legacy cache unexpectedly carries outlines, opening it must never call the
* scene/media generation pipeline. Authoring classrooms retain the historical
* interrupted-generation recovery behavior.
*/
export function classroomGenerationResumeMode(input: {
learnerMode: boolean;
generationComplete: boolean;
outlineOrders: readonly number[];
sceneOrders: readonly number[];
}): ClassroomGenerationResumeMode {
if (input.learnerMode) return 'none';
const completedOrders = new Set(input.sceneOrders);
const hasPendingScenes =
!input.generationComplete && input.outlineOrders.some((order) => !completedOrders.has(order));
if (hasPendingScenes) return 'scenes';
return input.outlineOrders.length > 0 ? 'media' : 'none';
}