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

productionPlanMachine

@mineflow/api-schemas


@mineflow/api-schemas / productionPlanMachine

Variable: productionPlanMachine

const productionPlanMachine: StateMachine<ProductionPlanContext,
| {
approver: string;
type: "APPROVE";
}
| {
actor: string;
actorIsCeo: boolean;
significant: boolean;
type: "AMEND";
}
| {
actor: string;
type: "SUPERSEDE";
}, {
}, never, never, never, never, "draft" | "approved" | "superseded", string, NonReducibleUnknown, NonReducibleUnknown, EventObject, MetaObject, ToStateSchema<{
context: {
productionPlanId: "";
};
id: "productionPlan";
initial: "draft";
states: {
approved: {
on: {
AMEND: "approved";
SUPERSEDE: "superseded";
};
};
draft: {
on: {
APPROVE: "approved";
};
};
superseded: {
type: "final";
};
};
}>>;

Defined in: prd/src/production-plans/state-machine/production-plan.machine.ts:38

FSM производственного плана (PRD ProductionPlan) — годовой/месячный план добычи.

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

Корневая FSM:

  • draft (начальное) → APPROVEapproved
  • approvedAMENDapproved (поправка — self-loop)
  • approvedSUPERSEDEsuperseded
  • superseded — терминальное состояние.

Sub-FSM версий (pending_ceo → approved_version | rejected_version) этой машиной не описывается: статус плана не меняется, пока версия на согласовании CEO (current_version_id остаётся прежним).