From 9cb8552a99816f7d73dcde24e45aeb2ab93f7e24 Mon Sep 17 00:00:00 2001 From: tianmo Date: Sat, 17 Oct 2026 14:41:32 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AB=99=E7=82=B9=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/components/storage/BackupJobTable.vue | 3 +- app/components/storage/SiteSyncCard.vue | 256 +++++++ app/components/storage/StorageBackupPanel.vue | 27 +- app/composables/useBackup.ts | 24 +- app/types/backup.ts | 11 +- i18n/locales/en.json | 25 + i18n/locales/zh-CN.json | 25 + server/api/admin/site-sync.post.ts | 59 ++ server/api/files/batch-delete.post.ts | 4 +- server/api/files/index.delete.ts | 4 +- server/api/site-sync/inventory.get.ts | 38 ++ server/api/site-sync/media.get.ts | 75 ++ server/api/site-sync/media.post.ts | 26 + server/api/site-sync/object.get.ts | 26 + server/api/site-sync/object.post.ts | 54 ++ server/api/site-sync/users.get.ts | 10 + server/utils/access.ts | 32 +- server/utils/backup/index.ts | 2 + server/utils/backup/jobs.ts | 2 +- server/utils/backup/runner.ts | 53 ++ server/utils/backup/schema.ts | 42 +- server/utils/image-index.ts | 30 +- server/utils/media-assets.test.ts | 1 + server/utils/site-sync/apply.ts | 79 +++ server/utils/site-sync/manifest.ts | 38 ++ server/utils/site-sync/protocol.ts | 59 ++ server/utils/site-sync/runner.test.ts | 55 ++ server/utils/site-sync/runner.ts | 641 ++++++++++++++++++ 28 files changed, 1683 insertions(+), 18 deletions(-) create mode 100644 app/components/storage/SiteSyncCard.vue create mode 100644 server/api/admin/site-sync.post.ts create mode 100644 server/api/site-sync/inventory.get.ts create mode 100644 server/api/site-sync/media.get.ts create mode 100644 server/api/site-sync/media.post.ts create mode 100644 server/api/site-sync/object.get.ts create mode 100644 server/api/site-sync/object.post.ts create mode 100644 server/api/site-sync/users.get.ts create mode 100644 server/utils/site-sync/apply.ts create mode 100644 server/utils/site-sync/manifest.ts create mode 100644 server/utils/site-sync/protocol.ts create mode 100644 server/utils/site-sync/runner.test.ts create mode 100644 server/utils/site-sync/runner.ts diff --git a/app/components/storage/BackupJobTable.vue b/app/components/storage/BackupJobTable.vue index 959e009..d755b32 100644 --- a/app/components/storage/BackupJobTable.vue +++ b/app/components/storage/BackupJobTable.vue @@ -26,7 +26,8 @@ function typeLabel(type: BackupJobItem['type']): string { const map: Record = { full_export: t('storage.backup.jobTypeExport'), full_restore: t('storage.backup.jobTypeRestore'), - backend_sync: t('storage.backup.jobTypeSync') + backend_sync: t('storage.backup.jobTypeSync'), + site_sync: t('storage.backup.jobTypeSiteSync') } return map[type] } diff --git a/app/components/storage/SiteSyncCard.vue b/app/components/storage/SiteSyncCard.vue new file mode 100644 index 0000000..3e9c9ef --- /dev/null +++ b/app/components/storage/SiteSyncCard.vue @@ -0,0 +1,256 @@ + + + diff --git a/app/components/storage/StorageBackupPanel.vue b/app/components/storage/StorageBackupPanel.vue index 30ccfa4..f291399 100644 --- a/app/components/storage/StorageBackupPanel.vue +++ b/app/components/storage/StorageBackupPanel.vue @@ -1,5 +1,9 @@