Перейти к основному содержимому

timesheetEntryMachine

@mineflow/api-schemas


@mineflow/api-schemas / timesheetEntryMachine

Variable: timesheetEntryMachine

const timesheetEntryMachine: StateMachine<TimesheetEntryContext,
| {
actorId: string;
downtimeHours: number;
hoursWorked: number;
shiftReportId: string;
type: "CONFIRM";
}
| {
actorId: string;
downtimeHours: number;
hoursWorked: number;
reason: string;
type: "ADJUST";
}
| {
actorId: string;
type: "REVERT";
}, {
}, never, never, {
}, never, "draft" | "confirmed" | "adjusted" | "reverted", string, NonReducibleUnknown, NonReducibleUnknown, EventObject, MetaObject, ToStateSchema<{
context: {
timesheetEntryId: "";
};
id: "timesheetEntry";
initial: "draft";
states: {
adjusted: {
on: {
ADJUST: {
guard: "hasReason";
target: "adjusted";
};
REVERT: "reverted";
};
};
confirmed: {
on: {
ADJUST: {
guard: "hasReason";
target: "adjusted";
};
REVERT: "reverted";
};
};
draft: {
on: {
CONFIRM: "confirmed";
};
};
reverted: {
on: {
CONFIRM: "confirmed";
};
};
};
}>>;

Defined in: hr/src/timesheet/state-machine/timesheet-entry.machine.ts:33

FSM строки табеля учёта рабочего времени (HR TimesheetEntry).

Управляется событиями сменного рапорта PRD (подтверждение/сторно) и ручными корректировками. Источник истины — entity (ADR-0022); машина — spec для exhaustive coverage переходов в тестах (registerFsmModelTests). Re-export'ится @mineflow/api-schemas.

Состояния и переходы:

  • draft (начальное) → CONFIRMconfirmed (по shift-report.approved)
  • confirmedADJUSTadjusted (ручная корректировка, под guard hasReason)
  • confirmedREVERTreverted (сторно после rejected-after-approve)
  • adjustedADJUSTadjusted (повторная корректировка) | REVERTreverted
  • revertedCONFIRMconfirmed (повторно, если отчёт переутверждён)

Терминальных состояний нет: строка живёт, пока существует смена (Shift).