()
| 13 | const STATS_PERSIST_DEBOUNCE_MS = 5000 |
| 14 | // 备份(data.json.bak)最小刷新间隔——不必每次落盘都多写一份 |
| 15 | const BACKUP_MIN_INTERVAL_MS = 5 * 60 * 1000 |
| 16 | // rename 重试间隔:Windows / 网络盘上目标文件被占用时可能短暂 EPERM / EBUSY |
| 17 | const RENAME_RETRY_DELAYS_MS = [20, 50, 100] |
| 18 | |
| 19 | // 进程内串行化:所有对 data.json 的 read-modify-write 排队执行。 |
| 20 | // 队列必须是模块级的——进程里存在多个 DataPersistence 实例 |
| 21 | // (utils/account.js 一个、routes/settings.js 一个),实例级的锁挡不住并发。 |
| 22 | // 注:多个进程共享文件时仍可能「后写覆盖先写」丢一次统计, |
| 23 | // 但原子 rename 保证任何时刻文件都是完整 JSON,不会再出现半截内容。 |
nothing calls this directly
no outgoing calls
no test coverage detected