Files
ssq-desk/docs/02-技术文档/项目架构设计.md
2026-01-14 14:17:38 +08:00

9.2 KiB
Raw Blame History

项目架构设计

1. 项目概述

ssq-desk 是基于 Wails 框架开发的桌面应用,提供双色球历史数据查询和统计分析功能。


2. 技术架构

2.1 整体架构

┌─────────────────────────────────────┐
│         前端 (Vue 3 + Arco)          │
│  ┌────────────┐  ┌──────────────┐   │
│  │  查询界面   │  │  结果展示    │   │
│  └────────────┘  └──────────────┘   │
└─────────────────────────────────────┘
              ↕ Wails Context
┌─────────────────────────────────────┐
│        后端 (Go + Wails)            │
│  ┌──────────┐  ┌──────────────┐    │
│  │  API层   │→ │  Service层   │    │
│  └──────────┘  └──────────────┘    │
│                       ↓             │
│  ┌──────────────────────────────┐  │
│  │   Storage层 (Repository)     │  │
│  └──────────────────────────────┘  │
└─────────────────────────────────────┘
              ↕
┌─────────────────────────────────────┐
│           数据层                     │
│  ┌──────────┐  ┌──────────────┐    │
│  │  MySQL   │  │  SQLite      │    │
│  │ (远程)   │  │ (本地缓存)    │    │
│  └──────────┘  └──────────────┘    │
└─────────────────────────────────────┘

2.2 模块化架构

┌─────────────────────────────────────┐
│            App (app.go)             │
│         模块管理器统一管理            │
└─────────────────────────────────────┘
              ↕
┌─────────────────────────────────────┐
│        Module Manager               │
│  ┌────────┐  ┌────────┐  ┌──────┐ │
│  │ SSQ    │  │ Auth   │  │Update│ │
│  │ Module │  │ Module │  │Module│ │
│  └────────┘  └────────┘  └──────┘ │
└─────────────────────────────────────┘
              ↕
┌─────────────────────────────────────┐
│         API Layer                   │
│  ┌────────┐  ┌────────┐            │
│  │SSQ API │  │Auth API│            │
│  └────────┘  └────────┘            │
└─────────────────────────────────────┘

2.3 目录结构

ssq-desk/
├─ app.go                    # Wails 应用结构,模块管理器
├─ main.go                   # 应用入口
├─ internal/                 # 内部包
│  ├─ module/                # 模块层(新增)
│  │  ├─ module.go           # 模块接口定义
│  │  ├─ manager.go          # 模块管理器
│  │  ├─ ssq_module.go        # SSQ 查询模块
│  │  ├─ auth_module.go      # 授权码模块
│  │  └─ update_module.go    # 版本更新模块
│  ├─ api/                   # API 层Wails 绑定接口)
│  │  ├─ ssq_api.go          # 双色球查询 API
│  │  └─ auth_api.go         # 授权码 API
│  ├─ service/               # 业务逻辑层
│  │  ├─ query_service.go    # 查询服务
│  │  └─ auth_service.go     # 授权服务
│  ├─ storage/               # 存储层
│  │  ├─ models/             # 数据模型
│  │  │  ├─ ssq_history.go   # 历史数据模型
│  │  │  └─ authorization.go # 授权模型
│  │  └─ repository/         # 数据访问层
│  │     ├─ mysql_repo.go    # MySQL 仓库
│  │     ├─ sqlite_repo.go   # SQLite 仓库
│  │     └─ auth_repository.go # 授权仓库
│  └─ database/              # 数据库连接
│     ├─ mysql.go            # MySQL 连接
│     └─ sqlite.go           # SQLite 连接
├─ web/                      # 前端目录
│  ├─ src/
│  │  ├─ views/              # 页面组件
│  │  │  └─ query/           # 查询页面
│  │  ├─ components/         # 公共组件
│  │  └─ wailsjs/            # Wails 生成的文件
│  └─ package.json
└─ wails.json                # Wails 配置

3. 数据流设计

3.1 查询流程

用户输入查询条件
    ↓
前端调用 Wails 绑定方法
    ↓
API 层接收参数
    ↓
Service 层处理业务逻辑
    ↓
Repository 层查询数据
    ├─ 优先查询 SQLite本地缓存
    └─ 如需更新,查询 MySQL远程
    ↓
返回结果给前端
    ↓
前端展示结果(分类统计 + 详细列表)

3.2 数据同步流程

应用启动/手动触发
    ↓
检查远程数据更新
    ↓
增量同步(基于 issue_number
    ↓
写入 SQLite 本地缓存
    ↓
更新同步状态和日志

4. 核心功能模块

4.1 模块化设计

采用模块化架构,各功能模块相互独立、松散耦合:

  • 模块接口:统一的 Module 接口
  • 模块管理器:统一管理模块的注册、初始化、启动、停止
  • 模块独立性:各模块可独立开发、测试、部署

详细设计参见:模块化架构设计

4.2 SSQ 查询模块

  • 模块名称ssq
  • 功能:根据红球、蓝球条件查询历史数据
  • 输入6个红球 + 1个蓝球 + 蓝球筛选范围
  • 输出:分类统计 + 详细记录列表
  • 特性:支持部分匹配、颜色标识匹配结果

4.3 授权码模块

  • 模块名称auth
  • 功能:设备授权码验证、激活状态管理
  • 存储SQLite 本地数据库
  • 启动行为:应用启动时自动检查授权状态

4.4 版本更新模块

  • 模块名称update
  • 功能:版本更新检查、下载、安装
  • 状态:待实现

4.5 数据同步模块(待模块化)

  • 功能MySQL 与 SQLite 数据同步
  • 策略:增量同步、全量同步、手动刷新
  • 错误处理:网络异常、数据冲突处理

5. 性能优化策略

5.1 数据查询

  • 本地优先:优先使用 SQLite 本地缓存
  • 分页加载:查询结果分页显示
  • 索引优化:为常用查询字段建立索引

5.2 数据同步

  • 异步同步:后台异步同步,不阻塞主流程
  • 增量更新:仅同步增量数据,减少网络传输
  • 智能调度:根据数据更新频率调整同步策略

5.3 前端优化

  • 虚拟滚动:大量数据使用虚拟滚动
  • 懒加载:按需加载详细数据
  • 缓存策略:合理使用 LocalStorage 缓存

6. 安全设计

6.1 数据安全

  • 连接加密MySQL 连接使用 TLS/SSL
  • 密码管理:数据库密码加密存储
  • 本地数据:敏感数据本地加密存储

6.2 授权验证

  • 设备绑定:授权码与设备绑定
  • 激活验证:启动时验证激活状态
  • 离线模式:授权失效时限制功能

7. 错误处理

7.1 网络错误

  • 连接失败:自动切换到离线模式
  • 超时处理:设置合理的超时时间
  • 重试机制:自动重试失败的请求

7.2 数据错误

  • 数据校验:入库前校验数据完整性
  • 异常处理:捕获并记录异常日志
  • 用户提示:友好的错误提示信息

8. 扩展性设计

8.1 功能扩展

  • 模块化设计:功能模块独立,易于扩展(已实现)
    • 新增功能只需实现 Module 接口并注册
    • 模块之间不直接依赖,通过管理器解耦
    • 支持模块的独立开发、测试、部署
  • 接口抽象:定义清晰的接口,便于替换实现
  • 配置驱动:支持配置文件扩展功能

8.2 数据扩展

  • 多数据源:支持多种数据源接入
  • 数据格式:支持多种数据格式导入
  • 统计分析:预留统计分析扩展接口

文档维护者JueChen
创建时间2026-01-07