需求整理

用户端

大体框架设计图:
项目设计 - 图1

用户模块

  • 登录:可以通过邮箱或者已注册账户进行登录,可以保存登录记录最多30天,可以自动登录
  • 注册:需要邮箱/验证码校验
  • 个人资料
    • 上传个人信息:头像、用户名、简介等
    • 修改密码
    • 找回密码:需要先通过邮箱验证
    • 修改绑定邮箱
    • 收藏题目列表
    • 历史做题列表
    • 已发布讨论
  • 做题统计:用户可以查看自己近期的做题记录数量以及热力图,类似:

image.png
登录注册设计图设计图如下:
个人中心大致设计图如下:
项目设计 - 图3
数据库设计:

排行模块

  • 周榜:统计一周做题通过数量前10
  • 月榜:统计一个月内做题通过数量前10
  • 总榜:统计总计做题通过数量前10
  • 详细榜单:统计所有用户的通过数总数通过率等数据,并且可以在表单中排序显示

详细需求:

  1. 所有的榜单前三均有特殊显示,用户名后会加上勋章显示
  2. 点击榜单上的用户可以进入到个人用户界面

    其中周榜,月榜,总榜在首页显示,详细榜单单独通过页面显示。

大致设计图(顺带设计首页图)如下:
项目设计 - 图4

做题模块

  • 普通做题:类似力扣的正常刷题,包含AI智能分析模块
  • 单项训练:根据题目类别进行单向训练,不包含AI智能分析

    目前暂时值考虑算法题,后续也可能加入SQL题目

详细需求:

  1. 可以在题库中选择对应的题目
  2. 题目需要包含以下信息
    1. 题目名称:一般不超过20个字
    2. 题目难度:
    3. 题目标签:一般涉及题目要考的算法类型或者技巧
    4. 题目详细内容:包括部分输入用例以及对应的输出用例
    5. 通过率:只统计本站在这道题上的通过率,计算为总通过数/总提交数
  3. 用户可以查看该题目是否已通过
  4. 用户可以收藏/取消收藏本题目(收藏的题目可以在个人中心看到)
  5. 普通做题包含了AI辅助解析题目(接入Dify的API)
  6. 用户在左侧可以提交题目的代码,代码部分会包含基础的代码模板
  7. 代码部分包含:
    1. 代码语言自由选择:JAVA/C/CPP/GO/Python
    2. 基础代码模板
    3. 可以重置代码模板
    4. 可提供手动**测试用例**进行测试(初始状态下也会提供部分**测试用例**
    5. 可以运行的**测试用例**代码,运行的代码不计入总提交数
    6. 用户提交代码之后会异步调用代码

大致设计稿如下:
项目设计 - 图5
题库设计稿如下:
项目设计 - 图6

讨论模块

  • 题解讨论:用户可以在此处根据题目进行讨论(此处的讨论会附加上题目链接)
  • 普通讨论:类似于博客发帖,用户可以自由讨论话题

详细需求:

  1. 用户可以自行编辑讨论内容,使用Markdown编辑器进行编辑,左侧为编辑区,右侧为预览(v-md-editor
  2. 讨论帖子的内容包括
    1. 标题(不超过20个字)
    2. 讨论内容(Markdown语法表示)
    3. 引用链接(题解讨论专属)
    4. 讨论标签(可以不选择)
  3. 用户可以选择发布讨论的标签(标签由站点管理员发布)
  4. 用户可以在讨论区搜索相关讨论,可以通过关键词、作者以及标签进行搜索
  5. 用户可以根据时间点赞数收藏数进行排序
  6. 管理员可以对某些讨论进行置顶操作
  7. 用户在某一个讨论下进行以下操作
    1. 点赞该讨论
    2. 收藏该讨论
    3. 评论该讨论
    4. 评论该讨论下的评论(子评论)
    5. 分享该讨论(复制讨论链接)

后续可优化需求:

  1. 使用ES对讨论进行全文搜索
  2. 帖子使用推荐算法针对用户近期做题记录进行推荐
  3. 讨论旁边附加推荐讨论的列表

项目设计 - 图7

消息模块

暂时不做

核心业务流程

image.png

管理端

暂时不做


项目架构


数据库设计