From e8a20d12f93adf4cbfe7a58fda2530762d61fe27 Mon Sep 17 00:00:00 2001 From: yuetsh <517252939@qq.com> Date: Fri, 16 Oct 2026 15:11:21 +0800 Subject: [PATCH] =?UTF-8?q?refactor(=E5=89=8D=E7=AB=AF):=20shared=20/=20ut?= =?UTF-8?q?ils=20=E4=B8=8D=E5=86=8D=20import=20oj=20=E5=92=8C=20admin=20?= =?UTF-8?q?=E4=B8=8B=E7=9A=84=E4=BB=BB=E4=BD=95=E4=B8=9C=E8=A5=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 依赖方向原来是反的:顶栏、登录框、举手列表这些 shared 组件从 oj/ 里拿东西。 - 跨端的接口挪进 shared/api.ts(按 apps/web/CLAUDE.md 的分法):学生端题目列表、 出题人列表、这节课的题、待弹的成就 - 这节课的 store → shared/store/lesson.ts;头像 RankAvatar → shared/components - 纯函数挪进 utils/:举手列表的错法归类 errorKind、它依赖的答案错误分类 wrongAnswer 和 Python 报错翻译 pythonError、题目列表行的 toProblemRow - 只有后台在用的出题人下拉 AuthorSelect 挪回 admin/components 纯搬家。首页、题目列表、题目页、排名、课堂看板、后台题目列表打开无报错, 顶栏题号框敲 1001 回车直达题目页。 Co-Authored-By: Claude Opus 5.5 --- .../components/AuthorSelect.vue | 2 +- apps/web/src/admin/problem/list.vue | 2 +- apps/web/src/oj/achievement/api.ts | 11 +---- apps/web/src/oj/api.ts | 31 +------------ apps/web/src/oj/classroom/board.vue | 2 +- apps/web/src/oj/home/dashboard.vue | 2 +- .../src/oj/learn/components/CodeRunBlock.vue | 2 +- .../components/CompileErrorExplain.vue | 2 +- .../src/oj/problem/components/ContextBar.vue | 2 +- .../src/oj/problem/components/LessonNext.vue | 2 +- .../oj/problem/components/ProblemEditor.vue | 2 +- .../problem/components/SubmissionEffects.vue | 2 +- .../problem/components/SubmissionResult.vue | 2 +- .../problem/components/WrongAnswerExplain.vue | 7 +-- apps/web/src/oj/problem/list.vue | 3 +- apps/web/src/oj/problem/utils/cError.ts | 2 +- .../oj/problem/utils/chinesePunctuation.ts | 2 +- .../src/oj/rank/components/ChampionList.vue | 2 +- .../oj/rank/components/ClassDetailDrawer.vue | 2 +- apps/web/src/oj/rank/components/RankMe.vue | 2 +- .../web/src/oj/rank/components/RankPodium.vue | 2 +- apps/web/src/oj/rank/components/RankTrack.vue | 2 +- apps/web/src/oj/rank/components/WeekTop.vue | 2 +- .../src/oj/submission/composables/explain.ts | 2 +- .../oj/user/components/AvatarCropModal.vue | 2 +- .../src/oj/user/components/ProfileCard.vue | 2 +- apps/web/src/shared/api.ts | 44 ++++++++++++++++++- .../src/shared/components/HelpRequestList.vue | 2 +- apps/web/src/shared/components/Login.vue | 2 +- .../src/shared/components/ProblemJumpBox.vue | 2 +- .../rank => shared}/components/RankAvatar.vue | 0 .../web/src/shared/composables/problemJump.ts | 2 +- apps/web/src/shared/store/achievement.ts | 2 +- apps/web/src/{oj => shared}/store/lesson.ts | 2 +- .../src/{oj/classroom => utils}/errorKind.ts | 2 +- .../src/{oj/problem => }/utils/pythonError.ts | 0 apps/web/src/{oj => utils}/transforms.ts | 0 .../src/{oj/problem => }/utils/wrongAnswer.ts | 2 +- 38 files changed, 78 insertions(+), 78 deletions(-) rename apps/web/src/{shared => admin}/components/AuthorSelect.vue (94%) rename apps/web/src/{oj/rank => shared}/components/RankAvatar.vue (100%) rename apps/web/src/{oj => shared}/store/lesson.ts (98%) rename apps/web/src/{oj/classroom => utils}/errorKind.ts (98%) rename apps/web/src/{oj/problem => }/utils/pythonError.ts (100%) rename apps/web/src/{oj => utils}/transforms.ts (100%) rename apps/web/src/{oj/problem => }/utils/wrongAnswer.ts (99%) diff --git a/apps/web/src/shared/components/AuthorSelect.vue b/apps/web/src/admin/components/AuthorSelect.vue similarity index 94% rename from apps/web/src/shared/components/AuthorSelect.vue rename to apps/web/src/admin/components/AuthorSelect.vue index ff6df95..dc01fc1 100644 --- a/apps/web/src/shared/components/AuthorSelect.vue +++ b/apps/web/src/admin/components/AuthorSelect.vue @@ -9,7 +9,7 @@