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

maintenancePlanMachine

@mineflow/api-schemas


@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_agreement
  • pending_agreement → AGREE → agreed (подпись: главный механик)
  • pending_agreement → REJECT → draft (guard hasRejectReason)
  • agreed → APPROVE → approved (подпись: технический директор)
  • agreed → REJECT → draft (guard hasRejectReason)
  • approved → AMEND → draft (пересмотр: новая версия на следующем submit)
  • approved → SUPERSEDE → superseded (замена планом-преемником)
  • superseded — терминальное.