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

6.6 KiB
Raw Blame History

建议更新功能实现总结

功能概述

根据需求文档已成功实现功能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 修改前

{
  "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. 用户体验

  • 更详细的进度显示
  • 更友好的错误信息
  • 支持配置文件模板

总结

建议更新功能已完全按照需求文档实现,包括:

  1. 在目标版本配置中添加Ver_New属性
  2. Ver_New的值设为更新版本的Ver属性值
  3. 自动加密并上传到对象存储
  4. 自动刷新Cloudflare CDN缓存
  5. 完整的错误处理和参数验证
  6. 全面的测试覆盖
  7. 详细的文档和使用示例
  8. 配置对比显示功能
  9. Cloudflare CDN集成和配置指南

该功能已准备好投入生产使用。