productionPlanMachine
@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(начальное) →APPROVE→approvedapproved→AMEND→approved(поправка — self-loop)approved→SUPERSEDE→supersededsuperseded— терминальное состояние.
Sub-FSM версий (pending_ceo → approved_version | rejected_version) этой машиной
не описывается: статус плана не меняется, пока версия на согласовании CEO
(current_version_id остаётся прежним).