Kronecker 8b8828d136 chore(merge): integrate workspace and frontend prototype
合并审阅 note(2026-10-05)

合并范围
- chore/workspace-bootstrap:b5b286c44f6a1456bef1db4ab904cecb92ff15a3。
- feat/frontend-pages:f108e88c47e6d604184d8a34dfd39be06762e159。
- 前端分支已包含工程骨架提交;一次合并保留两个分支的原有历史。

审阅结论
- 工程骨架与前端原型可以合入 main。
- 平台后端按业务域、Runtime、基础设施和后台进程划分;Rust 判题工程按契约、协调器、Worker、引擎和沙箱划分。
- 前端包含练习、比赛、训练、提交、账号和社区页面原型,以及独立入口的管理端;预览数据与未实现能力在界面中明确标记。
- 已修复编辑后立即刷新导致最后一段草稿丢失的问题(f108e88):页面隐藏、离开和 Vue scope 销毁时保存待写入内容,同时保留输入防抖和存储异常处理。

验证结果
- 本次完整 make check 通过:架构边界、Python/Rust 契约、Ruff、Rust fmt/clippy、前端 OpenAPI 类型、ESLint、Prettier、vue-tsc、生产构建及 Docker Compose 配置。
- Python 测试 7 项、Rust 集成测试 2 项、前端草稿回归测试 7 项全部通过。
- 前序浏览器验证覆盖桌面及移动布局、独立管理端入口、真实健康接口、编辑器 Worker;修复后已验证立即刷新可恢复最新草稿。

后续工作
- 编辑器页面生产 JS chunk 约 3,005.41 kB(gzip 785.90 kB),构建仍有包体告警,后续优化拆包和加载。
- 业务写入、认证和实际判题能力仍处于工程骨架阶段;沙箱继续拒绝未经验证隔离的执行。
2026-10-05 18:29:40 +08:00
2026-09-23 14:10:43 +08:00

KF-OnlineJudge

以 Rust 自研判题与 Linux 沙箱、以 Python/FastAPI 提供平台服务的在线评测系统。 前端使用 Vue 3、TypeScript、Element Plus 和 Vite。

当前版本为 0.0.1 工程骨架:平台 API 和协调器提供存活接口,前端可检查实际 API 连接。 沙箱隔离执行、判题、账号、题库、提交与学习业务尚未实现。

工程划分

目录 职责
backend/ Python 模块化单体、平台 API、学习 Worker、待投递事件发布器及唯一数据库迁移入口
judge/ Rust workspace:协议、沙箱、判题编排、判题 Worker 和协调器
frontend/ 页面、路由、请求生命周期与生成的 API 类型
contracts/ 版本化 JSON Schema 与 OpenAPI 快照
deploy/ 本地 PostgreSQL / RabbitMQ 配置
scripts/ Python 导入边界与 Rust crate 依赖检查
tests/ 跨语言共享协议样例
skills/、experiments/ 后续内置技能与可复现实验的扩展位置

Python 业务域分为 identity、problems、submissions、community、learning、skills 和 operations。业务域之间通过公开应用接口协作,不直接访问其他域的持久化实现。 runtime 管理执行机制,通过注入端口调用业务能力。

Rust 分为 kf-contracts、kf-sandbox、kf-engine、kf-worker、kf-coordinator 五个 crate。 协调器拥有执行状态写入权,判题 Worker 不直接写评测数据库。 沙箱尚未验证隔离能力,当前执行入口明确拒绝运行程序。

安装与检查

工具链基线:Python 3.13.16 + uv、Rust 1.99.0、Node 26.10.0 + pnpm 11.28.4。 Python 和 Rust 版本由工程配置固定,三套工程分别提交依赖锁文件。 开发与构建使用 Linux 原生文件系统。

make install
make check

make check 包含架构边界、契约同步、静态检查、测试、前端生产构建和 Compose 配置检查。 检查无需启动数据库或队列,也不执行破坏性沙箱测试。 make format 格式化源码,make contracts 更新 Schema、OpenAPI 和前端类型。

启动骨架

分别在终端运行:

make api          # 平台 API:127.0.0.1:8000
make frontend     # Vue 开发服务:127.0.0.1:5173
make coordinator  # 协调器:127.0.0.1:8100

平台存活接口为 /api/v1/health/live,开发 API 文档为 /api/docs。 前端开发服务将 /api 代理到平台;生产部署需另行配置反向代理与 SPA 路由回退。 协调器存活接口为 /health/live。

make worker-check   # 三个后台入口仅检查配置,不消费任务
make sandbox-probe  # 只读观察 Linux 环境,不创建隔离资源

本地数据库与队列的启动步骤见 部署说明。 业务表和数据库 revision 尚未建立;迁移统一由后端 Alembic 管理。 模型服务与第三方插件尚未接入。

开发中的规划文档仅在本地维护,不包含在远端仓库中。 后续逐步实现沙箱、单机判题、分布式恢复、并行优化和学习功能。

许可证

MIT。引用或复用其他项目代码时记录来源并遵守对应许可证。

S
Description
No description provided
Readme MIT
6.3 MiB
Languages
Rust 53.5%
Python 35%
Vue 6.8%
TypeScript 3%
CSS 1.5%
Other 0.1%