新列表接口
新题目列表接口
查询当前登录用户可见题目(隐私状态public和visible均为true 或 题目的ownerId等于当前用户ID)
query CodingExerciseSearch {
codingExerciseSearch {
nodes {
viewerStatus {
passedCount
totalCount
highestScoreRate
}
id
title
statuses {
passedCount
totalCount
}
difficulty
knowledgeTags {
nodes {
id
name
}
}
}
}
}
- 状态:通过
viewerStatus
的内容进行处理,highestScoreRate
范围是[0,1]
,可转化为0-100
之间的整数;passedCount
和totalCount
为用户通过次数和尝试次数。建议尝试次数为0时无特殊标记,否则若通过次数大于0可标记为“√”,否则标记为百分制最高得分。 - 题目:
title
为题目名,id
为题目ID。 - 通过率:通过
statuses
的内容进行处理,passedCount
和totalCount
为所有用户在本题上的通过次数和尝试次数。 - 难度:
difficulty
,为枚举类型,包括'NOVICE'(入门),EASY
(简单),MODERATE
(中等),HARD
(困难)和EXPERT
(专家)五类,以及空值(此时可显示“未知”)。显示时可用不同颜色(蓝、绿、橙、红、紫、灰)等。 - 知识点:
knowledgeTags
中的name
为知识点标签名,id
为标签ID
此接口可配合可选参数title
,knowledgeTagId
使用:
query CodingExerciseSearch($title: String, $knowledgeTagIds: [String!]) {
codingExerciseSearch(title: $title, knowledgeTagIds: $knowledgeTagIds) {
...
}
}
-
title
的返回逻辑为:选择包含title
字符串的题目; -
knowledgeTagIds
的返回逻辑为:选择存在一个knowledgeTagId包含于knowledgeTagIds
之中的题目。
新题包列表接口
查询当前登录用户可见题包
query ChatDialog {
exercisePackSearch {
nodes {
id
name
packType
exercises {
totalCount
nodes {
...
}
}
start
due
durationLimit
}
}
}
-
packtype
为题包类型,包含EXERCISE(练习)、EXAM(考试)、CONTEST(比赛)三种枚举值 -
start
,due
和durationLimit
分别表示开始、结束、持续时长,其值是否为空可作为判定定时/限时/普通题包的依据 -
exercises
中node
里内容与上面的题目查询接口中node
里内容一致
建议对当前设计做一些修改,取消显示“主要知识点”,增加显示“题包类型”、“状态”(进行中、未开始、已结束之类的)。
题包部分不宜在列表处显示做题者状态,因为“题包类型”将决定用户的题包完成状态是否可见。