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

4.6 KiB
Raw Permalink Blame History

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_spendingeffective_budgetbudget_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、策略冲突、双重编码等