viewmodel/ 下新建 PlaylistBackup.ets,定义 PlaylistBackupData、PlaylistBackupItem、PlaylistSongBackupItem 接口,包含 version、exportTime、appVersion、playlists 字段PlaylistTable 中新增 exportAllPlaylists() 方法:查询所有歌单及其关联歌曲,返回 PlaylistBackupData 对象。超过 100 个歌单时分批查询PlaylistTable 中新增 importPlaylists() 方法:接受 PlaylistBackupData,逐一创建歌单和歌曲关联,返回导入结果统计common/util/PlaylistBackupManager.ets,实现单例模式和基本结构exportToJson() 方法:调用 PlaylistTable.exportAllPlaylists(),序列化为 JSON 字符串validateBackupJson() 方法:解析 JSON 并校验 version、必要字段完整性,返回校验结果importFromJson() 方法:解析并校验 JSON,调用 PlaylistTable.importPlaylists() 写入数据saveToLocal() 方法:使用 DocumentViewPicker 保存 JSON 文件,文件名格式 playlist_backup_YYYYMMDD_HHmmss.jsonloadFromLocal() 方法:使用 DocumentViewPicker 选择 .json 文件,读取并返回文件内容dialog/ImportConflictDialog.ets:冲突解决对话框,显示冲突歌单名称,提供「覆盖」「跳过」「重命名」三个选项和「应用到全部」复选框importFromJson() 中集成冲突检测:导入前按歌单名称查询现有歌单,发现冲突时弹出对话框uploadToWebDav() 方法:接受 WebDAV 账户参数,生成备份 JSON,通过 RemoteDriveManager 的 rcpSocket 上传到 /TTMusic/backups//TTMusic/backups/ 目录(使用 createWebDavFolder 或 createDirectory)RemoteDriveType.WebDav 类型的账户,无账户时提示用户添加(集成在 BackupManageView 弹层中)listWebDavBackups() 方法:列出 WebDAV 服务器 /TTMusic/backups/ 下的所有 .json 文件downloadFromWebDav() 方法:下载选中的备份文件内容uploadToServer() 方法:通过 POST /backup/playlist/upload 上传备份 JSON,请求携带 userTokendownloadFromServer() 方法:通过 GET /backup/playlist/download 下载指定备份listServerBackups() 方法:通过 GET /backup/playlist/list 获取备份历史列表hasActiveSubscription,非 VIP 引导到 VipPagescheduleAutoBackup() 方法:使用 setTimeout 实现 5 分钟防抖,窗口内多次调用只触发一次上传PlaylistTable 的增删改方法中添加自动备份触发点:createPlaylist、deletePlaylist、updatePlaylist、addSongToPlaylist、removeSongFromPlaylist 操作完成后调用 scheduleAutoBackup()PreferencesUtil 保存自动备份开关状态view/BackupManageView.ets:备份管理视图组件,包含导出、导入、WebDAV 备份、WebDAV 恢复、服务器备份(VIP)、服务器恢复(VIP)功能入口SettingPage.ets 中添加「备份与恢复」菜单项,通过 Sheet 弹层打开 BackupManageViewPreferencesUtil 存储最近备份记录列表(JSON 数组,最多保留 20 条)