feat: 字幕管理 - 增删改查 + 批量导入(基于片段config) #394

Merged
xiaoxia merged 4 commits from feat/subtitle-management into develop 2026-07-17 10:50:45 +08:00
Owner

功能

时间线字幕编辑完整后端能力。

设计

字幕存储在 clip.config["subtitles"] JSON 数组中,无需新建表和migration
每条字幕: {id, start, end, text, style}

Service 层

  • list_subtitles(clip_id) — 按时间排序返回所有字幕
  • get_subtitle(clip_id, subtitle_id) — 获取单条字幕
  • add_subtitle(clip_id, start, end, text, style) — 添加一条
  • update_subtitle(clip_id, subtitle_id, ...) — 更新时间/文本/样式
  • delete_subtitle(clip_id, subtitle_id) — 删除一条
  • batch_update_subtitles(clip_id, subtitles) — 全量替换(SRT导入/ASR结果导入用)

API

  • GET /edit-plans/clips/{id}/subtitles — 列表
  • POST /edit-plans/clips/{id}/subtitles — 新增
  • PUT /edit-plans/clips/{id}/subtitles/{sid} — 更新
  • DELETE /edit-plans/clips/{id}/subtitles/{sid} — 删除
  • PUT /edit-plans/clips/{id}/subtitles — 批量更新

全部带项目级权限校验。

测试

66 passed(原50 + 新增16),零回归

## 功能 时间线字幕编辑完整后端能力。 ## 设计 字幕存储在 `clip.config["subtitles"]` JSON 数组中,**无需新建表和migration**。 每条字幕: `{id, start, end, text, style}` ## Service 层 - `list_subtitles(clip_id)` — 按时间排序返回所有字幕 - `get_subtitle(clip_id, subtitle_id)` — 获取单条字幕 - `add_subtitle(clip_id, start, end, text, style)` — 添加一条 - `update_subtitle(clip_id, subtitle_id, ...)` — 更新时间/文本/样式 - `delete_subtitle(clip_id, subtitle_id)` — 删除一条 - `batch_update_subtitles(clip_id, subtitles)` — 全量替换(SRT导入/ASR结果导入用) ## API - `GET /edit-plans/clips/{id}/subtitles` — 列表 - `POST /edit-plans/clips/{id}/subtitles` — 新增 - `PUT /edit-plans/clips/{id}/subtitles/{sid}` — 更新 - `DELETE /edit-plans/clips/{id}/subtitles/{sid}` — 删除 - `PUT /edit-plans/clips/{id}/subtitles` — 批量更新 全部带项目级权限校验。 ## 测试 66 passed(原50 + 新增16),零回归
xiaoxia force-pushed feat/subtitle-management from 3f811e7087 to ad0263c377 2026-07-16 13:46:53 +08:00 Compare
xiaoxia force-pushed feat/subtitle-management from 2ecd7e4857 to b4811e33ca 2026-07-16 13:56:24 +08:00 Compare
auto-approve-bot approved these changes 2026-07-17 00:10:55 +08:00
auto-approve-bot left a comment
Collaborator

CI全绿,自动审批通过。

CI全绿,自动审批通过。
xiaoxia force-pushed feat/subtitle-management from 4f51515058 to b24544d624 2026-07-17 07:54:48 +08:00 Compare
xiaoxia force-pushed feat/subtitle-management from b24544d624 to 0cd99e1e63 2026-07-17 09:32:55 +08:00 Compare
xiaoxia force-pushed feat/subtitle-management from 0cd99e1e63 to c5dc2f0a5c 2026-07-17 09:41:20 +08:00 Compare
xiaoxia added 4 commits 2026-07-17 10:03:45 +08:00
- EditPlanService 字幕管理 6 个方法:
  - list_subtitles / get_subtitle
  - add_subtitle / update_subtitle / delete_subtitle
  - batch_update_subtitles(全量替换,支持SRT/ASR导入)
- 字幕存储在 clip.config["subtitles"] 中,无需 migration
- 每条字幕: id / start / end / text / style
- 自动按时间排序、校验时间合法性
- API: 5个接口(列表/新增/更新/删除/批量更新)
  - 项目级权限校验
- 16个单元测试全覆盖
- 添加response_model=None和response_class=Response
- 修复204状态码与response body冲突的问题
fix: 修复rebase冲突导致的测试函数错位
CI Build & Deploy Pipeline / Build Staging API Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Production API Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Production Web Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI Build & Deploy Pipeline / Deploy Production (pull_request) Has been skipped
CI Build & Deploy Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI Build & Deploy Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI Build & Deploy Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 15s
AI Code Review / AI Code Review (pull_request) Failing after 34s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 1m3s
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Successful in 2m59s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 3m22s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 2m39s
7d644eb584
xiaoxia force-pushed feat/subtitle-management from c5dc2f0a5c to 7d644eb584 2026-07-17 10:03:45 +08:00 Compare
xiaoxia merged commit ed705187ca into develop 2026-07-17 10:50:45 +08:00
xiaoxia deleted branch feat/subtitle-management 2026-07-17 10:50:45 +08:00
Sign in to join this conversation.