Files
TrueGrowth/openspec/changes/add-suno-lyrics-task-and-canvas-flow/tasks.md

47 lines
1.9 KiB
Markdown

## 1. Architecture
- [ ] 1.1 为 Suno 请求增加 `sunoAction`,并定义 `music / lyrics` 两类执行动作
- [ ] 1.2 为任务结果增加 `resultKind` 与歌词结果字段,解除“所有 audio 任务都有媒体 URL”的假设
- [ ] 1.3 明确歌词结果的统一 markdown / text 画布格式
## 2. Provider Routing And Service Layer
- [ ] 2.1 为 Suno audio binding metadata 增加 `lyrics` 动作描述
- [ ] 2.2 实现 `POST /suno/submit/lyrics`
- [ ] 2.3 复用 `GET /suno/fetch/{task_id}`,并新增歌词结果标准化提取:
- `text`
- `title`
- `tags`
- `providerTaskId`
- [ ] 2.4 让 `music``lyrics` 共用轮询框架,但分别走各自的 submit body 与 result extractor
## 3. Task Queue And Persistence
- [ ] 3.1 调整 `TaskResult`、任务存储读写和恢复逻辑,支持无 URL 的歌词结果
- [ ] 3.2 调整任务队列 item 展示,使歌词任务显示动作、标题、标签和歌词摘要
- [ ] 3.3 为歌词任务补齐重试、刷新恢复和搜索行为
- [ ] 3.4 为歌词任务增加队列操作:
- 复制歌词
- 插入画布
## 4. UI And Canvas
- [ ] 4.1 在音频模式中增加 `music / lyrics` 动作切换
- [ ] 4.2 在 `lyrics` 动作下隐藏音乐专属参数:
- `mv`
- `title`
- `tags`
- `continueSource`
- `continueClipId`
- `continueAt`
- [ ] 4.3 调整手动“插入到画布”路径,让歌词结果走文本插入而不是音频节点
- [ ] 4.4 调整自动插入路径,按 `resultKind` 在音频节点和文本插入之间分流
## 5. Verification
- [ ] 5.1 验证歌词任务能正确提交到 `/suno/submit/lyrics`
- [ ] 5.2 验证 `/suno/fetch/{task_id}` 返回歌词结果时能正确完成任务
- [ ] 5.3 验证刷新页面后歌词任务仍可恢复与展示
- [ ] 5.4 验证歌词任务在队列中可复制、可插入,且不会被误渲染为音频卡片
- [ ] 5.5 验证音乐生成既有链路不回归