feat(canvas): 画布同步 - 新增操作事务、预演保存与并发恢复能力
This commit is contained in:
@@ -1947,15 +1947,20 @@ func applyCloudAgentPrevisMutation(repo *repository.Repository, userID, canvasID
|
||||
if err = saveCloudAgentDocument(repo, plan.Canvas, plan.Document, policy); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
afterCanvasHash := cloudAgentCanvasHash(plan.Document)
|
||||
afterSceneHash := plan.ResultSnapshotHash
|
||||
if scene, ok := findPrevisScene(creationMaps(plan.Document["previsScenes"]), plan.SceneID); ok {
|
||||
afterSceneHash = creationHash(scene)
|
||||
}
|
||||
if len(recorder) > 0 && recorder[0] != nil {
|
||||
preview := plan.Preview
|
||||
if err := recorder[0](repo, cloudAgentMutationInput{UserID: userID, CanvasID: canvasID, StepID: call.ID, Operation: plan.Operation, BeforeSnapshotHash: plan.BeforeSnapshotHash, AfterSnapshotHash: plan.AfterSnapshotHash, BeforeJSON: plan.BeforeJSON, Preview: &preview}); err != nil {
|
||||
if err := recorder[0](repo, cloudAgentMutationInput{UserID: userID, CanvasID: canvasID, StepID: call.ID, Operation: plan.Operation, BeforeSnapshotHash: plan.BeforeSnapshotHash, AfterSnapshotHash: afterCanvasHash, BeforeJSON: plan.BeforeJSON, Preview: &preview}); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
resultSnapshotHash := plan.ResultSnapshotHash
|
||||
resultSnapshotHash := afterSceneHash
|
||||
if resultSnapshotHash == "" {
|
||||
resultSnapshotHash = plan.AfterSnapshotHash
|
||||
resultSnapshotHash = afterCanvasHash
|
||||
}
|
||||
return map[string]any{"canvasId": canvasID, "sceneId": plan.SceneID, "nodeId": plan.NodeID, "shotId": plan.ShotID, "snapshotHash": resultSnapshotHash, "canvasSnapshotHash": plan.AfterSnapshotHash, "committed": true, "summary": plan.Preview.Description}, nil
|
||||
return map[string]any{"canvasId": canvasID, "sceneId": plan.SceneID, "nodeId": plan.NodeID, "shotId": plan.ShotID, "snapshotHash": resultSnapshotHash, "canvasSnapshotHash": afterCanvasHash, "committed": true, "summary": plan.Preview.Description}, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user