video-shuoshan/docs/changelog.md
seaislee1209 32f0ee58f4 feat: v0.8.0 — Seedance API 全流程修复 + TOS 视频持久化
- 新增音频引用传递给 Seedance API
- 视频生成完成后自动持久化到 TOS(永久 CDN URL)
- 移除 ARK_API_KEY 硬编码默认值
- 前端渐进式轮询(10s/30s/60s)替代固定 3 分钟
- TOS 桶切换到 airdrama-media (cn-beijing)
- K8s Secret 注入 TOS 密钥,CI/CD 同步更新

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-15 21:26:27 +08:00

7.7 KiB
Raw Blame History

需求变更日志 (Changelog)

按日期倒序记录每次需求变更。每条记录在开发完成、测试验收通过后归档。


2026-03-15 — v0.8.0: Seedance API 全流程修复 + TOS 视频持久化

状态: 已完成 | 验收: 通过(本地端到端测试)

变更内容

  1. 音频引用支持 — 后端 content_items 构建新增 audio 类型分支Seedance API 可接收音频参考素材
  2. 视频 TOS 持久化 — Seedance 返回的临时 URL24h 有效)自动下载并上传到 TOS生成永久 CDN 链接;失败时降级使用临时 URL
  3. 移除硬编码密钥 — ARK_API_KEY 默认值从测试 key 改为空字符串,避免生产环境误用
  4. 渐进式轮询 — 前端轮询从固定 3 分钟改为渐进式:前 2 分钟每 10s → 2-5 分钟每 30s → 5 分钟后每 60s
  5. TOS 新桶配置 — 切换到独立桶 airdrama-mediacn-beijingTOS 配置默认值更新
  6. K8s Secret 注入 — TOS_ACCESS_KEY / TOS_SECRET_KEY 通过 K8s Secret 注入CI/CD 自动创建
  7. CI/CD 密钥同步 — deploy.yaml 新增 TOS 密钥到 kubectl secret 创建命令

变更文件

文件 改动
backend/apps/generation/views.py 新增 audio content_item 分支 + 完成时 TOS 持久化逻辑
backend/utils/tos_client.py 新增 upload_from_url() — 从 URL 下载并上传到 TOS
backend/config/settings.py TOS 桶/区域/端点改为 airdrama-media (cn-beijing)ARK_API_KEY 默认值清空
web/src/store/generation.ts setInterval → setTimeout 渐进式轮询
k8s/backend-deployment.yaml 新增 6 个 TOS 环境变量AK/SK from Secret
.gitea/workflows/deploy.yaml kubectl secret 新增 TOS_ACCESS_KEY / TOS_SECRET_KEY

触发原因

  • Seedance API 文档审查发现:音频引用未传递、视频 URL 24h 过期、密钥硬编码
  • 需要独立 TOS 桶存放生成视频(原桶为同事的阿里云 OSS

备注

  • 本地测试通过:文生视频 "一只猫在阳光下伸懒腰" → 87,300 tokens → 永久 TOS URL
  • Seedance 2.0 定价:不含视频输入 46 元/百万 tokens含视频输入 28 元/百万 tokens
  • 资源包 5,000,000 tokens约可生成 57 个 4 秒 720p 视频

2026-03-13 — 异常上报体系优化 + 轮询策略调整

状态: 已完成 | 验收: 通过

变更内容

  1. LogCenterMiddleware — 新增 Django 中间件,捕获 DRF 之外的异常导入错误、中间件异常、URL 解析失败),上报日志中台
  2. custom_exception_handler 优化 — 未处理异常返回 JSON {'error': '...'} 而非 HTML 500
  3. 轮询间隔调整 — 前端视频生成任务轮询从 5 秒改为 3 分钟Seedance 生成耗时 2-5 分钟)
  4. CLAUDE.md 更新 — 增量开发指南从 "Autonomous Skill" 修正为 "agent-auto"

变更文件

文件 改动
backend/utils/log_center.py 新增 LogCenterMiddleware + 优化 custom_exception_handler
backend/config/settings.py MIDDLEWARE 列表首位加入中间件
web/src/store/generation.ts 轮询间隔 5000ms → 180000ms
CLAUDE.md 增量开发指南更新

触发原因

  • 线上 /api/v1/video/tasks 返回 500日志中台未收到错误上报
  • 视频生成轮询过于频繁,增加后端负载

2026-03-13 — Phase 4: TOS 存储 + Seedance API 集成

状态: 已完成 | 验收: 通过

