Skip to content

LynPtl/PtLPOJ

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PtLPOJ (Ptlantern's Learning Platform Online Judge)

Platform Language Docker zread

PtLPOJ (Ptlantern's Learning Platform Online Judge) 是一款轻量级、安全的在线评测系统,专为局域网内的内部 Python 培训和教学场景设计。

它采用整洁的客户端-服务器架构,摒弃了传统的网页端刷题体验,将所有操作(题目浏览、代码编写、评测反馈)深度整合进 Visual Studio Code 插件中。通过 Go 编写的高并发判题内核与基于 Docker 的沙盒技术,确保每一份不受信代码都能在隔离、受限的环境中安全、快速地得到验证。


  • 沉浸式体验: 直接在 VS Code 编辑器中阅题、编写、运行与提交,告别网页端 IDE 切换的体验割裂问题。
  • 安全强化的沙盒环境: 基于 Docker Engine API 编排极简容器,结合 cgroups (限制 CPU/RAM 资源)、网络阻断、User Namespace 权限降级等多重安全防护策略,有效防范恶意代码攻击与内核越权。
  • 自动化题目解析: 基于 Python AST(抽象语法树)实现的原生代码全自动拆解流程。系统通过对单一 Python 源码文件进行解析,自动剥离生成代码脚手架、题目 Markdown 描述与隐藏测试用例记录,降低题目维护成本。
  • 可视化管理控制台: 在 VS Code 内置原生管理面板,提供带有进度反馈的防并发用户白名单导入机制,及具备批量并发上传能力的题目管理引擎。
  • 高并发架构支撑: 基于 Go 语言的协程模型并发调度沙盒生命周期,结合 SQLite 的 WAL (Write-Ahead Logging) 模式优化写入锁机制,确保在密集提交突发情况下的系统稳定性。
  • 无密码身份鉴权: 采用面向团队的邮箱 OTP 验证机制与动态 JWT 会话鉴权体系,确保登录状态的长期安全性与权限隔离。

📂 目录结构 (Directory Structure)

PtLPOJ/
├── client/                 # VS Code 插件源码 (TypeScript)
│   ├── src/
│   │   ├── extension.ts    # 插件入口,提供原生 FilePicker 等拦截挂载
│   │   ├── adminView.ts    # 原生批量题库管理与白名单视窗
│   │   └── treeProvider.ts # 定义侧边栏题目树状导航视图
├── server/                 # Go 评测与管理中台源码
│   ├── api/                # RESTful API (含 /api/admin/* 控制权分离)
│   ├── sandbox/            # Docker 容器编排与安全拦截隔离网
│   ├── scheduler/          # 多协程判题任务并发调度中心
│   └── main.go             # 服务端入口程序
├── tools/                  # 题库智能解析引擎 (包含 AST parse_worker.py)
├── docs/                   # 详实的部署指南与核心架构协议
│   ├── dev/                # 内部开发日志与历史阶段任务清单
│   ├── architecture_design.md
│   ├── PtLPOJ_Full_Guide_ZH.md 
│   └── user_manual.md

📚 文档指南 (Documentation)

为了方便后续的接手与二次开发,针对不同角色备有以下专有文档:

👉 对于想要了解系统设计的开发者

👉 对于运维、教师及普通使用者


🗺️ 演进路线规划 (Roadmap)

我们遵循透明的里程碑计划推进功能:

  • Phase 10-12: 身份鉴权与会话生命周期闭环、引入 GitHub CI 自动化发布工作流,支持动态扩展的自定义 Server URL 配置解耦。(v0.2.x)
  • Phase 13-14: 可视化管理后台 (Admin Control Panel)。突破单纯的 Webview 沙箱限制,接入操作系统级文件选取交互架构与正则分词并发执行库,支持白名单用户管理与海量 .py 源文件的秒级录入机制。(v0.3.x)
  • Phase 16+: 社交与排行榜体系探索...

🛠️ 技术栈速览

  • 中间件层: Go 1.21+, GORM, SQLite (WAL).
  • 视图层 UI: VS Code Extension API, TypeScript, WebView Native Bridge.
  • 编译挂载体: Python AST Compiler Engine, Docker API SDK v43+.

Created by the PtLPOJ Development Team.

About

PtLPOJ 是一款专为内部团队、班级和小群体设计的重后端、轻前端的沉浸式代码评测平台。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors