# 宝来威考试平台

功能完善的在线问卷调查系统，支持多种题型、随机抽题、免注册答题等特性。

## 功能特性

### 用户端功能
- **免注册答题**：用户无需注册，填写基本信息即可开始答题
- **信息验证**：严格的姓名和手机号格式验证
- **多种题型**：支持单选、多选、判断、文字描述四种题型
- **随机抽题**：根据配置随机生成试卷，确保题目多样性
- **实时反馈**：答题完成后立即显示得分和答案详情

### 管理端功能
- **题库管理**：支持Excel导入和手动编辑题目
- **题型配置**：灵活设置各题型比例和试卷总分
- **数据统计**：详细的答题记录和统计分析
- **数据导出**：支持导出答题记录和统计报表

## 技术架构

- **前端**：React 18 + TypeScript + Ant Design + Tailwind CSS
- **后端**：Express.js + TypeScript
- **数据库**：SQLite3
- **构建工具**：Vite
- **文件处理**：Multer + XLSX

## 快速开始

### 安装依赖
```bash
npm install
```

### 启动开发服务器
```bash
npm run dev
```

### 构建生产版本
```bash
npm run build
```

### 启动生产服务器
```bash
npm start
```

## 管理员账号

- 用户名：admin
- 密码：admin123

## API接口

### 用户相关
- `POST /api/users` - 创建用户
- `GET /api/users/:id` - 获取用户信息
- `POST /api/users/validate` - 验证用户信息

### 题库管理
- `GET /api/questions` - 获取题目列表
- `POST /api/questions` - 创建题目
- `PUT /api/questions/:id` - 更新题目
- `DELETE /api/questions/:id` - 删除题目
- `POST /api/questions/import` - Excel导入题目

### 答题相关
- `POST /api/quiz/generate` - 生成随机试卷
- `POST /api/quiz/submit` - 提交答题
- `GET /api/quiz/records/:userId` - 获取用户答题记录

### 管理员相关
- `POST /api/admin/login` - 管理员登录
- `GET /api/admin/config` - 获取抽题配置
- `PUT /api/admin/config` - 更新抽题配置
- `GET /api/admin/statistics` - 获取统计数据

## 数据库设计

### 用户表 (users)
- id: 用户ID
- name: 姓名
- phone: 手机号
- created_at: 创建时间

### 题目表 (questions)
- id: 题目ID
- content: 题目内容
- type: 题型
- options: 选项（JSON）
- answer: 标准答案
- score: 分值
- created_at: 创建时间

### 答题记录表 (quiz_records)
- id: 记录ID
- user_id: 用户ID
- total_score: 总得分
- correct_count: 正确题数
- total_count: 总题数
- created_at: 创建时间

### 答题答案表 (quiz_answers)
- id: 答案ID
- record_id: 记录ID
- question_id: 题目ID
- user_answer: 用户答案
- score: 得分
- is_correct: 是否正确
- created_at: 创建时间

## Excel导入格式

Excel文件需要包含以下列：
- 题目内容（必填）
- 题型（单选/多选/判断/文字描述）
- 标准答案（根据题型格式要求）
- 分值（数字类型）
- 选项（单选/多选题需要，用|分隔）

## 开发规范

- 使用TypeScript进行类型检查
- 遵循React最佳实践
- 使用ESLint进行代码检查
- 使用Prettier进行代码格式化

## 部署说明

1. 构建项目：`npm run build`
2. 上传构建文件到服务器
3. 安装生产依赖：`npm ci --only=production`
4. 启动服务：`npm start`
5. 配置反向代理（如Nginx）

## 许可证
MIT License