变更内容

  1. TOS 文件上传 — 火山引擎 TOSS3 兼容)上传,POST /api/v1/media/upload
  2. Seedance API 对接 — 火山方舟 Seedance 视频生成 API异步 create_task + query_task
  3. 数据库持久化 — GenerationRecord 新增 ark_task_id、result_url、error_message、reference_urls
  4. 前端重写 — generation store 完全重写TOS 上传 → API 调用 → 轮询 → 展示结果
  5. 页面刷新持久化loadTasks() 从数据库加载历史任务

新增/变更 API

端点 方法 说明
/api/v1/media/upload POST 上传文件到 TOS
/api/v1/video/generate POST 创建 Seedance 任务(改写)
/api/v1/video/tasks GET 用户任务列表(新增)
/api/v1/video/tasks/<uuid> GET 单任务状态轮询(新增)

变更文件

文件 改动
backend/utils/tos_client.py 新增TOS 上传客户端
backend/utils/seedance_client.py 新增Seedance API 客户端
backend/config/settings.py TOS + ARK 配置
backend/apps/generation/models.py 4 个新字段
backend/apps/generation/views.py 3 个新端点 + 重写 generate
backend/apps/generation/urls.py 3 条新路由
backend/apps/generation/serializers.py references 字段
backend/requirements.txt tos>=2.7, requests>=2.31
web/src/store/generation.ts 完全重写
web/src/types/index.ts BackendTask 接口
web/src/lib/api.ts mediaApi + videoApi
web/src/components/VideoGenerationPage.tsx loadTasks on mount
web/src/components/GenerationCard.tsx 视频播放器 + 错误态

2026-03-13 — 测试隔离 + Mock 数据清理

状态: 已完成 | 验收: 通过

变更内容

  1. 测试 DB 隔离TESTING=true 环境变量切换到 test_db.sqlite3Playwright 自动启动测试后端
  2. 移除 Mock 数据兜底 — DashboardPage 图表仅显示真实数据,无 mock fallback

触发原因

  • E2E 测试会污染开发数据库
  • Dashboard 应展示真实数据而非虚假 Mock

2026-03-12 — Phase 3: 秒数计量 + 管理后台重做 + 个人中心

状态: 已完成 | 验收: 通过agent-auto 自动测试)

变更内容

  1. 计量单位变更 — 所有「调用次数」改为「生成秒数」(daily_seconds_limit / monthly_seconds_limit)
  2. 管理后台重做 — Sidebar 多页面布局4 个子路由:
    • /admin/dashboard — 仪表盘 + ECharts 折线图 + 排行柱状图
    • /admin/users — 用户管理(分页、搜索、配额编辑、启用/禁用)
    • /admin/records — 消费记录(时间筛选、导出 CSV
    • /admin/settings — 系统设置 + 公告管理
  3. 用户个人中心 (/profile) — ECharts 环形进度条 + Sparkline + 消费记录
  4. 8 个新 API 端点 — admin: stats/users/users/:id/quota/status/records + profile: overview/records

设计规范

  • 深色主题Linear/Vercel 风格)
  • ECharts + echarts-for-react
  • Arco Design 组件库优先

2026-03-12 — Phase 2: 后端 + 用户认证 + 管理面板

状态: 已完成 | 验收: 通过agent-auto 自动测试)

变更内容

  1. Django 后端 — Django 4.2 + DRF + MySQL 云数据库
  2. JWT 认证 — SimpleJWT + 前端 Token 自动刷新
  3. 用户系统 — 登录 /login + 注册 /register
  4. 管理后台 — 基础仪表盘 + 用户配额管理
  5. 9 个新 API 端点 — 认证 4 个 + 管理 3 个 + 已有接口认证 2 个

2025 — Phase 1: 核心视频生成 UI

状态: 已完成 | 验收: 通过92 单元测试 + 14 E2E 测试)

变更内容

  1. 视频生成页 — 全能参考/首尾帧双模式
  2. InputBar — contentEditable 富文本 + @ mention
  3. 深色主题 UI#0a0a0f 背景 + Arco Design
  4. 状态管理 — Zustand store

模板(新增变更请复制此模板)

## YYYY-MM-DD — 变更标题

**状态**: 🔲 开发中 / ✅ 已完成 | **验收**: 🔲 待验收 / ✅ 通过 / ❌ 未通过

### 变更内容
1. ...

### 变更文件
| 文件 | 改动 |
|------|------|
| `path/to/file` | 描述 |

### 触发原因
- ...

### 备注
- ...