feat: 实现功能3强制更新

- 新增 ForceUpdateCommand 类实现强制更新功能
- 添加 force-update CLI 命令支持
- 实现参数验证、配置对比、CDN缓存刷新
- 添加完整的测试用例和使用示例
- 更新文档和进度跟踪
- 支持模拟环境测试
- 添加警告提示和错误处理

主要文件:
- src/config_man/core/force_update_command.py (新增)
- src/config_man/cli/main.py (更新)
- examples/test_force_update.py (新增)
- examples/force_update_usage.py (新增)
- docs/progress-tracker.md (更新)
This commit is contained in:
2025-08-08 01:50:30 +08:00
parent 9eddb3133c
commit f534dc52cb
19 changed files with 2594 additions and 285 deletions

View File

@@ -0,0 +1,216 @@
# 建议更新功能实现总结
## 功能概述
根据需求文档已成功实现功能2建议更新。该功能允许在目标版本的配置文件中添加 `Ver_New` 属性,提示用户有新版本可用。
## 实现内容
### 1. 核心功能实现
#### 1.1 命令处理器
- **文件**: `src/config_man/core/suggest_update_command.py`
- **类**: `SuggestUpdateCommand`
- **功能**: 处理建议更新命令的核心逻辑
#### 1.2 主要功能流程
1. **参数验证**: 验证平台类型、版本号格式、版本号不能相同
2. **获取更新版本Ver值**: 从更新版本配置中提取Ver属性值
3. **获取目标版本配置**: 从目标版本获取当前配置(保存原始配置用于对比)
4. **创建更新配置**: 复制原始配置并添加Ver_New属性
5. **加密并上传**: 将更新后的配置加密并上传到对象存储
6. **刷新CDN缓存**: 刷新CDN缓存以确保内容同步
7. **显示结果和对比**: 显示操作成功信息和配置对比表格
### 2. CLI集成
#### 2.1 CLI命令
- **命令**: `suggest-update`
- **文件**: `src/config_man/cli/main.py`
- **参数**:
- `--platform`: 平台类型 (android/ios)
- `--target-version`: 目标版本号
- `--update-version`: 更新版本号
- `--storage-path`: 对象存储路径前缀
- `--cdn-url`: CDN基础URL
- `--mock`: 使用模拟环境测试
#### 2.2 错误处理
- 无效平台类型
- 无效版本号格式
- 目标版本和更新版本相同
- 网络连接失败
- 文件操作失败
### 3. 测试和验证
#### 3.1 单元测试
- **文件**: `examples/test_suggest_update.py`
- **测试内容**:
- Android平台建议更新
- iOS平台建议更新
- 错误情况处理
- CLI命令测试
#### 3.2 使用示例
- **文件**: `examples/suggest_update_usage.py`
- **内容**: 完整的使用示例和说明
#### 3.3 模拟环境
- **文件**: `src/config_man/utils/mock_rclone.py`
- **功能**: 模拟rclone的cat和rcat命令支持测试环境
### 4. 配置变更示例
#### 4.1 修改前
```json
{
"Ver": "0.29.1abc123",
"EventApiURL": "https://n3backend.azurewebsites.net/",
"PlayFabTitle": "B066F"
}
```
#### 4.2 修改后
```json
{
"Ver": "0.29.1abc123",
"Ver_New": "0.30.1def456",
"EventApiURL": "https://n3backend.azurewebsites.net/",
"PlayFabTitle": "B066F"
}
```
### 5. 配置对比显示
执行建议更新后,系统会显示详细的配置对比表格,包括:
- **配置项**: 所有配置键的名称
- **更新前**: 原始配置的值
- **更新后**: 更新后配置的值
- **状态**: 显示配置项的状态(🆕 新增、🔄 修改、✅ 不变)
同时显示统计信息:
- 总配置项数量
- 新增项数量
- 修改项数量
- 不变项数量
**对比表格示例**:
```
📊 配置对比 - Android 平台 (版本 0.29)
┏━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┓
┃ 配置项 ┃ 更新前 ┃ 更新后 ┃ 状态 ┃
┡━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━┩
│ Ver │ 0.29.1abc123 │ 0.29.1abc123 │ ✅ 不变 │
│ Ver_New │ N/A │ 0.30.1def456 │ 🆕 新增 │
│ EventApiURL │ https://n3backend.azur... │ https://n3backend.azur... │ ✅ 不变 │
└──────────────────────┴────────────────────────────────┴────────────────────────────────┴────────────┘
📈 统计信息:
总配置项: 12
新增项: 1
修改项: 0
不变项: 11
```
## 技术实现细节
### 1. 加密处理
- 使用DES加密算法
- 自动加密配置内容
- 支持加密/解密操作
### 2. 存储同步
- 使用rclone进行对象存储操作
- 支持模拟环境测试
- 自动处理文件路径转换
### 3. CDN集成
- 支持Cloudflare CDN缓存刷新
- 通过Cloudflare API自动刷新缓存
- 支持URL列表、标签和全量刷新
- 完善的错误处理和重试机制
- 详细的配置指南和故障排除
### 4. 错误处理
- 参数验证
- 网络错误处理
- 文件操作错误处理
- 用户友好的错误信息
## 使用方式
### 1. 基本用法
```bash
config-man suggest-update --platform android --target-version 0.29 --update-version 0.30
```
### 2. 指定配置
```bash
config-man suggest-update --platform ios --target-version 0.29 --update-version 0.30 --storage-path custom/path --cdn-url https://custom.cdn.com
```
### 3. 测试模式
```bash
config-man suggest-update --platform android --target-version 0.29 --update-version 0.30 --mock
```
## 验证结果
### 1. 功能测试
- ✅ Android平台建议更新成功
- ✅ iOS平台建议更新成功
- ✅ 错误处理正常
- ✅ CLI命令正常
### 2. 配置验证
- ✅ Ver_New属性正确添加
- ✅ Ver_New值来自更新版本
- ✅ 配置文件正确加密
- ✅ 文件成功上传到对象存储
### 3. 对比功能验证
- ✅ 配置对比表格正常显示
- ✅ 统计信息准确计算
- ✅ 状态标识正确显示
- ✅ 长值自动截断显示
### 4. 集成测试
- ✅ 与现有view命令兼容
- ✅ 与配置管理系统集成
- ✅ 与模拟环境兼容
## 后续改进建议
### 1. 功能增强
- 支持批量操作
- 添加操作确认机制
- 支持回滚功能
- 添加操作日志记录
### 2. 性能优化
- 并行处理多个平台
- 缓存机制优化
- 网络请求优化
### 3. 用户体验
- 更详细的进度显示
- 更友好的错误信息
- 支持配置文件模板
## 总结
建议更新功能已完全按照需求文档实现,包括:
1. ✅ 在目标版本配置中添加Ver_New属性
2. ✅ Ver_New的值设为更新版本的Ver属性值
3. ✅ 自动加密并上传到对象存储
4. ✅ 自动刷新Cloudflare CDN缓存
5. ✅ 完整的错误处理和参数验证
6. ✅ 全面的测试覆盖
7. ✅ 详细的文档和使用示例
8. ✅ 配置对比显示功能
9. ✅ Cloudflare CDN集成和配置指南
该功能已准备好投入生产使用。