# backend-dev - 工作日志

> 用于上下文恢复。压缩/重启后先读此文件。

---

## 2026-05-07

### OPT-02: 轮询超时修复（WebSocket 推送）

完成以下修改：

1. **新建** `server/src/services/websocket.service.ts`
   - WebSocket 服务，基于 ws 库
   - 挂载于 `/ws` 路径
   - 提供 `pushAudioGenerationComplete` 和 `pushVideoGenerationComplete` 函数

2. **修改** `server/src/app.ts`
   - 导入 `initWebSocket`
   - 在 start() 函数中调用 `initWebSocket(server)`

3. **修改** `server/src/modules/tts/tts.service.ts`
   - 音频生成完成后推送 `audio_generation_complete` 事件
   - 音频生成失败后推送 `audio_generation_complete` 事件（status: 'failed'）

4. **修改** `server/src/modules/video-generator/video-generator.service.ts`
   - 视频生成完成后推送 `video_generation_complete` 事件
   - 视频生成失败后推送 `video_generation_complete` 事件（status: 'failed'）

### 待前端配合
- 移除 `index.vue` 和 `chapter-detail.vue` 中的 30s setTimeout 超时
- 改为监听 WebSocket 事件 `audio_generation_complete` 和 `video_generation_complete`

### 下一步
- [x] OPT-08: batch-generate API (已完成)
- [x] OPT-12: feedback API (已完成)
- [ ] OPT-17: 歌词时间轴

### OPT-12: 意见反馈 API

完成以下修改：

1. **新建** `server/src/modules/feedback/feedback.service.ts`
   - 反馈服务，提供 submitFeedback 方法
   - 使用 uuid 生成反馈 ID
   - 保存到 MySQL 数据库

2. **新建** `server/src/modules/feedback/feedback.controller.ts`
   - 路由: POST /api/feedback
   - 参数验证: type 必填且为 suggestion/bug/other, title/content 必填
   - 调用 feedbackService.submitFeedback

3. **修改** `server/prisma/schema.prisma`
   - 新增 Feedback 模型

4. **修改** `server/src/app.ts`
   - 导入 feedbackRoutes
   - 注册 /api/feedback 路由

### 待执行
- [ ] 运行 `npx prisma generate`
- [ ] 运行 `npx prisma db push`
