task_plan.md 4.3 KB

有声书编辑功能 - 实现计划

需求概述

需求 说明
书籍基础编辑 书名/作者/简介/封面修改、章节重排序/删除、单章节重新生成
创建流程回退 用户选错选项后可以返回修改,不重新开始

一、数据库变更

1.1 Book 模型 - 暂不修改

现有 title, subtitle, description, coverUrl, targetAudience, style, bookScale 字段已满足编辑需求,无需新增。

1.2 BookChapter 模型变更

model BookChapter {
  // 新增字段
  sortOrder     Int      @default(0)           // 用于手动排序
  contentLock   Boolean  @default(false)        // 内容锁定标记(防止误改)
}

二、后端 API 设计

2.1 新增路由(album-management.controller.ts 扩展)

方法 路径 说明
PUT /api/book-generator/books/:id 更新书籍基础信息
PUT /api/book-generator/chapters/:id 更新单个章节(标题、内容、排序)
PUT /api/book-generator/chapters/:id/regenerate 重新生成章节内容
POST /api/book-generator/chapters/:id/resort 批量重排章节顺序
DELETE /api/book-generator/chapters/:id 删除章节

2.2 编辑边界规则

genStage 可编辑内容 可重新生成
draft / outlining ✅ 全部 ✅ 大纲
content_generating ✅ 全部 ✅ 内容
content_completed ✅ 全部 ✅ 内容
audio_generating 及之后 ⚠️ 仅标题/排序 ❌ 需先回退

2.3 回退重生成协议

当用户在 audio_completed 阶段想修改内容:

  1. 调用 regenerateChapter(chapterId, 'content_completed') 将阶段回退
  2. 内容解锁,允许编辑
  3. 重新生成时同步更新后续阶段

三、前端改动

3.1 详情页新增编辑入口(detail.vue)

详情页顶部操作区:
[编辑书籍] [删除书籍] [重新生成]

3.2 书籍编辑弹窗(基础信息)

  • 书名、副标题、简介、封面(上传/URL)
  • 面向人群、书籍类型、写作风格、行业领域

3.3 章节编辑

  • 点击章节行内"✏️"进入编辑态
  • 可修改:标题、内容(限制在content_completed前)、排序
  • 章节操作:上移/下移 删除 重新生成

3.4 创建流程回退(create.vue)

关键:create.vue 需要保存用户的选择状态到 storage 或后端

新建 API: | 方法 | 路径 | 说明 | |------|------|------| | POST | /api/book-generator/draft | 保存创建草稿 | | PUT | /api/book-generator/draft/:id | 更新草稿 | | GET | /api/book-generator/draft/:id | 读取草稿 |

前端行为:

  1. 用户填写创建表单 → 点击"创建书籍"前 → 自动保存草稿到后端
  2. 用户点击"返回修改" → 读取草稿 → 填充表单
  3. 用户重新选择选项 → 更新草稿 → 继续创建

四、分阶段实现

Phase 1:后端编辑 API(P0)

  • 扩展 album-management.controller.ts 新增 PUT /books/:id
  • 新增 PUT /chapters/:id
  • 新增 DELETE /chapters/:id
  • 新增 POST /chapters/:id/regenerate(带阶段回退逻辑)
  • stage-manager.ts 补充回退重生成协议

Phase 2:前端编辑界面(P0)

  • detail.vue 顶部添加"编辑书籍"按钮
  • 书籍编辑弹窗(支持书名/简介/封面修改)
  • 章节行内编辑态(上移/下移/删除/重新生成)
  • 编辑权限控制(genStage 限制)

Phase 3:创建草稿与回退(P1)

  • 后端新增 /draft 系列 API
  • create.vue 创建前自动保存草稿
  • 创建失败/用户返回时读取草稿继续编辑
  • "上一步"按钮回到创建表单重新选择

Phase 4:章节排序优化(P2)

  • 新增 sortOrder 字段迁移
  • 前端拖拽排序功能
  • 后端批量更新排序

五、验证清单

  • PUT /api/book-generator/books/:id 更新书名成功
  • PUT /api/book-generator/chapters/:id 更新章节标题成功
  • DELETE /api/book-generator/chapters/:id 删除章节成功
  • audio_completed 阶段编辑内容时被阻止
  • detail.vue 编辑弹窗正常打开/关闭
  • 创建流程选择错误选项后可回退修改
  • 章节重新生成后 genStage 正确回退