# 需求变更日志 (Changelog) > 按日期倒序记录每次需求变更。每条记录在开发完成、测试验收通过后归档。 --- ## 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 文件上传** — 火山引擎 TOS(S3 兼容)上传,`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/` | 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.sqlite3`,Playwright 自动启动测试后端 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 --- ## 模板(新增变更请复制此模板) ```markdown ## YYYY-MM-DD — 变更标题 **状态**: 🔲 开发中 / ✅ 已完成 | **验收**: 🔲 待验收 / ✅ 通过 / ❌ 未通过 ### 变更内容 1. ... ### 变更文件 | 文件 | 改动 | |------|------| | `path/to/file` | 描述 | ### 触发原因 - ... ### 备注 - ... ```