# 需求变更日志 (Changelog) > 按日期倒序记录每次需求变更。每条记录在开发完成、测试验收通过后归档。 --- ## 2026-03-16 — v0.8.4: 管理员操作审计日志 **状态**: ✅ 已完成 | **验收**: ✅ 通过(本地测试) ### 变更内容 1. **AdminAuditLog 模型** — 新增审计日志 Model,记录操作人、操作类型(12 种)、目标、变更前后值(JSONField)、IP 地址、时间 2. **`log_admin_action()` 辅助函数** — 统一的审计日志写入接口,自动获取操作人和客户端 IP 3. **12 处 view 埋点** — 所有管理员 mutation 操作均记录审计日志: - 创建类:团队创建、团队管理员创建、用户创建、成员创建 - 修改类:团队更新、团队充值、设置秒数池、用户额度更新、系统设置更新、成员额度更新 - 状态类:用户状态切换、成员状态切换 4. **日志查询 API** — `GET /api/v1/admin/logs`,支持按操作类型、操作人、日期范围筛选 + 分页 5. **前端日志页面** — `/admin/logs` 操作日志页,含筛选栏(操作类型下拉、操作人搜索、日期范围)、变更详情展示(旧值 → 新值)、分页 6. **侧栏导航** — AdminLayout 新增"操作日志"菜单项 ### 变更文件 | 文件 | 改动 | |------|------| | `backend/apps/accounts/models.py` | 新增 AdminAuditLog 模型 + log_admin_action 函数 | | `backend/apps/accounts/migrations/0005_adminauditlog.py` | 新增迁移 | | `backend/apps/generation/views.py` | 12 处埋点 + admin_audit_logs_view 新端点 | | `backend/apps/generation/urls.py` | 新增 admin/logs 路由 | | `web/src/types/index.ts` | 新增 AuditLog 接口 | | `web/src/lib/api.ts` | 新增 getAuditLogs 方法 | | `web/src/pages/AuditLogsPage.tsx` | 新建日志页面 | | `web/src/pages/AuditLogsPage.module.css` | 新建日志页面样式 | | `web/src/pages/AdminLayout.tsx` | 侧栏新增"操作日志" | | `web/src/App.tsx` | 新增 /admin/logs 路由 | ### 新增 API | Method | Endpoint | Description | |--------|----------|-------------| | GET | `/api/v1/admin/logs` | 审计日志查询(支持 action/operator/start_date/end_date 筛选) | ### 触发原因 - 充值、修改秒数等操作直接对应金钱,填错无法追溯 - 需要记录谁在什么时候做了什么操作、改了什么值 --- ## 2026-03-16 — v0.8.3: 团队详情弹窗重构 + 修改秒数功能 **状态**: ✅ 已完成 | **验收**: 待测试 ### 变更内容 1. **团队详情:抽屉→弹窗** — 右侧抽屉改为居中弹窗(Modal),遵循 VideoDetailModal 设计规范:毛玻璃背景 `backdrop-filter: blur(24px)`、`border-radius: 16px`、入场动画、精致的关闭按钮 2. **弹窗尺寸优化** — 宽度 1080px、最小高度 70vh,桌面端大气不小气 3. **字号提升** — 统计卡片标签 `#8b8ea8` 12px、数值 `#f1f0ff` 18px、成员表 14px(对齐 VideoDetailModal 规范) 4. **修改秒数池功能** — 团队详情"总秒数池"卡片旁新增编辑按钮,支持直接设置 `total_seconds_pool` 值(后端校验不能低于已消耗秒数、不能为负) 5. **member_count 修复** — 后端团队详情 API 漏返回 `member_count` 字段,已补上 ### 变更文件 | 文件 | 改动 | |------|------| | `web/src/pages/TeamsPage.tsx` | 抽屉→弹窗结构、修改秒数池 UI + handler | | `web/src/pages/TeamsPage.module.css` | 全部 Team Detail Modal 样式重写(VideoDetailModal 规范) | | `web/src/lib/api.ts` | 新增 `setTeamPool` API 方法 | | `backend/apps/generation/views.py` | 新增 `admin_team_set_pool_view`、团队详情补返 `member_count` | | `backend/apps/generation/urls.py` | 新增 `admin/teams//set-pool` 路由 | ### 新增 API | Method | Endpoint | Description | |--------|----------|-------------| | PUT | `/api/v1/admin/teams//set-pool` | 直接设置团队总秒数池 | ### 触发原因 - 团队详情使用右侧抽屉形式,信息拥挤、不符合暗色主题规范 - 充值秒数填错后无法修改,而这些秒数直接对应金钱 - 成员数卡片值为空(后端遗漏字段) --- ## 2026-03-16 — v0.8.2: 管理后台 UI 修复(4 项)+ 失败原因展示 **状态**: ✅ 已完成 | **验收**: 待测试 ### 变更内容 1. **DatePicker 日历透明修复** — `.dropdown` 背景从半透明 `var(--color-bg-card)` 改为不透明 `#16161e` + `backdrop-filter` 2. **自定义 Select 组件** — 替换原生 `