diff --git a/apps/web/src/oj/ai/components/StreakStats.vue b/apps/web/src/oj/ai/components/StreakStats.vue
deleted file mode 100644
index 518f8b6..0000000
--- a/apps/web/src/oj/ai/components/StreakStats.vue
+++ /dev/null
@@ -1,166 +0,0 @@
-
-
-
- 激励持续学习
-
-
-
-
-
-
- 天
-
- 🔥
-
-
-
-
-
-
-
- 天
-
- ⭐
-
-
-
-
-
-
-
- 天
-
-
-
-
-
-
- 天
-
-
-
-
-
-
-
- 开始做题,建立学习连续记录!
- 继续保持,争取连续3天!
-
- 很棒!继续保持一周连续记录!
-
-
- 太棒了!坚持满30天将获得「持之以恒」成就!
-
-
- 🎉 恭喜你!你已经连续学习 {{ currentStreak }} 天,真的非常厉害!
-
-
-
-
-
-
-
-
diff --git a/apps/web/src/shared/components/IconButton.vue b/apps/web/src/shared/components/IconButton.vue
deleted file mode 100644
index 8fbe0b1..0000000
--- a/apps/web/src/shared/components/IconButton.vue
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-
-
-
-
-
-
-
- {{ tip }}
-
-
-
diff --git a/apps/web/src/utils/permissions.ts b/apps/web/src/utils/permissions.ts
deleted file mode 100644
index 34921e6..0000000
--- a/apps/web/src/utils/permissions.ts
+++ /dev/null
@@ -1,108 +0,0 @@
-import { useUserStore } from "shared/store/user"
-
-export function usePermissions() {
- const userStore = useUserStore()
-
- return {
- isAuthenticated: computed(() => userStore.isAuthed),
- isAdminRole: computed(() => userStore.isAdminRole),
- isTeacherOrAbove: computed(() => userStore.isTeacherOrAbove),
- isSuperAdmin: computed(() => userStore.isSuperAdmin),
- hasProblemPermission: computed(() => userStore.hasProblemPermission),
-
- canManageUsers: computed(() => userStore.isSuperAdmin),
- canManageAnnouncements: computed(() => userStore.isSuperAdmin),
- canManageTutorials: computed(() => userStore.isSuperAdmin),
- canManageSystemConfig: computed(() => userStore.isSuperAdmin),
- canSendMessages: computed(() => userStore.isSuperAdmin),
-
- canManageProblems: computed(() => userStore.hasProblemPermission),
- canManageContests: computed(() => userStore.isTeacherOrAbove),
- canManageProblemsets: computed(() => userStore.isTeacherOrAbove),
- canViewClassroomData: computed(() => userStore.isTeacherOrAbove),
-
- canManageAllProblems: computed(
- () =>
- userStore.user?.problemPermission === "All" || userStore.isSuperAdmin,
- ),
- canManageOwnProblems: computed(
- () =>
- userStore.user?.problemPermission === "Own" && !userStore.isSuperAdmin,
- ),
-
- getUserPermissionLevel: computed(() => {
- if (userStore.isSuperAdmin) return "超级管理员"
- if (userStore.isTeacherAdmin) return "教师管理员"
- if (userStore.isStudentAdmin) return "学生管理员"
- return "普通用户"
- }),
-
- getProblemPermissionLevel: computed(() => {
- if (!userStore.user) return "无权限"
- switch (userStore.user.problemPermission) {
- case "All":
- return "管理所有题目"
- case "Own":
- return "管理自己的题目"
- case "None":
- return "无题目权限"
- default:
- return "无权限"
- }
- }),
- }
-}
-
-export function checkRoutePermission(routeName: string): boolean {
- const userStore = useUserStore()
-
- const superAdminRoutes = [
- "admin home",
- "admin config",
- "admin user list",
- "admin user generate",
- "admin announcement list",
- "admin announcement create",
- "admin announcement edit",
- "admin message list",
- "admin tutorial list",
- "admin tutorial create",
- "admin tutorial edit",
- ]
-
- const teacherAdminRoutes = [
- "admin contest list",
- "admin contest create",
- "admin contest edit",
- "admin contest problem list",
- "admin contest problem create",
- "admin contest problem edit",
- "admin contest helper",
- "admin problemset list",
- "admin problemset create",
- "admin problemset edit",
- "admin problemset detail",
- "admin stuck problems",
- "admin top ac trend",
- ]
-
- const problemPermissionRoutes = [
- "admin problem list",
- "admin problem create",
- "admin problem edit",
- ]
-
- if (superAdminRoutes.includes(routeName)) {
- return userStore.isSuperAdmin
- }
-
- if (teacherAdminRoutes.includes(routeName)) {
- return userStore.isTeacherOrAbove
- }
-
- if (problemPermissionRoutes.includes(routeName)) {
- return userStore.hasProblemPermission
- }
-
- return true
-}