Files
config-man/docs/suggest_update_implementation.md
tech f534dc52cb 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 (更新)
2025-08-08 01:50:30 +08:00

217 lines
6.6 KiB
Markdown
Raw Permalink 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.
# 建议更新功能实现总结
## 功能概述
根据需求文档已成功实现功能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集成和配置指南
该功能已准备好投入生产使用。