feat: add four new student modules (rotation, skill-video, exam-prep, academic) with backend APIs and frontend pages; add exam-prep question history with DB persistence

This commit is contained in:
freedakgmail
2026-06-04 11:50:25 +08:00
commit 995f4ecfbd
399 changed files with 73529 additions and 0 deletions
+52
View File
@@ -0,0 +1,52 @@
# 医科高校 AI 学习中心 · 前端(三端)
基于 Next.js 14App Router+ TypeScript + Tailwind CSS 的三端前端,与 NestJS 后端真实联调。
## 三端
- 学生端 `/student`:学习空间、能力画像、职业规划、课程对练、临床对话对练、研究资料查询、AI 协同训练
- 导师端 `/mentor`:题目审核、成果点评、带教学生画像
- 管理端 `/admin`:技能治理、权限与合规
登录后按账号角色自动进入对应工作台;`AppShell` 做角色访问守卫,跨角色访问会被拦截。
## 与后端联调
- 所有请求走 `/api/*`,由 `next.config.mjs` 的 rewrites 代理到后端(默认 `http://localhost:3000`),避免浏览器跨域。
- 鉴权:登录/注册成功后将 JWT 存入 `localStorage`,后续请求自动附加 `Authorization: Bearer <token>`
- 错误:后端统一错误体(`AppError.toJSON()`)由 `ApiError` 承载,UI 展示 `message`
可用环境变量 `BACKEND_URL` 覆盖后端地址(如部署时)。
## 本地运行
```bash
# 1) 先启动后端(仓库根目录)
npm run start:dev # 监听 3000,需 .env 中 DB_ENABLED 与 PostgreSQL(可选)
# 2) 启动前端(frontend 目录)
cd frontend
npm install
npm run dev # 监听 4000
```
打开 http://localhost:4000 ,注册一个账号(可选角色:学生 / 导师 / 管理员)后即可进入对应工作台。
## 构建
```bash
npm run build && npm run start
```
## 目录
```
src/
app/ # App Router 页面(login / student / mentor / admin
components/ # AppShell(外壳+守卫)与基础 UI 组件
lib/
api.ts # fetch 封装:鉴权头、错误解析(ApiError)
auth-context.tsx # 登录态上下文(login/register/logout/me
services.ts # 按后端模块组织的 API 服务函数
types.ts # 与后端对齐的类型与枚举
```