Skip to content

Commit 01a8c59

Browse files
committed
feat(admin): implement dual jwt auth and bulk ops with vscode showWarning fallback
1 parent f93232d commit 01a8c59

25 files changed

Lines changed: 1123 additions & 202 deletions

README.md

Lines changed: 27 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,12 @@ PtLPOJ (Ptlantern's Learning Platform Online Judge) 是一款轻量级、安全
1111

1212
---
1313

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

2221
---
2322

@@ -27,30 +26,20 @@ PtLPOJ (Ptlantern's Learning Platform Online Judge) 是一款轻量级、安全
2726
PtLPOJ/
2827
├── client/ # VS Code 插件源码 (TypeScript)
2928
│ ├── src/
30-
│ │ ├── extension.ts # 插件入口,处理指令、登录与提交
31-
│ │ └── treeProvider.ts # 定义侧边栏题目树状视图
32-
│ ├── resources/ # 插件图标及静态资源
33-
│ ├── package.json # 插件清单与 VS Code 贡献点配置
34-
│ └── tsconfig.json # TypeScript 编译配置
35-
├── server/ # Go 评测服务端源码
36-
│ ├── api/ # RESTful API 路由与 Handler 逻辑
37-
│ ├── auth/ # OTP 生成及 JWT 校验模块
38-
│ ├── middleware/ # 限流 (Rate Limit) 与身份鉴权中间件
39-
│ ├── models/ # GORM 数据库实体模型
40-
│ ├── sandbox/ # Docker 容器编排与安全性硬化
41-
│ ├── scheduler/ # 多协程判题任务调度中心
42-
│ ├── storage/ # 仓库层 (Repository) 与 SQLite 初始化
29+
│ │ ├── extension.ts # 插件入口,提供原生 FilePicker 等拦截挂载
30+
│ │ ├── adminView.ts # 原生批量题库管理与白名单视窗
31+
│ │ └── treeProvider.ts # 定义侧边栏题目树状导航视图
32+
├── server/ # Go 评测与管理中台源码
33+
│ ├── api/ # RESTful API (含 /api/admin/* 控制权分离)
34+
│ ├── sandbox/ # Docker 容器编排与安全拦截隔离网
35+
│ ├── scheduler/ # 多协程判题任务并发调度中心
4336
│ └── main.go # 服务端入口程序
44-
├── data/ # [运行期数据]
45-
│ ├── ptlpoj_dev.db # SQLite 数据库文件 (WAL 模式)
46-
│ └── problems/ # 题目元数据与隐藏测试用例 (tests.txt)
47-
├── docs/ # 项目文档
48-
│ ├── dev/ # 内部开发日志与历史 Phase 协议
37+
├── tools/ # 题库智能解析引擎 (包含 AST parse_worker.py)
38+
├── docs/ # 详实的部署指南与核心架构协议
39+
│ ├── dev/ # 内部开发日志与历史阶段任务清单
4940
│ ├── architecture_design.md
50-
│ ├── deployment_guide.md
41+
│ ├── PtLPOJ_Full_Guide_ZH.md
5142
│ └── user_manual.md
52-
├── tools/ # 辅助工具脚本 (题目导入、配置生成等)
53-
└── README.md
5443
```
5544

5645
---
@@ -61,24 +50,27 @@ PtLPOJ/
6150

6251
### 👉 对于想要了解系统设计的开发者
6352
* [系统架构白皮书 (Architecture Design)](docs/architecture_design.md) - 详细讲解多层组件图、鉴权流与沙盒安全限制原理。
53+
* [中台与插件交互协议 (Admin Control Spec)](docs/dev/missions/mission_admin.md) - 深入解析批量化插件与解析器如何交互。
6454

6555
### 👉 对于运维、教师及普通使用者
66-
* [全量部署与快速使用指南 (Full Guide)](docs/PtLPOJ_Full_Guide_ZH.md) - **推荐阅读**涵盖后端 Docker 部署、插件 VSIX 安装以及如何通过 VS Code 设置连接自定义服务器
67-
* [用户操作手册 (User Manual)](docs/user_manual.md) - 针对学生的纯使用流程指引
56+
* [全量部署与快速使用指南 (Full Guide)](docs/PtLPOJ_Full_Guide_ZH.md) - **推荐阅读**涵盖后端部署、配置修改、后台系统以及白名单如何加
57+
* [用户操作手册 (User Manual)](docs/user_manual.md) - 针对纯测试、纯刷题学生的使用流程
6858

6959
---
7060

7161
## 🗺️ 演进路线规划 (Roadmap)
7262

73-
我们遵循透明的里程碑计划推进功能(详情请参阅项目内的独立 mission 文档)
63+
我们遵循透明的里程碑计划推进功能:
7464

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

7769
## 🛠️ 技术栈速览
7870

79-
* **后端调度与 API Gateway**: Go 1.21+, GORM, SQLite(WAL).
80-
* **VS Code 插件端**: TypeScript, Webview API.
81-
* **沙盒执行体**: `python:3.11-alpine` (Docker API SDK v43+).
71+
* **中间件层**: Go 1.21+, GORM, SQLite (WAL).
72+
* **视图层 UI**: VS Code Extension API, TypeScript, WebView Native Bridge.
73+
* **编译挂载体**: Python AST Compiler Engine, Docker API SDK v43+.
8274

8375
---
8476
*Created by the PtLPOJ Development Team.*

client/README.md

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,19 @@
1-
# PtLPOJ Local Judge Client
1+
# PtLPOJ 客户端 (VS Code 增强扩展)
22

3-
This is the VS Code extension for the Local Python Online Judge system.
3+
这是专为 PtLPOJ (Ptlantern's Learning Platform Online Judge) 打造的 Visual Studio Code 原生客户端环境。
44

5-
## Features
5+
## 🌟 核心特性
66

7-
- **OTP Login**: Secure passwordless authentication.
8-
- **Problem Explorer**: View and manage problem sets from the sidebar.
9-
- **沉浸式刷题 (Immersive Mode)**: Automated workspace setup with split-view for Markdown and Python.
10-
- **Real-time Judging**: Instant feedback via SSE stream notifications.
7+
- **动态 OTP 身份鉴权**: 采用无密码的安全邮箱验证流,强效保护教学资源与学生隐私。
8+
- **题目导航与资源库**: 通过内置的侧边栏视图,直观浏览、检索与管理您的算法题库。
9+
- **沉浸式刷题空间 (Immersive Mode)**: 告别浏览器来回切换。插件将自动为您分配双栏工作区布局:左侧渲染精美的 Markdown 题面,右侧提供 Python 代码智能补全编辑区。
10+
- **即时评测反馈引擎**: 基于 SSE 流媒体技术推送实时的云端沙盒评测进度(支持 CodeLens 一键点击 “Submit to Sandbox” )。
11+
- **去中心化服务器接入**: 支持动态绑定不同的 PtLPOJ 后端评判节点集群。
12+
- **自动化管理控制台**: 高度集成的管理员可视化后台。支持授课教师通过 Excel 粘贴等方式大批量导入学生白名单;并在安全受控的环境内调用操作系统的原生文件选择器,利用 AST (抽象语法树) 智能并发生成与上传 Python 题库。
1113

12-
## Installation
14+
## 🚀 快速安装与接入
1315

14-
1. Install this VSIX.
15-
2. Ensure the PtLPOJ Backend is running on `localhost:8080`.
16-
3. Click the PtLPOJ icon in the activity bar.
16+
1. 在 VS Code 的扩展管理器 (Extensions View) 右上角点击 `...` -> `Install from VSIX...`,选择本地编译好的安装包进行安装。
17+
2. 确保您(或您的老师)部署的 PtLPOJ 服务端进程已经上线并可通过局域网/公网访问。
18+
3. 如果未运行在默认的 `localhost:8080` 环境下,请打开 VS Code 设置(使用快捷键 `Ctrl+,`),搜索 `ptlpoj.serverUrl` 选项,并将其修改为目标 API 网关地址。
19+
4. 点击侧边活动栏出现的 PtLPOJ 图标,即可开启验证登入!

0 commit comments

Comments
 (0)