项目迁移到go-zero实现方案.md 5.9 KB

项目迁移到服务器(go-zero)实现方案

当前项目分析

根据查看的文件,我可以看到这是一个基于Qt的教师端服务器应用程序,主要功能包括:

  1. 学生管理:添加、删除、导入、导出学生信息
  2. 考试管理:发送考题、开始考试、解锁屏幕等
  3. 成绩管理:查看、导出成绩
  4. WebSocket服务:与学生端进行实时通信
  5. 配置管理:系统设置、考试设置等
  6. 数据存储:使用SQLite数据库

    迁移到服务器(go-zero)的方案

    1. 整体架构设计

    +----------------+      +----------------+      +-------------------+
    |                |      |                |      |                   |
    |   学生端应用    +----->|   教师端应用    |<---->| 服务器(go-zero)服务|
    |   (Qt客户端)    |      |   (Qt客户端)    |     |   (后端API)        |
    |                |      |                |      |                   |
    +----------------+      +----------------+      +-------+-----------+
                                                        |
                                                        v
                                               +----------------+
                                               |                |
                                               |   Vue网页端     |
                                               |   (前端界面)    |
                                               |                |
                                               +----------------+
    

2. 服务器(go-zero)服务开发计划

1) API定义 需要实现以下API:

  1. 用户认证API
    • 登录/登出
    • 获取用户信息
  2. 学生管理API
    • 添加/删除/修改学生信息
    • 批量导入/导出学生信息
    • 分页查询学生列表
  3. 考试管理API
    • 添加/删除/修改考试信息
    • 发送考题
    • 开始/结束考试
    • 解锁屏幕
  4. 成绩管理API
    • 记录/查询成绩
    • 导出成绩
  5. 配置管理API
    • 获取/修改系统配置 2) 数据库设计 需要迁移的数据表:
  6. 用户表(User)
  7. 学生表(Student)
  8. 考试表(Exam)
  9. 成绩表(Grade)
  10. 配置表(Config) 2.3 WebSocket服务

实现WebSocket服务,用于:

  - 实时通知学生端开始考试
  - 发送考题
  - 解锁屏幕
  - 监控学生状态

3. 与现有系统的交互方案

3) 教师端与go-zero服务交互

  1. 修改教师端代码,使其通过HTTP API与go-zero服务交互
  2. 保留WebSocket客户端功能,连接到go-zero的WebSocket服务 3.2 学生端与go-zero服务交互
  3. 修改学生端代码,使其通过HTTP API与go-zero服务交互
  4. 保留WebSocket客户端功能,连接到go-zero的WebSocket服务

    4. Vue网页端开发计划

    4) 功能模块

  5. 用户认证

    • 登录/登出界面
  6. 学生管理

    • 学生列表展示
    • 添加/编辑/删除学生
    • Excel导入/导出功能
  7. 考试管理

    • 考试列表
    • 考试配置
    • 考试控制(开始/结束)
  8. 成绩管理

    • 成绩列表
    • 成绩统计
    • 成绩导出
  9. 系统设置

    • 基本配置
    • 考试配置 4.2 技术选型
  10. 前端框架:Vue 3 + TypeScript

  11. UI组件库:Element Plus

  12. 状态管理:Pinia

  13. 路由:Vue Router

  14. HTTP请求:Axios

  15. Excel处理:xlsx.js 4.3 Excel导入导出功能

  16. 导入功能

    • 上传Excel文件
    • 解析Excel数据
    • 数据校验
    • 批量添加到数据库
  17. 导出功能

    • 查询数据
    • 生成Excel文件
  18. 下载文件

    开发周期预估

    1. 准备阶段 (2周)

  19. 需求分析和详细设计 (1周)

  20. 环境搭建和技术选型确认 (1周)

    2. go-zero服务开发 (6周)

  21. API定义和代码生成 (1周)

  22. 数据库设计和迁移 (1周)

  23. 用户认证和权限管理 (1周)

  24. 学生管理和考试管理API (1周)

  25. 成绩管理和配置管理API (1周)

  26. WebSocket服务实现 (1周)

    3. 现有系统适配 (3周)

  27. 教师端适配 (1.5周)

  28. 学生端适配 (1.5周)

    4. Vue网页端开发 (5周)

  29. 用户界面和认证模块 (1周)

  30. 学生管理模块 (1周)

  31. 考试管理模块 (1周)

  32. 成绩管理模块 (1周)

  33. Excel导入导出功能 (1周)

    5. 测试和部署 (4周)

  34. 单元测试和集成测试 (2周)

  35. 系统测试和问题修复 (1周)

  36. 部署和上线 (1周)

$\color{red} {总计开发周期:20周 (约5个月)} $

$\color{green} {项目迁移到go-zero实现方案 - 加急时间表格} $

阶段 任务 原计划时间 加急时间 负责人
准备阶段 需求分析和详细设计 1周 1天 项目经理
环境搭建和技术选型确认 1周 3天 架构师
go-zero服务开发 API定义和代码生成 1周 3天 后端开发
数据库设计和迁移 1周 4天 数据库工程师
用户认证和权限管理 1周 5天 后端开发
学生管理和考试管理API 1周 5天 后端开发
成绩管理和配置管理API 1周 5天 后端开发
WebSocket服务实现 1周 5天 后端开发
现有系统适配 教师端适配 1.5周 7天 客户端开发
学生端适配 1.5周 7天 客户端开发
Vue网页端开发 用户界面和认证模块 1周 5天 前端开发
学生管理模块 1周 5天 前端开发
考试管理模块 1周 5天 前端开发
成绩管理模块 1周 5天 前端开发
Excel导入导出功能 1周 4天 前端开发
测试和部署 单元测试和集成测试 2周 3天 测试工程师
系统测试和问题修复 1周 2天 全体开发
部署和上线 1周 2天 运维工程师
总计 20周(约5个月) 76天(约2.5个月)