timesheetEntryMachine
@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(начальное) →CONFIRM→confirmed(по shift-report.approved)confirmed→ADJUST→adjusted(ручная корректировка, под guardhasReason)confirmed→REVERT→reverted(сторно после rejected-after-approve)adjusted→ADJUST→adjusted(повторная корректировка) |REVERT→revertedreverted→CONFIRM→confirmed(повторно, если отчёт переутверждён)
Терминальных состояний нет: строка живёт, пока существует смена (Shift).