- 后端功能: * 新增练习题数据模型和数据库表结构 * 实现题目列表、随机题目、提交答案等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>
54 lines
1.4 KiB
Go
54 lines
1.4 KiB
Go
package main
|
|
|
|
import (
|
|
"ankao/internal/database"
|
|
"ankao/internal/handlers"
|
|
"ankao/internal/middleware"
|
|
"log"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
func main() {
|
|
// 初始化数据库连接
|
|
if err := database.InitDB(); err != nil {
|
|
log.Fatal("数据库初始化失败:", err)
|
|
}
|
|
log.Println("数据库连接成功")
|
|
|
|
// 创建Gin路由器
|
|
r := gin.Default()
|
|
|
|
// 应用自定义中间件
|
|
r.Use(middleware.CORS())
|
|
r.Use(middleware.Logger())
|
|
|
|
// 静态文件服务
|
|
r.Static("/static", "./web/static")
|
|
r.StaticFile("/", "./web/index.html")
|
|
|
|
// API路由组
|
|
api := r.Group("/api")
|
|
{
|
|
// 健康检查
|
|
api.GET("/health", handlers.HealthCheckHandler)
|
|
|
|
// 用户相关API
|
|
api.POST("/login", handlers.Login) // 用户登录
|
|
api.POST("/register", handlers.Register) // 用户注册
|
|
|
|
// 练习题相关API
|
|
api.GET("/practice/questions", handlers.GetPracticeQuestions) // 获取练习题目列表
|
|
api.GET("/practice/questions/random", handlers.GetRandomPracticeQuestion) // 获取随机练习题目
|
|
api.GET("/practice/questions/:id", handlers.GetPracticeQuestionByID) // 获取指定练习题目
|
|
api.POST("/practice/submit", handlers.SubmitPracticeAnswer) // 提交练习答案
|
|
api.GET("/practice/types", handlers.GetPracticeQuestionTypes) // 获取题型列表
|
|
}
|
|
|
|
// 启动服务器
|
|
port := ":8080"
|
|
if err := r.Run(port); err != nil {
|
|
panic("服务器启动失败: " + err.Error())
|
|
}
|
|
}
|