Skip to content

Latest commit

 

History

History
165 lines (138 loc) · 5.21 KB

File metadata and controls

165 lines (138 loc) · 5.21 KB

Qoder Logout 项目架构

模块化重构说明

经过模块化重构,项目现在采用清晰的分层架构,每个模块负责特定的功能领域。

目录结构

qoder-logout/
├── main.go                    # CLI入口点
├── internal/                  # 内部包
│   ├── config/               # 配置管理
│   │   ├── config.go         # 常量和配置定义
│   │   └── config_test.go    # 配置测试
│   ├── paths/                # 路径管理
│   │   └── paths.go          # 路径相关操作
│   ├── database/             # 数据库操作
│   │   ├── database.go       # SQLite数据库清理和替换
│   │   ├── database_test.go  # 数据库基础测试
│   │   ├── integration_test.go # 数据库集成测试
│   │   └── advanced_test.go  # 高级数据库测试
│   ├── generator/            # 智能数据生成器
│   │   ├── generator.go      # 生成器接口和实现
│   │   ├── generator_test.go # 生成器基础测试
│   │   └── performance_test.go # 性能和并发测试
│   ├── files/                # 文件操作
│   │   ├── files.go          # 文件和缓存清理
│   │   └── files_test.go     # 文件操作测试
│   ├── utils/                # 工具函数
│   │   └── cli.go            # CLI参数解析和帮助
│   └── logout/               # 核心业务逻辑
│       ├── logout.go         # 登出服务编排
│       └── integration_test.go # 系统集成测试
├── go.mod
├── go.sum
└── Makefile

模块说明

1. config 包

  • 职责: 管理所有的常量和配置信息
  • 内容:
    • 文件路径常量
    • 数据处理策略配置(新增)
    • 认证密钥列表(包含机器标识符、历史记录等)
    • 替换键列表(新增)
    • 缓存文件列表
    • 缓存目录列表(新增)
    • 系统配置参数

2. paths 包

  • 职责: 处理所有路径相关的操作
  • 功能:
    • 获取Qoder安装路径
    • 生成各种文件的完整路径
    • 路径验证和检查

3. database 包

  • 职责: 处理SQLite数据库相关操作
  • 功能:
    • 清除状态数据库中的认证信息和机器标识
    • 智能数据替换:支持UUID v4、十六进制字符串等数据的替换(新增)
    • 清除工作空间存储中的所有项目数据库(新增)
    • 备份和删除本地数据库
    • 事务安全:使用SQL事务确保操作的原子性(新增)
    • 预览模式下的数据库操作模拟

4. generator 包(新增)

  • 职责: 智能数据生成和替换操作
  • 功能:
    • UUID v4 生成器: 符合RFC4122标准的UUID v4生成
    • 十六进制生成器: 支持大小写的十六进制字符串生成
    • 随机字节生成器: 作为兜底策略的通用生成器
    • 数据替换器: 协调各种生成器完成数据替换
    • 格式验证: 验证生成数据的格式正确性
    • 加密安全: 使用crypto/rand生成加密级随机数

5. files 包

  • 职责: 处理文件系统操作
  • 功能:
    • 删除缓存文件
    • 清除缓存目录(会话存储、工作缓存、用户历史)(新增)
    • 备份配置文件
    • 检查Qoder运行状态
    • 智能保护MCP配置文件(新增)
    • 文件复制操作

6. utils 包

  • 职责: 提供通用工具函数
  • 功能:
    • CLI参数解析
    • 帮助信息显示
    • 用户交互确认

7. logout 包

  • 职责: 核心业务逻辑编排
  • 功能:
    • 协调各个模块完成完整的登出流程
    • 处理Qoder运行状态检查
    • 统一的服务接口
    • 支持预览模式和实际执行模式
    • 整合所有清理功能:认证、缓存、工作空间、历史、智能替换(更新)

架构优势

1. 单一职责原则

  • 每个包只负责一个特定的功能领域
  • 代码更容易理解和维护

2. 依赖管理清晰

  • 明确的依赖关系
  • 避免循环依赖

3. 可测试性

  • 每个模块可以独立测试
  • 便于单元测试和集成测试

4. 可扩展性

  • 新功能可以在对应模块中添加
  • 不影响其他模块的稳定性

5. 可重用性

  • 各个模块可以在其他项目中复用
  • 工具函数和配置管理可以独立使用

使用示例

// 创建登出服务
logoutService, err := logout.NewService(dryRun)
if err != nil {
    log.Fatal(err)
}

// 检查Qoder运行状态
if !logoutService.HandleRunningQoder() {
    return
}

// 执行登出流程
if err := logoutService.Logout(); err != nil {
    log.Fatal(err)
}

扩展指南

添加新的清理功能

  1. 在相应的模块中添加新方法
  2. logout.Service中调用新方法
  3. 必要时在config包中添加新的配置

添加新的命令行选项

  1. utils.ParseArgs()中添加参数解析
  2. utils.PrintHelp()中添加帮助信息
  3. 在主流程中处理新参数

添加新的文件路径

  1. config包中添加路径常量
  2. paths.Manager中添加获取方法
  3. 在相应的业务模块中使用

这种模块化的架构使得代码更加清晰、可维护,并且便于团队协作开发。