需求整理

用户端

大体框架设计图:
项目设计 - 图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

管理端

暂时不做


项目架构


数据库设计