Files
atlas/PROMPT.md
T

69 lines
3.7 KiB
Markdown

我正在编写一个名为Ballance Atlas的项目,根据后文中的需求,给出给定问题的解决方案。
# 概述
# 问题
- Agent 1:使用RESTful设计前端和后端用于通信的接口。你不需要知道前端和后端由何种语言编写,你不被允许编写任何代码,你只能设计接口。
- Agent 2:假定后端使用PostgreSQL作为数据库,请设计数据库的结构(DDL),并给出可能会用到的查询语句(DML)。在设计时需要考虑如下因素:
* 如果有能通过PostgreSQL的SQL语句完成,且不会造成大量延迟的功能,例如验证字段存在,确保两个table之间字段的相互引用正确等。可以直接通过编写SQL语句完成,不要将其交付给后端手动完成。
# 需求
## 账号系统
- 一个标准的账号需要有以下组成部分:
* UID:一个仅由ASCII数字,字母,下划线和dash组成的唯一标识符,用于锚定用户。注册时一旦确认,不可修改。
* nickname:用户自定义的名称,不可重复,但用户可修改。
* 密码:密码是必需的,且允许用户更换。
* 邮箱:用户接收Atlas发送的邮件,例如重置密码邮件的邮箱。
- 账户登录时,请遵循标准的账户登录保护原则,例如加盐等。
- 支持OAuth2协议,允许用户使用本系统的账号系统登录其他网站。
- 用户忘记密码时,遵循常见的忘记密码更换方法(使用IMAP等协议向用户发送邮件)。
- 允许封禁用户,被封禁的用户无权登录和进行任何操作。
- 每一个账号可具有一个或多个权限组,权限组未来是可扩展的(指可以从代码层面轻易扩展,而不是允许用户自行添加新权限)。目前有以下权限组:
* 根:对系统所有方面拥有完全操作权限(相当于组合其他所有权限)。
* 管理员:可以对用户进行任何操作,例如重置昵称,重置密码,强制设定邮箱,设定用户组等。
* 记录榜维护员:负责审查记录榜,可以强制删除有问题的记录,也可以录入从外部导入的记录。
* 地图维护员:可以无限制地上传地图。负责设定地图的上架状态,强制设置地图属性等操作。
* 比赛举办者:允许创建比赛,登记比赛记录。
* bmmo服主:允许bmmo以该人身份登录系统,并更新mp状态。
## 地图系统
- 一张地图应当包含以下数据:
* 地图名称:以原始语言显示的地图名称
* 地图英语名称:该地图名称的英语翻译
* 一张雷达图,包含难度,有趣度,可重复游玩性,美观度等。雷达图的维度在未来应当可在代码中轻易扩展。雷达图的数据来源于用户投票。每个用户只能投票一次,投票完成后可以修改自己的投票内容。
* 红黑榜:用户可以给当前地图投票红黑票。红票表示支持,黑票表示不支持。用户只能投一票,投票后可修改。最终结果以类似steam的好评如潮,差评如潮等结果展示在界面上。
* 一个状态,用于表示当前地图的状态。类似于osu的地图的机制。参加:https://osu.ppy.sh/wiki/zh/Beatmap/Category
- 所有玩家天生就可以上传地图。
- 上传地图的速率限制在每天一张。对于地图的版本更新限制在一小时一次。
- 地图大小不得超过32MB(未来该数字可通过修改代码轻易修改)
## 排行榜系统
- 所有ranked的地图都有排行榜
- 排行榜要有sr时间和hs分数(非零整数)
-
## 比赛系统
- 每场比赛结束后,按照上传的排名数据,使用elu算法,重新计算人员的名次。