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

tmcRequestMachine

@mineflow/api-schemas


@mineflow/api-schemas / tmcRequestMachine

Variable: tmcRequestMachine

const tmcRequestMachine: StateMachine<TmcRequestContext,
| {
submittedBy: string;
type: "SUBMIT";
}
| {
approvedBy: string;
submittedBy: string;
type: "APPROVE";
}
| {
reason: string;
rejectedBy: string;
type: "REJECT";
}
| {
comment: string;
returnedBy: string;
type: "RETURN_TO_DRAFT";
}
| {
startedBy: string;
type: "START";
}
| {
totalFulfilledQuantity: number;
totalRequestedQuantity: number;
type: "FULFILL";
}, {
}, never, never, ToParameterizedObject<{
approverDiffersFromSubmitter: unknown;
fulfillCovered: unknown;
hasReason: unknown;
}>, never, "draft" | "approved" | "in_progress" | "sent" | "fulfilled" | "rejected", string, NonReducibleUnknown, NonReducibleUnknown, EventObject, MetaObject, ToStateSchema<{
context: {
requestId: "";
};
id: "tmc-request";
initial: "draft";
states: {
approved: {
on: {
START: {
target: "in_progress";
};
};
};
draft: {
on: {
SUBMIT: {
target: "sent";
};
};
};
fulfilled: {
type: "final";
};
in_progress: {
on: {
FULFILL: {
guard: "fulfillCovered";
target: "fulfilled";
};
};
};
rejected: {
type: "final";
};
sent: {
on: {
APPROVE: {
guard: "approverDiffersFromSubmitter";
target: "approved";
};
REJECT: {
guard: "hasReason";
target: "rejected";
};
RETURN_TO_DRAFT: {
guard: "hasReason";
target: "draft";
};
};
};
};
}>>;

Defined in: scm/src/tmc/state-machine/tmc-request.machine.ts:29

FSM заявки на ТМЦ (SCM TmcRequest) — от черновика до исполнения.

Источник истины — entity (ADR-0022); машина — xstate v5 spec для FSM drift detector и model-based тестов. Re-export'ится @mineflow/api-schemas для FSM-кнопок в UI.

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

  • draft (начальное) → SUBMITsent
  • sentAPPROVEapproved (под guard approverDiffersFromSubmitter)
  • sentREJECTrejected (под guard hasReason)
  • sentRETURN_TO_DRAFTdraft (под guard hasReason)
  • approvedSTARTin_progress
  • in_progressFULFILLfulfilled (под guard fulfillCovered)
  • fulfilled, rejected — терминальные состояния (TMC-INV-09).