接上一轮,按接续文件继续执行
结论:Three.js 程序预览和刀具执行显示已收口,公网 HTTP/IP 下 Save/Restore Session 已支持 memory-fallback 降级并通过 node/browser gate。
This commit is contained in:
@@ -59,6 +59,7 @@ const initialState = {
|
||||
filename: DEFAULT_SESSION_FILENAME,
|
||||
status: "not-saved",
|
||||
path: null,
|
||||
storageMode: null,
|
||||
savedAt: null,
|
||||
restoredAt: null,
|
||||
lastError: null,
|
||||
@@ -189,6 +190,7 @@ const initialState = {
|
||||
pathPoints: 64,
|
||||
selectedView: "iso",
|
||||
fullscreen: false,
|
||||
cameraRevision: 0,
|
||||
},
|
||||
toolPreview: {
|
||||
toolNumber: 1,
|
||||
@@ -629,10 +631,11 @@ export function createSimulationStore(seed = {}) {
|
||||
...state.sessionPersistence,
|
||||
status: "saved",
|
||||
path: action.path,
|
||||
storageMode: action.storageMode || null,
|
||||
savedAt: action.savedAt,
|
||||
lastError: null,
|
||||
},
|
||||
operatorMessage: `5-axis session saved ${action.path}`,
|
||||
operatorMessage: `5-axis session saved ${action.path} (${action.storageMode || "unknown"})`,
|
||||
});
|
||||
break;
|
||||
case "SESSION_RESTORE_STARTED":
|
||||
@@ -664,10 +667,11 @@ export function createSimulationStore(seed = {}) {
|
||||
...state.sessionPersistence,
|
||||
status: "restored",
|
||||
path: action.path,
|
||||
storageMode: action.storageMode || null,
|
||||
restoredAt: action.restoredAt,
|
||||
lastError: null,
|
||||
},
|
||||
operatorMessage: `5-axis session restored ${action.path}`,
|
||||
operatorMessage: `5-axis session restored ${action.path} (${action.storageMode || "unknown"})`,
|
||||
});
|
||||
}
|
||||
break;
|
||||
@@ -1255,7 +1259,11 @@ export function createSimulationStore(seed = {}) {
|
||||
break;
|
||||
case "RESET_VIEW":
|
||||
setState({
|
||||
preview: { ...state.preview, selectedView: "iso" },
|
||||
preview: {
|
||||
...state.preview,
|
||||
selectedView: "iso",
|
||||
cameraRevision: (state.preview.cameraRevision ?? 0) + 1,
|
||||
},
|
||||
operatorMessage: "preview fit to program",
|
||||
});
|
||||
break;
|
||||
@@ -1267,7 +1275,11 @@ export function createSimulationStore(seed = {}) {
|
||||
break;
|
||||
case "SET_VIEW":
|
||||
setState({
|
||||
preview: { ...state.preview, selectedView: action.view },
|
||||
preview: {
|
||||
...state.preview,
|
||||
selectedView: action.view,
|
||||
cameraRevision: (state.preview.cameraRevision ?? 0) + 1,
|
||||
},
|
||||
operatorMessage: `preview view ${action.view}`,
|
||||
});
|
||||
break;
|
||||
@@ -1395,17 +1407,19 @@ export function createSimulationStore(seed = {}) {
|
||||
const sessionId = options.sessionId || state.sessionPersistence.sessionId;
|
||||
const filename = options.filename || state.sessionPersistence.filename;
|
||||
const payload = createFiveAxisSessionPayload(state);
|
||||
const { snapshot, path } = await saveFiveAxisSessionSnapshot(sessionId, payload, {
|
||||
const { snapshot, path, storageMode } = await saveFiveAxisSessionSnapshot(sessionId, payload, {
|
||||
filename,
|
||||
storage: options.storage,
|
||||
storageMode: options.storageMode,
|
||||
metadata: options.metadata,
|
||||
});
|
||||
dispatch({
|
||||
type: "SESSION_SAVE_COMPLETE",
|
||||
path,
|
||||
storageMode,
|
||||
savedAt: snapshot.createdAt,
|
||||
});
|
||||
return { snapshot, path };
|
||||
return { snapshot, path, storageMode };
|
||||
} catch (error) {
|
||||
dispatch({ type: "SESSION_PERSISTENCE_FAILED", error: error.message });
|
||||
throw error;
|
||||
@@ -1417,18 +1431,20 @@ export function createSimulationStore(seed = {}) {
|
||||
try {
|
||||
const sessionId = options.sessionId || state.sessionPersistence.sessionId;
|
||||
const filename = options.filename || state.sessionPersistence.filename;
|
||||
const { snapshot, path } = await loadFiveAxisSessionSnapshot(sessionId, {
|
||||
const { snapshot, path, storageMode } = await loadFiveAxisSessionSnapshot(sessionId, {
|
||||
filename,
|
||||
storage: options.storage,
|
||||
storageMode: options.storageMode,
|
||||
});
|
||||
dispatch({
|
||||
type: "SESSION_RESTORE_COMPLETE",
|
||||
restoredState: restoreFiveAxisSessionState(snapshot),
|
||||
path,
|
||||
storageMode,
|
||||
restoredAt: new Date().toISOString(),
|
||||
});
|
||||
await refreshAsyncKinematicsFrame({ operatorMessage: `5-axis session restored ${path}` });
|
||||
return { snapshot, path };
|
||||
return { snapshot, path, storageMode };
|
||||
} catch (error) {
|
||||
dispatch({ type: "SESSION_PERSISTENCE_FAILED", error: error.message });
|
||||
throw error;
|
||||
|
||||
Reference in New Issue
Block a user