tmcTransferMachine
@mineflow/api-schemas / tmcTransferMachine
Variable: tmcTransferMachine
const tmcTransferMachine: StateMachine<TmcTransferContext,
| {
fromWarehouseId: string;
issuedBy: string;
toWarehouseId: string;
type: "ISSUE";
}
| {
confirmedBy: string;
type: "CONFIRM";
}, {
}, never, never, {
}, never, "draft" | "confirmed" | "issued", string, NonReducibleUnknown, NonReducibleUnknown, EventObject, MetaObject, ToStateSchema<{
context: {
transferId: "";
};
id: "tmc-transfer";
initial: "draft";
states: {
confirmed: {
type: "final";
};
draft: {
on: {
ISSUE: {
guard: "differentWarehouses";
target: "issued";
};
};
};
issued: {
on: {
CONFIRM: {
target: "confirmed";
};
};
};
};
}>>;
Defined in: scm/src/tmc/state-machine/tmc-transfer.machine.ts:24
FSM перемещения ТМЦ между складами (SCM TmcTransfer).
Источник истины — entity (ADR-0022); машина — xstate v5 spec для drift
detection и model-based тестов. Re-export'ится @mineflow/api-schemas для
FSM-кнопок в UI.
Состояния и переходы:
draft(начальное) →ISSUE→issued(под guarddifferentWarehouses)issued→CONFIRM→confirmedconfirmed— терминальное состояние.
Складские эффекты (списание с источника при issued, зачисление на приёмник при confirmed, записи TmcMovement) выполняют use-cases, не FSM.