接入 INI 面板只读 session readiness handoff

This commit is contained in:
2026-06-16 06:47:48 +08:00
parent 03db34485e
commit 68ff2fb5d6
16 changed files with 164 additions and 8 deletions

View File

@@ -93,6 +93,7 @@ assert.deepEqual(controller.readStatus(), {
overview: null,
controlView: expectedView,
report: expectedStateBundle.report,
sessionReadiness: null,
runReadiness: null,
run: null,
session: null,
@@ -109,6 +110,7 @@ assert.deepEqual(controller.loadSessionState(), {
controlViewReady: true,
stateBundle: expectedStateBundle,
workflowStatus: expectedWorkflowStatus,
sessionReadiness: null,
controlView: expectedView,
error: null,
});

View File

@@ -21,6 +21,11 @@ const workflowStatus = {
overview: {
phase: "ready",
},
sessionReadiness: {
phase: "ready",
ready: true,
missing: [],
},
lastAction: "load-session",
error: null,
};
@@ -40,6 +45,7 @@ assert.deepEqual(createControlPageSessionLoadState({ phase: "waiting-panel" }),
controlViewReady: false,
stateBundle: null,
workflowStatus: null,
sessionReadiness: null,
controlView: null,
error: null,
});
@@ -81,6 +87,7 @@ assert.deepEqual(
apiReady: true,
stateBundle,
workflowStatus,
sessionReadiness: workflowStatus.sessionReadiness,
}),
);
@@ -101,6 +108,7 @@ assert.deepEqual(
controlViewReady: true,
stateBundle,
workflowStatus,
sessionReadiness: workflowStatus.sessionReadiness,
controlView,
}),
);

View File

@@ -430,6 +430,7 @@ assert.deepEqual(createControlPageSessionLoadState({ phase: "waiting-panel" }),
controlViewReady: false,
stateBundle: null,
workflowStatus: null,
sessionReadiness: null,
controlView: null,
error: null,
});

View File

