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

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

