fix(canvas): 画布 - 防止旧内容覆盖并支持版本历史恢复

This commit is contained in:
kinoko
2026-09-17 18:40:42 +08:00
parent b6bae4f957
commit 35ebed3097
69 changed files with 3575 additions and 294 deletions

View File

@@ -111,13 +111,13 @@ func TestUndoCloudAgentCanvasRejectsChangedCanvasAndSubmittedTask(t *testing.T)
afterHash := cloudAgentCanvasHash(changedDoc)
// A user edit after the Agent mutation must make the compare-and-restore fail.
changed.PayloadJSON = `{"nodes":[{"id":"user-node","type":"text","title":"用户编辑","metadata":{"content":"后来修改"}}]}`
if err := s.repo.CompareSaveCreationCanvas(changed, changed.PayloadJSON); err == nil {
if err := saveCreationCanvasWithHistory(s.repo, changed, changed.PayloadJSON); err == nil {
t.Fatal("test setup unexpectedly saved with the new value as previous snapshot")
}
latest, _ := s.repo.CanvasProjectForUser("user", "agent-canvas")
previous := latest.PayloadJSON
latest.PayloadJSON = `{"nodes":[{"id":"user-node","type":"text","title":"用户编辑","metadata":{"content":"后来修改"}}]}`
if err := s.repo.CompareSaveCreationCanvas(latest, previous); err != nil {
if err := saveCreationCanvasWithHistory(s.repo, latest, previous); err != nil {
t.Fatal(err)
}
_, err = s.UndoCloudAgentCanvas("user", run.ID, call.ID, afterHash, "冲突")