需求整理
用户端
用户模块
- 登录:可以通过邮箱或者已注册账户进行登录,可以保存登录记录最多30天,可以自动登录
- 注册:需要邮箱/验证码校验
- 个人资料:
- 上传个人信息:头像、用户名、简介等
- 修改密码
- 找回密码:需要先通过邮箱验证
- 修改绑定邮箱
- 收藏题目列表
- 历史做题列表
- 已发布讨论
- 做题统计:用户可以查看自己近期的做题记录数量以及热力图,类似:
登录注册设计图设计图如下:
个人中心大致设计图如下:
数据库设计:
排行模块
- 周榜:统计一周做题通过数量前10
- 月榜:统计一个月内做题通过数量前10
- 总榜:统计总计做题通过数量前10
- 详细榜单:统计所有用户的
通过数
、总数
、通过率
等数据,并且可以在表单中排序显示
详细需求:
- 所有的榜单前三均有特殊显示,用户名后会加上勋章显示
- 点击榜单上的用户可以进入到个人用户界面
其中周榜,月榜,总榜在首页显示,详细榜单单独通过页面显示。
大致设计图(顺带设计首页图)如下:
做题模块
- 普通做题:类似力扣的正常刷题,包含AI智能分析模块
- 单项训练:根据题目类别进行单向训练,不包含AI智能分析
目前暂时值考虑算法题,后续也可能加入SQL题目
详细需求:
- 可以在题库中选择对应的题目
- 题目需要包含以下信息
- 题目名称:一般不超过20个字
- 题目难度:
低
、中
、高
- 题目标签:一般涉及题目要考的算法类型或者技巧
- 题目详细内容:包括部分输入用例以及对应的输出用例
- 通过率:只统计本站在这道题上的通过率,计算为总通过数/总提交数
- 用户可以查看该题目是否已通过
- 用户可以收藏/取消收藏本题目(收藏的题目可以在个人中心看到)
- 普通做题包含了AI辅助解析题目(接入Dify的API)
- 用户在左侧可以提交题目的代码,代码部分会包含基础的代码模板
- 代码部分包含:
- 代码语言自由选择:JAVA/C/CPP/GO/Python
- 基础代码模板
- 可以重置代码模板
- 可提供手动
**测试用例**
进行测试(初始状态下也会提供部分**测试用例**
) - 可以运行的
**测试用例**
代码,运行的代码不计入总提交数 - 用户提交代码之后会异步调用代码
讨论模块
- 题解讨论:用户可以在此处根据题目进行讨论(此处的讨论会附加上题目链接)
- 普通讨论:类似于博客发帖,用户可以自由讨论话题
详细需求:
- 用户可以自行编辑讨论内容,使用Markdown编辑器进行编辑,左侧为编辑区,右侧为预览(v-md-editor)
- 讨论帖子的内容包括
- 标题(不超过20个字)
- 讨论内容(Markdown语法表示)
- 引用链接(题解讨论专属)
- 讨论标签(可以不选择)
- 用户可以选择发布讨论的标签(标签由站点管理员发布)
- 用户可以在讨论区搜索相关讨论,可以通过关键词、作者以及标签进行搜索
- 用户可以根据时间、点赞数、收藏数进行排序
- 管理员可以对某些讨论进行置顶操作
- 用户在某一个讨论下进行以下操作
- 点赞该讨论
- 收藏该讨论
- 评论该讨论
- 评论该讨论下的评论(子评论)
- 分享该讨论(复制讨论链接)
后续可优化需求:
- 使用ES对讨论进行全文搜索
- 帖子使用推荐算法针对用户近期做题记录进行推荐
- 讨论旁边附加推荐讨论的列表
消息模块
暂时不做
核心业务流程
管理端
暂时不做