AnCao/README.md
yanlongqi a7ede7692f 实现完整的题目练习功能模块
- 后端功能:
  * 新增练习题数据模型和数据库表结构
  * 实现题目列表、随机题目、提交答案等API接口
  * 支持5种题型:单选、多选、判断、填空、简答
  * 判断题自动生成"对/错"选项
  * 前后端类型映射(single/multiple/judge/fill/short)

- 前端功能:
  * 新增首页,展示5种题型选择卡片和统计信息
  * 完善答题页面,支持所有题型的渲染和答题
  * 填空题特殊渲染:将****替换为横线输入框
  * 实现题目列表、筛选、随机练习等功能
  * 优化底部导航,添加首页、答题、我的三个标签

- 工具脚本:
  * 新增题目数据导入脚本
  * 支持从JSON文件批量导入题库

- 文档更新:
  * 更新CLAUDE.md和README.md,记录新增功能

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-04 02:39:18 +08:00

237 lines
5.5 KiB
Markdown
Raw 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.

# AnKao Web 项目
这是一个使用Go语言和Gin框架构建的Web应用项目。
## 项目结构
```
AnKao/
├── main.go # 主程序入口
├── internal/ # 私有应用代码
│ ├── handlers/ # HTTP请求处理器
│ ├── middleware/ # 中间件
│ └── models/ # 数据模型
├── pkg/ # 公共库代码
│ └── config/ # 配置管理
├── web/ # 前端项目目录
│ ├── src/ # 源代码
│ │ ├── pages/ # 页面组件
│ │ ├── components/ # 可复用组件
│ │ └── main.tsx # 入口文件
│ ├── vite.config.ts # Vite配置(含API代理)
│ └── package.json # 前端依赖
├── go.mod # Go模块文件
├── CLAUDE.md # 开发规范文档
└── README.md # 项目说明
```
## 快速开始
### 后端服务器
```bash
# 安装依赖
go mod tidy
# 运行服务器
go run main.go
```
服务器将在 `http://localhost:8080` 启动
### 前端开发服务器
```bash
# 进入前端目录
cd web
# 安装依赖 (使用 yarn)
yarn install
# 运行开发服务器
yarn dev
```
前端开发服务器将在 `http://localhost:3000` 启动
**注意**: 前端使用 Vite 代理,所有 `/api/*` 请求会自动转发到后端服务器,无需配置 CORS。
### API端点
#### 用户相关
- `POST /api/login` - 用户登录
- `POST /api/register` - 用户注册
#### 练习题相关
- `GET /api/practice/questions` - 获取练习题目列表 (支持分页和类型过滤)
- `GET /api/practice/questions/random` - 获取随机练习题目
- `GET /api/practice/questions/:id` - 获取指定练习题目
- `POST /api/practice/submit` - 提交练习答案
- `GET /api/practice/types` - 获取题型列表
#### 其他
- `GET /api/health` - 健康检查端点
## 开发
### 安装依赖
```bash
go mod tidy
```
### 构建
```bash
go build -o bin/server.exe main.go
```
### 运行编译后的程序
```bash
# Windows
.\bin\server.exe
# Linux/Mac
./bin/server
```
## 特性
- 基于 Gin 框架的高性能 HTTP 服务器
- 自定义日志中间件
- RESTful API 结构
- 健康检查端点
- 用户登录系统基于PostgreSQL数据库
- 题目练习功能
- 答题统计功能
- React + TypeScript + Vite 前端
- Ant Design Mobile UI组件库
## 数据库配置
项目使用 PostgreSQL 数据库存储用户数据。
### 数据库连接信息
数据库配置位于 [pkg/config/config.go](pkg/config/config.go)
- 主机: pgsql.yuchat.top
- 端口: 5432
- 数据库: ankao
- 用户: postgres
### 数据库表结构
**users 表**
- `id` - 主键
- `username` - 用户名(唯一索引)
- `password` - 密码bcrypt加密
- `avatar` - 头像URL
- `nickname` - 昵称
- `created_at` - 创建时间
- `updated_at` - 更新时间
- `deleted_at` - 软删除时间
**practice_questions 表**
- `id` - 主键
- `question_id` - 题目ID唯一索引来自JSON数据
- `type` - 题型fill-in-blank/true-false/multiple-choice/multiple-selection/short-answer
- `type_name` - 题型名称(中文)
- `question` - 题目内容
- `answer_data` - 答案数据JSON格式
- `options_data` - 选项数据JSON格式选择题使用
- `created_at` - 创建时间
- `updated_at` - 更新时间
- `deleted_at` - 软删除时间
### 数据导入
首次运行项目需要导入练习题数据:
```bash
# 确保 practice_question_pool.json 文件在项目根目录
go run scripts/import_questions.go
```
导入脚本会读取 [practice_question_pool.json](practice_question_pool.json) 文件并导入到数据库共包含236道练习题涵盖
- 填空题 (80道)
- 判断题 (80道)
- 单选题 (40道)
- 多选题 (30道)
- 简答题 (6道)
## 前端开发
前端项目位于 `web/` 目录,使用 **yarn** 作为包管理工具。
### 安装依赖
```bash
cd web
yarn install
```
### 运行开发服务器
```bash
yarn dev
```
开发服务器运行在 `http://localhost:3000`
### 构建生产版本
```bash
yarn build
```
### API代理
开发环境下Vite已配置代理前端 `/api/*` 请求会自动转发到 `http://localhost:8080`无需担心CORS问题。
## 页面结构
- **登录页** (`/login`) - 用户登录和注册,支持密码可见性切换
- **首页** (`/`) - 题目练习、随机题目、题目列表、筛选等功能
- **我的** (`/profile`) - 用户信息、退出登录
## 特性
### 后端特性
- 基于 Gin 框架的高性能 HTTP 服务器
- 自定义日志中间件
- RESTful API 结构
- 健康检查端点
- 用户登录和注册系统基于PostgreSQL数据库
- 密码bcrypt加密存储
- 练习题管理系统236道练习题5种题型
- 支持分页查询和题型筛选
- 随机题目推送功能
### 前端特性
- React + TypeScript + Vite 技术栈
- Ant Design Mobile UI组件库
- 移动端优化,防止双指缩放
- CSS Modules 样式隔离
- 现代化的登录/注册界面
- 密码可见性切换功能
## 技术栈
### 后端
- **Go** 1.25.1
- **Gin** v1.11.0 - Web 框架
- **GORM** v1.31.1 - ORM框架
- **PostgreSQL** - 数据库
- **bcrypt** - 密码加密
### 前端
- **React** 18 - UI框架
- **TypeScript** - 类型安全
- **Vite** - 构建工具
- **Ant Design Mobile** - UI组件库
- **React Router** - 路由管理
- **Less** - CSS预处理器
- **Yarn** - 包管理工具
### 开发工具
- API代理配置Vite
- CSS Modules
- 清晰的项目架构,易于扩展