personnelOrderMachine
@mineflow/api-schemas / personnelOrderMachine
Variable: personnelOrderMachine
const personnelOrderMachine: StateMachine<PersonnelOrderContext,
| {
actorId: string;
documentNumber: string;
type: "ISSUE";
}
| {
actorId: string;
reason: string;
type: "REVOKE";
}
| {
actorId: string;
supersededByOrderId: string;
type: "SUPERSEDE";
}, {
}, never, never, ToParameterizedObject<{
hasReason: unknown;
hasSuccessor: unknown;
}>, never, "draft" | "superseded" | "issued" | "revoked", string, NonReducibleUnknown, NonReducibleUnknown, EventObject, MetaObject, ToStateSchema<{
context: {
orderId: "";
};
id: "personnelOrder";
initial: "draft";
states: {
draft: {
on: {
ISSUE: "issued";
};
};
issued: {
on: {
REVOKE: {
guard: "hasReason";
target: "revoked";
};
SUPERSEDE: {
guard: "hasSuccessor";
target: "superseded";
};
};
};
revoked: {
type: "final";
};
superseded: {
type: "final";
};
};
}>>;
Defined in: libs/hr/src/personnel-orders/state-machine/personnel-order.machine.ts:25
FSM жизненного цикла кадрового приказа (PersonnelOrder, КДП — ADR-0067).
Источник истины — entity (ADR-0022); машина — xstate v5 spec, re-export'ится
@mineflow/api-schemas для расчёта доступных действий по status приказа.
Состояния и переходы:
draft(начальное) →issued(ISSUE— присвоение номера + рендер + эффект)issued→revoked(REVOKE— сторно, под guardhasReason)issued→superseded(SUPERSEDE— заменён новым приказом, под guardhasSuccessor)revoked/superseded— терминальные.
EDIT (правка черновика) и DISCARD (удаление черновика) — НЕ FSM-переходы (DISCARD = физическое удаление; EDIT — мутация полей в том же состоянии).