/** * 停用前置检查 —— 纯逻辑,零 IO(编码规范 §5.3)。 * * OS 02:员工停用前,其在途任务与待答卡须先改派完毕。 */ import type { DisableCheck, StaffId } from '@contracts'; export type InFlightWork = { readonly openTasks: ReadonlyArray<{ taskId: string; title: string }>; readonly openCards: ReadonlyArray<{ cardId: string; title: string }>; readonly openApprovals: ReadonlyArray<{ approvalId: string; title: string }>; }; export function buildDisableCheck(staffId: StaffId, work: InFlightWork): DisableCheck { const openTasks = [...work.openTasks]; const openCards = [...work.openCards]; const openApprovals = [...work.openApprovals]; return { staffId, blocked: openTasks.length > 0 || openCards.length > 0 || openApprovals.length > 0, openTasks, openCards, openApprovals, }; }