Files
2026-07-24 22:40:29 +08:00

184 lines
4.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 "你的提交信息"
```