## Context - 现有音乐播放器的队列来自画布音频节点或工具内筛选结果,属于临时运行态。 - 素材库音频与 AI 任务音频都已具备统一的 `Asset` 视图,但没有播放列表关系表。 ## Goals - 提供持久化播放列表与默认收藏列表 - 保持画布播放行为不变 - 在媒体库音频卡片上提供低成本入口 ## Non-Goals - 不实现拖拽排序 - 不新增播放列表封面、分享、导出等扩展字段 - 不把画布节点直接加入播放列表 ## Decisions ### 独立 playlist store - 使用单独的 localforage store 保存播放列表元数据和列表项 - 只保存 `playlistId -> assetId[]` 轻量关系,不改动现有素材存储结构 ### 双轨播放队列 - `queueSource=canvas`:继续沿用画布音频队列 - `queueSource=playlist`:由音乐播放器或媒体库中的播放列表触发 - 播放器 UI 根据 `queueSource` 展示副标题与列表内容 ### 删除与兼容 - 删除素材时,级联删除所有播放列表中的对应引用 - 删除播放列表时,不影响素材本体 - 系统播放列表“收藏”固定存在,不允许删除或重命名 ## Risks - 右键菜单可能与虚拟列表滚动冲突 - 通过 portal + fixed 定位,并在点击外部/滚动时关闭 - AI 任务音频被删除后,播放列表可能残留无效引用 - 在素材删除入口做级联清理,并在读取列表时过滤缺失素材