# College AI Center — 启动与调试指南 ## 项目结构 - **后端**:`/` 根目录,NestJS + TypeORM(可选 PostgreSQL) - **前端**:`web/` 目录,Next.js + Tailwind CSS - **四个新模块**:轮转见习、技能视频、执业医师备考、学术交流 --- ## 环境准备 复制环境变量模板并按需修改: ```bash cp .env.example .env ``` ### 核心环境变量(`.env`) | 变量 | 说明 | 默认值 | |------|------|--------| | `APP_PORT` | 后端服务端口 | `3000` | | `NODE_ENV` | 运行环境 | `development` | | `DB_ENABLED` | 是否启用 PostgreSQL 持久化 | `false` | | `JWT_SECRET` | JWT 签名密钥 | `college-ai-center-dev-secret-change-me` | | `JWT_EXPIRES_IN_SECONDS` | Token 有效期(秒) | `7200` | | `DB_HOST` / `DB_PORT` / `DB_USERNAME` / `DB_PASSWORD` / `DB_DATABASE` | PostgreSQL 连接 | 见 `.env.example` | | `DB_SYNCHRONIZE` | 自动同步数据库结构(仅开发) | `false` | | `DB_LOGGING` | SQL 日志 | `false` | > **提示**:`DB_ENABLED=false` 时所有模块使用内存实现,无需安装 PostgreSQL,适合本地快速启动和测试。 --- ## 安装依赖 ### 后端 ```bash npm install ``` ### 前端 ```bash cd web && npm install ``` --- ## 启动命令 ### 1. 启动后端(开发模式,带热重载) ```bash npm run start:dev ``` 后端运行在 `http://localhost:3000`,API 前缀为 `/api/*`。 ### 2. 启动前端(开发模式) ```bash cd web && npm run dev ``` 前端运行在 `http://localhost:4100`。 ### 3. 一键同时启动前后端(后台运行) ```bash # 在项目根目录执行 # 1. 启动后端(后台) nohup npm run start:dev > backend.log 2>&1 & # 2. 启动前端(后台) cd web && nohup npm run dev > ../frontend.log 2>&1 & ``` 停止后台进程: ```bash # 查找并停止后端(NestJS) pkill -f "nest start" # 查找并停止前端(Next.js) pkill -f "next dev" ``` ### 4. 生产构建 ```bash # 后端构建 npm run build # 前端构建 cd web && npm run build ``` --- ## 数据库连接(可选) 如需启用 PostgreSQL 持久化: 1. 确保本地 PostgreSQL 已启动。 2. 在 `.env` 中设置: ```env DB_ENABLED=true DB_HOST=localhost DB_PORT=5432 DB_USERNAME=postgres DB_PASSWORD=postgres DB_DATABASE=college_ai_center DB_SYNCHRONIZE=true ``` 3. 重启后端:`npm run start:dev` TypeORM 会在启动时自动建表(`DB_SYNCHRONIZE=true`)。 ### 新模块数据库实体 - `exam_records` — 执业医师备考答题记录(`src/modules/exam-prep/entities/exam-record.entity.ts`) --- ## 新模块 API 端点 | 模块 | 端点 | 方法 | 说明 | |------|------|------|------| | **轮转见习** | `/api/rotation/records` | `GET` | 列出轮转记录 | | | `/api/rotation/records` | `POST` | 新增轮转记录 | | **技能视频** | `/api/skill-videos` | `GET` | 搜索技能视频 | | **执业医师备考** | `/api/exam-prep/questions/generate` | `POST` | 生成试题(支持 `builtin` / `ai` / `auto` 模式) | | | `/api/exam-prep/questions/:id/answer` | `POST` | 提交答案 | | | `/api/exam-prep/stats` | `GET` | 获取备考统计 | | | `/api/exam-prep/history` | `GET` | 查看答题历史 | | | `/api/exam-prep/history/:recordId` | `DELETE` | 删除单条记录 | | | `/api/exam-prep/history` | `DELETE` | 清空全部记录 | | **学术交流** | `/api/academic/records` | `GET` | 列出交流记录 | | | `/api/academic/records` | `POST` | 新增交流记录 | --- ## 学生端前端路由 | 路径 | 模块 | |------|------| | `/student/rotation` | 轮转见习 | | `/student/skill-video` | 技能视频 | | `/student/exam-prep` | 执业医师备考 | | `/student/academic` | 学术交流 | --- ## 常见问题 ### 1. 后端启动报错 `找不到模块 @nestjs/common` 确保已执行根目录的 `npm install`。 ### 2. 前端无法连接后端 API 确认后端已启动,且前端 `.env` 中(如有)的 API 地址正确。开发模式下前端通过代理或直连 `localhost:3000`。 ### 3. 数据库表未自动创建 检查 `.env` 中 `DB_ENABLED=true` 且 `DB_SYNCHRONIZE=true`,然后重启后端。 ### 4. 答题历史未持久化 确认 `DB_ENABLED=true` 并重启后端;否则数据仅保存在进程内存中,重启即丢失。 --- ## Git 提交 ```bash git add -A git commit -m "你的提交信息" ```