AirGate/版本管理.md
seaislee1209 47393c4d7d docs: add version changelog (版本管理.md)
Track all iterations from v0.1.0 to v0.4.0 with detailed change logs

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 12:54:32 +08:00

105 lines
4.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# AirGate 版本管理
---
## v0.4.0 (2026-03-20)
### UI 优化
- 所有弹窗改为自适应宽度(`width="90%"` + `max-width`),解决小屏溢出和内容截断问题
- 「火山控制台密码」字段增加说明文字,明确是火山引擎网页后台的登录密码,非 AirGate 密码
---
## v0.3.0 (2026-03-19)
### 项目自动授权
- 添加关联项目时,自动调用火山 `AttachPolicyInProject` 在项目范围内授权默认策略ArkFullAccess + TOSFullAccess
- 移除关联项目时,自动调用 `DetachPolicyInProject` 回收权限
- `IAMUserProject` 模型新增 `attached_policies` 字段,记录每个项目已授权的策略列表
- `GlobalConfig` 新增 `default_project_policies` 配置项,支持在系统设置页面自定义默认授权策略
- `IAMService` 新增 `attach_policy_in_project()` / `detach_policy_in_project()` 方法
- 项目管理弹窗新增「已授权策略」列,展示每个项目被授权了哪些策略
### 多项目支持
- 新增 `IAMUserProject` 模型,支持一个子账号关联多个火山项目
- 每个项目有独立的监测开关,消费 = 所有开启监测的项目消费之和
- 新增项目管理弹窗:添加项目(从火山拉取下拉列表)、开关监测、移除项目、全选/全不选
- 子账号列表新增「项目」列,显示监测中/总数,可点击进入项目管理
- 消费监控页面支持展开行查看每个项目的独立消费
- 消费监控定时任务改为遍历所有开启监测的项目分别查询,累加后触发告警
- 告警内容包含每个项目的消费明细
- 移除旧的 `IAMUser.project_name` 单项目字段
- `SpendingRecord` 改为按项目粒度记录月度消费快照
### 研究报告同步更新
- 6.3 节:单项目 → 多项目聚合追踪模型
- 7.4 节:新增「项目即权限」设计说明
- 11 节:新增项目 CRUD + 自动授权 API 接口文档
---
## v0.2.0 (2026-03-19)
### 额度划拨制
- 替换月度预算为一次性额度划拨模式(预付制,用完再充)
- 支持追加(+)和扣减(-)额度,扣减有保护(不能低于已消费金额)
- 额度变更后自动重置告警状态
- 新增 `QuotaAllocation` 模型和划拨记录查看功能
- 前端「划拨」弹窗支持追加/扣减模式切换,显示最大可扣减金额
### 阶梯式告警
- 替换单一告警阈值为阶梯式百分比告警(如 50%/80%/90%
- 每个子账号可自定义告警阶梯,未设置则使用全局默认值
- 每个阶梯只通知一次,额度变更后自动重置
### 核心功能完善
- 新增创建子账号功能(自动在火山创建 IAM 用户 + 生成 API Key + 附加基础策略)
- SecretKey 创建后弹窗显示,支持一键复制到剪贴板
- 新增权限策略管理(查看/附加/移除 IAM 策略)
- 新增 API Key 认证中间件(`X-API-Key` 头,供 AirDrama 等外部系统调用)
- 新增 Docker + docker-compose 部署配置
- 新增 entrypoint.sh自动迁移 + 创建默认管理员)
### 安全修复
- `SECRET_KEY` 在生产环境DEBUG=False缺失时强制报错不再使用不安全的默认值
- `APIKeyUser` 添加 `pk`/`is_staff` 等属性,修复 DRF 限流中间件兼容性
- docker-compose SQLite 卷挂载修复(目录而非文件)
- CORS origins 移除冗余端口 80
- 清理死配置(`VOLC_ACCESS_KEY`/`VOLC_SECRET_KEY`/`MONITOR_INTERVAL`
- 清理未使用的 import
### 审计修复
- 修复前端引用不存在的字段(`current_month_spending``effective_budget``budget_usage_percent`
- 修复 scheduler 使用 naive `datetime.now()``timezone.now()`
- 修复 scheduler 从 settings 读取间隔改为从 GlobalConfig 数据库读取
- 修复 DashboardView 标签「本月总消费」→「累计总消费」
---
## v0.1.0 (2026-03-19)
### 项目初始化
- Django 4.2 + DRF 后端骨架
- Vue 3 + Element Plus 前端骨架
- 管理员登录SimpleJWT
- 火山引擎 API 客户端HMAC-SHA256 签名)
- 密钥加密存储Fernet AES-256
### 页面
- 登录页
- 仪表盘(子账号统计 + 最近告警)
- 子账号管理(列表 / 同步 / 停用 / 恢复)
- 消费监控(按用户查看消费 + 进度条)
- 告警记录(按类型筛选)
- 系统设置(火山主账号管理 + 全局配置 + 飞书 Webhook
### 后端
- IAM 用户管理(创建/同步/导入/停用/恢复)
- Billing 消费查询(分页 + 按项目筛选)
- 飞书 Webhook 通知(异步非阻塞)
- APScheduler 定时消费监控任务
### 研究报告
- 完成火山引擎 IAM/Billing/签名/策略体系深度研究
- 经过 5 轮审计修正(签名 bug、策略冲突、双重编码等