feat(个人主页): 主页改成名片 + 两栏,做对的题按天带题名;设置并进主页,点头像换头像、点笔改签名

- 名片:头像、班级、签名、做对几道 / 本班第几 / 成就,底下一排四个时间(第一次提交、最近一次提交、距上次提交、学习天数)
- 做对的题按日期或按知识点,能搜;最上面一行是交过还没做对的
- 知识点本人和老师看得到;同学看多一张「你和他」
- 老师看学生:看他的智能分析 / 看他的提交 /「⋯」不计入排名、清空签名
- 换头像弹框:拖圆圈选一块,看领奖台和排名里多大,可退回名字的字
- 去掉「我的设置」页和下拉菜单里那一项;手机三个页签

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
xuyueandClaude Opus 5.5 committed 2026-10-13 00:03:37 +08:00
1 parent cbf5b9d922
commit e368ed3eca
10 files changed
+1983 -370

No files matched your search

+9 -3
View File
@@ -9,7 +9,7 @@ import {
type ContestClassView,
type ContestScoreboard,
type FormatCodeResponse,
type Metrics,
type ProfileOverview,
type TutorialSummary,
type Tutorial,
type ClassActivity,
@@ -395,8 +395,14 @@ export function setReaction(problemID: number, type: ReactionKey) {
return api.post<ReactionState>(`problems/${problemID}/reaction`, { type })
}
export function getMetrics(userid: number) {
return api.get<Metrics>(`users/${userid}/metrics`)
/** 个人主页那一页的数据:做对的题、四个时间、本班第几、成就,本人和老师多拿知识点和没做对的题 */
export function getProfileOverview(username: string) {
return api.get<ProfileOverview>(`profiles/${encodeURIComponent(username)}/overview`)
}
/** 不用图片了,退回默认头像(名字的字) */
export function resetAvatar() {
return api.delete<{ avatar: string }>("me/avatar")
}
export function getTutorial(id: number) {