fix: 服务器数据纪元保护(空快照不清空本地,自动全量重推自救) / 详情页导出指定日 / 全局计时时钟面板
This commit is contained in:
+5
-2
@@ -127,7 +127,10 @@ function saveRegistry() { writeJson(registryFile, registry); try { doBackup() }
|
||||
|
||||
function userFile(userId) { return path.join(DATA_DIR, 'users', userId + '.json') }
|
||||
function loadUserData(userId) {
|
||||
return readJson('users/' + userId + '.json', { userId, cursor: 0, tables: {}, tombstones: {} })
|
||||
const data = readJson('users/' + userId + '.json', { userId, cursor: 0, tables: {}, tombstones: {} })
|
||||
// 数据纪元:用户数据文件首次创建时间。目录被误删重建后该值改变,客户端据此识别并全量重推自救
|
||||
if (!data.created_at) data.created_at = new Date().toISOString()
|
||||
return data
|
||||
}
|
||||
function saveUserData(userId, data) {
|
||||
fs.mkdirSync(path.join(DATA_DIR, 'users'), { recursive: true })
|
||||
@@ -442,7 +445,7 @@ async function handle(req, res) {
|
||||
const tombs = userData.tombstones[t] || {}
|
||||
for (const [u, deletedAt] of Object.entries(tombs)) outTombs.push({ table: t, uuid: u, deleted_at: deletedAt })
|
||||
}
|
||||
json(res, 200, { tables: outTables, tombstones: outTombs, serverTime: new Date().toISOString() })
|
||||
json(res, 200, { tables: outTables, tombstones: outTombs, serverTime: new Date().toISOString(), dataEpoch: String(userData.created_at || '') })
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user