# 算法课程自动评测系统设计实现 **Repository Path**: QDISUPC2026/algorithm-course-judge-system ## Basic Information - **Project Name**: 算法课程自动评测系统设计实现 - **Description**: 算法分析与设计课程自动评测系统的设计与实现 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2026-06-10 - **Last Updated**: 2026-06-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 算法课程自动评测系统设计实现 #### 介绍 算法分析与设计课程自动评测系统的设计与实现 ## 快速开始 ### 前置条件 - Docker & Docker Compose - Python 3.12+(可选,用于本地开发) - Node.js 20+(可选,用于前端开发) ### 启动服务 1. **克隆仓库** ```bash git clone cd OnlineJudge ``` 2. **配置环境变量** ```bash cp .env.example .env # 编辑 .env,配置数据库密码、LLM API 等 ``` 3. **启动所有服务** ```bash docker-compose up -d ``` 4. **初始化数据库** ```bash docker-compose exec backend python manage.py migrate docker-compose exec backend python manage.py createsuperuser ``` 5. **构建判题镜像** ```bash docker build -t oj-judge-cpp:latest backend/docker/judge-cpp ``` ### 访问地址 | 服务 | 地址 | |------|------| | 前端 | http://localhost:5173 | | 后端API | http://localhost:8000 | | Django Admin | http://localhost:8000/admin | | MinIO Console | http://localhost:9001 | ## 核心流程 ### 学生提交流程 1. 学生在题目页编辑 C++ 代码 2. 前端调用 `POST /api/submissions` 创建提交记录 3. 后端创建 `Submission(status=Pending)`,投递 Celery 判题任务 4. 判题 Worker 在 Docker 沙箱内编译运行代码 5. 通过 WebSocket 推送状态更新与最终结果 ### 判题流程 1. 拉取测试用例(MinIO) 2. 容器内编译(失败 → CompileError) 3. 逐用例运行(超时 → TimeLimit) 4. 输出比对(首个失败用例终止) 5. 写回结果:Accepted / WrongAnswer / TimeLimit / RuntimeError / CompileError ## API 接口 | 方法 | 路径 | 说明 | |------|------|------| | POST | `/api/submissions/` | 创建提交 | | GET | `/api/submissions/{id}/` | 查询提交详情 | | GET | `/api/problems/` | 获取题目列表 | | GET | `/api/problems/{id}/` | 获取题目详情 | ## WebSocket 事件 - `submission.updated`: 提交状态变更(Pending/Running) - `submission.finished`: 最终结果 + 失败用例摘要 + 解释 ## 安全设计 - **Docker隔离**:禁止网络、资源限制、只读挂载 - **权限控制**:标准答案仅教师/管理员可见 - **审计追踪**:保留提交关键字段,支持复盘 - **LLM防泄露**:只输出解释建议,不输出完整代码 ## 扩展计划 - [ ] Python 判题支持 - [ ] 部分得分(用例分组计分) - [ ] SPJ/交互题/多文件工程题 - [ ] 多份标准答案对比 - [ ] 教学诊断与个性化学习报告 ## 开发指南 ### 后端开发 ```bash cd backend python -m venv .venv source .venv/bin/activate # Windows: .venv\Scripts\Activate.ps1 pip install -r requirements.txt python manage.py runserver ``` ### 前端开发 ```bash cd frontend npm install npm run dev ``` ### 运行测试 ```bash cd backend pytest -q ``` ## 许可证 MIT License ## 许可证 > ⚠️ 额外约束:**严禁将本项目(含修改后的衍生作品)用于各类学科竞赛、科创比赛、项目申报、评优评奖等参赛场景**。 > 本项目仅允许个人非商业学习、研究与参考。 ## 贡献 欢迎提交 Issue 和 Pull Request!