- 新增 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 (更新)
6.6 KiB
6.6 KiB
建议更新功能实现总结
功能概述
根据需求文档,已成功实现功能2:建议更新。该功能允许在目标版本的配置文件中添加 Ver_New 属性,提示用户有新版本可用。
实现内容
1. 核心功能实现
1.1 命令处理器
- 文件:
src/config_man/core/suggest_update_command.py - 类:
SuggestUpdateCommand - 功能: 处理建议更新命令的核心逻辑
1.2 主要功能流程
- 参数验证: 验证平台类型、版本号格式、版本号不能相同
- 获取更新版本Ver值: 从更新版本配置中提取Ver属性值
- 获取目标版本配置: 从目标版本获取当前配置(保存原始配置用于对比)
- 创建更新配置: 复制原始配置并添加Ver_New属性
- 加密并上传: 将更新后的配置加密并上传到对象存储
- 刷新CDN缓存: 刷新CDN缓存以确保内容同步
- 显示结果和对比: 显示操作成功信息和配置对比表格
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 修改前
{
"Ver": "0.29.1abc123",
"EventApiURL": "https://n3backend.azurewebsites.net/",
"PlayFabTitle": "B066F"
}
4.2 修改后
{
"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. 基本用法
config-man suggest-update --platform android --target-version 0.29 --update-version 0.30
2. 指定配置
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. 测试模式
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. 用户体验
- 更详细的进度显示
- 更友好的错误信息
- 支持配置文件模板
总结
建议更新功能已完全按照需求文档实现,包括:
- ✅ 在目标版本配置中添加Ver_New属性
- ✅ Ver_New的值设为更新版本的Ver属性值
- ✅ 自动加密并上传到对象存储
- ✅ 自动刷新Cloudflare CDN缓存
- ✅ 完整的错误处理和参数验证
- ✅ 全面的测试覆盖
- ✅ 详细的文档和使用示例
- ✅ 配置对比显示功能
- ✅ Cloudflare CDN集成和配置指南
该功能已准备好投入生产使用。