@@ -30,6 +30,11 @@ const stateBundle = {
};
const workflowStatus = {
overview: stateBundle.overview,
sessionReadiness: {
phase: "ready",
ready: true,
missing: [],
},
runReadiness: stateBundle.report.runReadiness,
session: stateBundle.report.session,
run: stateBundle.report.run,
@@ -56,6 +61,7 @@ assert.deepEqual(
overview: stateBundle.overview,
controlView,
report: stateBundle.report,
sessionReadiness: workflowStatus.sessionReadiness,
runReadiness: stateBundle.report.runReadiness,
run: stateBundle.report.run,
session: stateBundle.report.session,
@@ -73,6 +79,7 @@ assert.deepEqual(createMachineSessionReadonlyStatus(), {
overview: null,
controlView: null,
report: null,
sessionReadiness: null,
runReadiness: null,
run: null,
session: null,
@@ -103,6 +110,7 @@ assert.deepEqual(createMachineSessionReadonlyStatusApiManifest(), {
"overview",
"controlView",
"report",
"sessionReadiness",
"runReadiness",
"run",
"session",

View File

@@ -59,6 +59,7 @@ assert.deepEqual(contract, {
"overview",
"controlView",
"report",
"sessionReadiness",
"runReadiness",
"run",
"session",

View File

@@ -217,6 +217,7 @@ assert.deepEqual(workflowPlan, {
"overview",
"controlView",
"report",
"sessionReadiness",
"runReadiness",
"run",
"session",
@@ -272,6 +273,7 @@ assert.deepEqual(handoffSummary, {
"overview",
"controlView",
"report",
"sessionReadiness",
"runReadiness",
"run",
"session",

View File

@@ -68,6 +68,12 @@ const expectedEmptyRunReadinessReport = {
iniWasmPath: null,
};
const sessionReadinessFixture = {
phase: "ready",
ready: true,
missing: [],
};
const expectedWorkflowOverview = {
phase: "ran",
missing: [],
@@ -120,6 +126,7 @@ const summary = createIniPanelStateSummary({
snapshotLabel: "ui-machine-session/ui-machine-session.json",
workflow: "save-session-snapshot",
},
sessionReadiness: sessionReadinessFixture,
sessionLoad: {
iniOpfsPath: "linuxcnc/machines/xyzab-tdr/machine.ini",
iniWasmPath: "/work/session-machine.ini",
@@ -152,6 +159,7 @@ assert.deepEqual(summary, {
snapshotLabel: "ui-machine-session/ui-machine-session.json",
workflow: "save-session-snapshot",
},
sessionReadiness: sessionReadinessFixture,
sessionLoad: {
iniOpfsPath: "linuxcnc/machines/xyzab-tdr/machine.ini",
iniWasmPath: "/work/session-machine.ini",
@@ -175,6 +183,7 @@ assert.deepEqual(
machine: null,
machineFiles: null,
sessionSnapshot: null,
sessionReadiness: null,
sessionLoad: null,
runReadiness: null,
run: null,
@@ -195,6 +204,7 @@ assert.deepEqual(
sessionSnapshot: {
snapshotLabel: "ui-machine-session/ui-machine-session.json",
},
sessionReadiness: sessionReadinessFixture,
sessionLoad: {
iniWasmPath: "/work/session-machine.ini",
},
@@ -237,6 +247,7 @@ assert.deepEqual(
sessionSnapshot: {
snapshotLabel: "ui-machine-session/ui-machine-session.json",
},
sessionReadiness: sessionReadinessFixture,
sessionLoad: {
iniWasmPath: "/work/session-machine.ini",
},
@@ -311,6 +322,7 @@ assert.deepEqual(
parameterWasmPath: "/work/session-linuxcnc.var",
toolTableWasmPath: "/work/session-tool.tbl",
},
sessionReadiness: sessionReadinessFixture,
runReadiness: runReadinessFixture,
selectedProgram: {
source: "snapshot",
@@ -344,6 +356,7 @@ assert.deepEqual(
toolTable: "/work/session-tool.tbl",
gcode: "linuxcnc/gcode/ui-session.ngc",
},
sessionReadiness: sessionReadinessFixture,
loaded: {
iniWasmPath: "/work/session-machine.ini",
parameterWasmPath: "/work/session-linuxcnc.var",
@@ -383,6 +396,7 @@ const expectedExportReport = {
toolTable: null,
gcode: null,
},
sessionReadiness: null,
loaded: {
iniWasmPath: "/work/session-machine.ini",
parameterWasmPath: null,
@@ -446,6 +460,7 @@ assert.deepEqual(
runWorkflow: "save-session-snapshot",
},
runReadiness: runReadinessFixture,
sessionReadiness: sessionReadinessFixture,
run: {
runStatus: "ok",
canonicalEventCount: 2,
@@ -492,6 +507,7 @@ assert.deepEqual(
},
},
runReadiness: expectedRunReadinessReport,
sessionReadiness: sessionReadinessFixture,
lastAction: "run-gcode",
error: null,
session: {
@@ -525,6 +541,7 @@ const expectedBundleReport = {
toolTable: null,
gcode: "linuxcnc/gcode/ui-session.ngc",
},
sessionReadiness: sessionReadinessFixture,
loaded: {
iniWasmPath: null,
parameterWasmPath: null,
@@ -569,6 +586,7 @@ assert.deepEqual(
runWorkflow: "save-session-snapshot",
},
runReadiness: runReadinessFixture,
sessionReadiness: sessionReadinessFixture,
run: {
runStatus: "ok",
canonicalEventCount: 2,
@@ -593,6 +611,7 @@ assert.deepEqual(
opfs: "OPFS: ready",
},
overview: expectedWorkflowOverview,
sessionReadiness: sessionReadinessFixture,
lastAction: "run-gcode",
error: null,
runReadiness: expectedRunReadinessReport,

View File

@@ -96,6 +96,7 @@ assert.deepEqual(createControlPageSessionLoadState({ phase: "waiting-panel" }),
controlViewReady: false,
stateBundle: null,
workflowStatus: null,
sessionReadiness: null,
controlView: null,
error: null,
});
@@ -1078,6 +1079,7 @@ assert.deepEqual(missingStatusResult.missingStatusFields, [
"overview",
"controlView",
"report",
"sessionReadiness",
"runReadiness",
"run",
"session",