|
| 1 | +## 🎉 核心新功能 |
| 2 | +新增 CloudFlare Assistant 添加了强大的可观测性与数据可视化功能,让您随时随地在移动端查看 Cloudflare 服务的关键指标和健康状态。 |
| 3 | + |
| 4 | +### 📊 D1 数据库监控 |
| 5 | + |
| 6 | +全新的 D1 数据库监控功能,实时掌握 Cloudflare D1 数据库使用情况: |
| 7 | + |
| 8 | +- **D1 已读行数** 📖: 过去 24 小时总读取行数(主要计费指标) |
| 9 | +- **D1 已写行数** ✍️: 过去 24 小时总写入行数(主要计费指标) |
| 10 | +- **D1 总存储** 💾: 所有数据库的存储空间占用 |
| 11 | +- **D1 数据库数量** 🗄️: 账户下的数据库总数 |
| 12 | + |
| 13 | +**技术实现**: |
| 14 | +- 通过 GraphQL Analytics API 获取实时行数统计 |
| 15 | +- 通过 REST API 获取精确的存储和数量信息 |
| 16 | +- 支持自定义时间范围查询(1天/7天/30天) |
| 17 | + |
| 18 | +### 🗄️ R2 存储监控 |
| 19 | + |
| 20 | +新增 Cloudflare R2 对象存储全方位监控,优化存储成本: |
| 21 | + |
| 22 | +- **R2 A类操作** 📝: 写入/变更/列表操作(PutObject, DeleteObject, ListBuckets 等) |
| 23 | +- **R2 B类操作** 📥: 读取操作(GetObject, HeadObject 等) |
| 24 | +- **R2 总存储** 💽: 所有存储桶的总空间占用 |
| 25 | +- **R2 存储桶数量** 🪣: 账户下的存储桶总数 |
| 26 | + |
| 27 | +**智能分类**: |
| 28 | +- A类操作:ListBuckets, ListObjects, PutObject, DeleteObject, CopyObject 等 |
| 29 | +- B类操作:GetObject, HeadObject, HeadBucket, GetBucket* 等 |
| 30 | +- 完全符合 Cloudflare R2 官方计费分类标准 |
| 31 | + |
| 32 | +**技术实现**: |
| 33 | +- 使用 `r2OperationsAdaptiveGroups` 查询,按 `actionType` 智能分类 |
| 34 | +- 使用 `r2StorageAdaptiveGroups` 获取存储数据 |
| 35 | +- 统一使用 `date_geq/date_leq` 过滤器 |
| 36 | + |
| 37 | +## 🎨 界面优化 |
| 38 | + |
| 39 | +### 仪表盘增强 |
| 40 | + |
| 41 | +在主仪表盘新增 **8 个监控指标卡片**: |
| 42 | + |
| 43 | +**D1 监控区域**: |
| 44 | +- D1已读行 | D1已写行 |
| 45 | +- D1总存储 | D1数据库 |
| 46 | + |
| 47 | +**R2 监控区域**: |
| 48 | +- R2 A类操作 | R2 B类操作 |
| 49 | +- R2总存储 | R2存储桶 |
| 50 | + |
| 51 | +**卡片特性**: |
| 52 | +- Material Design 3 设计风格 |
| 53 | +- 清晰的标签与醒目的数值 |
| 54 | +- 自动数字格式化(K/M/B 单位) |
| 55 | +- 智能字节单位转换(B/KB/MB/GB/TB) |
| 56 | + |
| 57 | +## 🔧 技术改进 |
| 58 | + |
| 59 | +### GraphQL 查询优化 |
| 60 | + |
| 61 | +1. **统一过滤器**: D1 和 R2 统一使用 `date_geq/date_leq` 日期过滤 |
| 62 | +2. **精确字段**: |
| 63 | + - D1: `rowsRead`, `rowsWritten` |
| 64 | + - R2: `requests` (替代旧的 objectCount/uploadCount) |
| 65 | +3. **维度分组**: R2 使用 `actionType` 维度实现 A/B 类智能分类 |
| 66 | +4. **聚合优化**: R2 存储使用 `max { payloadSize }` 获取总大小 |
| 67 | + |
| 68 | +### 数据模型扩展 |
| 69 | + |
| 70 | +新增完整的 D1 和 R2 数据模型: |
| 71 | + |
| 72 | +```kotlin |
| 73 | +// DashboardMetrics 新增字段 |
| 74 | +val d1ReadRows: Long = 0 |
| 75 | +val d1WriteRows: Long = 0 |
| 76 | +val d1StorageBytes: Long = 0 |
| 77 | +val d1DatabaseCount: Int = 0 |
| 78 | + |
| 79 | +val r2ClassAOperations: Long = 0 |
| 80 | +val r2ClassBOperations: Long = 0 |
| 81 | +val r2StorageBytes: Long = 0 |
| 82 | +val r2BucketCount: Int = 0 |
| 83 | +``` |
| 84 | + |
| 85 | +### 性能优化 |
| 86 | + |
| 87 | +- **并行请求**: GraphQL 和 REST API 并行加载 |
| 88 | +- **数据缓存**: ViewModel 层智能缓存 |
| 89 | +- **异步处理**: Kotlin Coroutines 异步网络请求 |
| 90 | + |
| 91 | +## 🐛 Bug 修复 |
| 92 | + |
| 93 | +- 修复编译警告:移除未使用的 `dateOnlyFormat` 和 `dateTimeFormat` 变量 |
| 94 | +- 优化代码质量:修正未使用的 lambda 参数命名 |
| 95 | +- 提升代码可维护性 |
| 96 | + |
| 97 | +## 📋 API 权限要求 |
| 98 | + |
| 99 | +新功能需要以下 Cloudflare API 权限: |
| 100 | + |
| 101 | +✅ **Account Analytics**: Read(必需) |
| 102 | +✅ **D1**: Read(查看数据库列表) |
| 103 | +✅ **R2**: Read(查看存储桶列表) |
| 104 | + |
| 105 | +## 💰 计费参考 |
| 106 | + |
| 107 | +### D1 免费额度 |
| 108 | +- 每天 **500 万行读取** + **10 万行写入** |
| 109 | +- 超出按行计费 |
| 110 | +- 存储费用单独计算 |
| 111 | + |
| 112 | +### R2 计费 |
| 113 | +- A 类操作:**$4.50** / 百万次请求 |
| 114 | +- B 类操作:**$0.36** / 百万次请求 |
| 115 | +- 存储费用:**$0.015** / GB / 月 |
| 116 | +- 出站流量:**免费** ✨ |
| 117 | + |
| 118 | +## 🚀 使用指南 |
| 119 | + |
| 120 | +1. **打开应用主页**,仪表盘自动加载数据 |
| 121 | +2. **查看监控指标**,了解 D1 和 R2 使用情况 |
| 122 | +3. **点击刷新按钮** 🔄,获取最新数据 |
| 123 | +4. **切换时间范围**(1天/7天/30天),查看趋势 |
0 commit comments