maintenancePlanMachine
@mineflow/api-schemas / maintenancePlanMachine
Variable: maintenancePlanMachine
const maintenancePlanMachine: StateMachine<MaintenancePlanContext,
| {
submittedBy: string;
type: "SUBMIT";
versionId: string;
}
| {
agreedBy: string;
type: "AGREE";
}
| {
approvedBy: string;
type: "APPROVE";
}
| {
reason: string;
rejectedBy: string;
type: "REJECT";
}
| {
amendedBy: string;
type: "AMEND";
}
| {
newVersionId: string;
supersededBy: string;
type: "SUPERSEDE";
}, {
}, never, never, {
}, never, "draft" | "pending_agreement" | "agreed" | "approved" | "superseded", string, NonReducibleUnknown, NonReducibleUnknown, EventObject, MetaObject, ToStateSchema<{
context: {
planId: "";
};
id: "maintenancePlan";
initial: "draft";
states: {
agreed: {
on: {
APPROVE: "approved";
REJECT: {
guard: "hasRejectReason";
target: "draft";
};
};
};
approved: {
on: {
AMEND: "draft";
SUPERSEDE: "superseded";
};
};
draft: {
on: {
SUBMIT: "pending_agreement";
};
};
pending_agreement: {
on: {
AGREE: "agreed";
REJECT: {
guard: "hasRejectReason";
target: "draft";
};
};
};
superseded: {
type: "final";
};
};
}>>;
Defined in: libs/eam/src/maintenance-plans/state-machine/maintenance-plan.machine.ts:30
FSM утверждаемого графика ТО/ППР (EAM MaintenancePlan, ADR-0070).
Источник истины — maintenance-plan.entity.ts; машина — xstate v5 spec
(ADR-0022), re-export'ится для расчёта доступных действий по статусу в UI
(useAvailableActions).
Состояния и переходы:
draft(начальное) →SUBMIT→pending_agreementpending_agreement→AGREE→agreed(подпись: главный механик)pending_agreement→REJECT→draft(guardhasRejectReason)agreed→APPROVE→approved(подпись: технический директор)agreed→REJECT→draft(guardhasRejectReason)approved→AMEND→draft(пересмотр: новая версия на следующем submit)approved→SUPERSEDE→superseded(замена планом-преемником)superseded— терм инальное.