64 行
1.8 KiB
Markdown
64 行
1.8 KiB
Markdown
# 平台总体设计
|
||
|
||
> 目标:围绕 CSP/OI 学习闭环构建一体化系统:知识学习 -> 日常练习 -> 错题复盘 -> 模拟竞赛 -> 排名反馈。
|
||
|
||
## 1. 产品模块
|
||
|
||
1. 用户与鉴权
|
||
2. 题库与在线提交
|
||
3. 提交记录与结果追踪
|
||
4. 错题本与复盘
|
||
5. 模拟竞赛与排行
|
||
6. 学习知识库
|
||
7. 在线 C++ 编写/编译/运行
|
||
|
||
## 2. 技术架构
|
||
|
||
### 前端(Next.js)
|
||
- App Router + TypeScript
|
||
- 页面模块:`/problems`、`/submissions`、`/wrong-book`、`/contests`、`/kb`、`/run`、`/me`、`/leaderboard`
|
||
- 通过 `/admin139` 反代后端 API,避免跨域复杂度
|
||
|
||
### 后端(Drogon C++)
|
||
- Controller:HTTP 路由与请求校验
|
||
- Service:业务逻辑(题库/提交/错题本/竞赛/知识库)
|
||
- Domain:实体与 JSON 序列化
|
||
- DB:SQLite + 启动迁移 + 演示数据种子
|
||
|
||
### 数据层(SQLite)
|
||
- 单文件数据库,便于快速部署
|
||
- 覆盖用户、题库、提交、错题本、竞赛、知识库完整模型
|
||
|
||
## 3. 核心业务流
|
||
|
||
### 3.1 练习流
|
||
1) 用户登录
|
||
2) 浏览题目并提交
|
||
3) 后端调用 `g++` 编译并运行样例
|
||
4) 结果写入 `submissions`
|
||
5) 若未通过,写入/更新 `wrong_book`
|
||
6) 若首次 AC,提升 `users.rating`
|
||
|
||
### 3.2 竞赛流
|
||
1) 用户报名比赛
|
||
2) 在比赛时间内提交比赛题目
|
||
3) 按 AC 数与罚时生成排行榜
|
||
|
||
### 3.3 学习流
|
||
1) 浏览知识库文章
|
||
2) 查看文章关联题目
|
||
3) 进入题目页面进行练习
|
||
|
||
## 4. 安全与运行边界
|
||
|
||
- 当前在线运行模块用于开发/教学环境。
|
||
- 生产环境应将编译运行迁移到受限沙箱,避免宿主机风险。
|
||
|
||
## 5. 可扩展方向
|
||
|
||
- 增加多测试点判题与标准答案管理
|
||
- 引入更细粒度比赛规则(罚时、封榜、重判)
|
||
- 支持多语言判题
|
||
- 增加学习路径与章节化知识图谱
|
||
|