Commit Graph
89 Commits
Author SHA1 Message Date
Kronecker 6e14b5abf8 feat(core): integrate verified judging foundation
# 基础在线评测功能

本次整合接通普通题的完整提交流程:学生通过真实会话登录、查看题目、提交程序、查询个人结果与源码,并可取消尚未结束的评测。

## 新增能力

- Linux 沙箱隔离与资源限制;C17、C++20、CPython 3.13.16 和 OpenJDK 21 普通题评测。
- 持久化 Coordinator、事务 outbox 和普通判题 Worker,保留任务租约、取消与清理记录。
- 管理员题包上传与校验、不可变版本发布、题目下架恢复和维护审计。
- 本题个人提交、历史详情与匿名性能比较;缺测、环境不一致或样本不足时明确显示不可比较。

## 兼容性

数据库结构与授权由 Backend Alembic 统一迁移。旧 v1 报告保留原有字节和摘要,新语言通过显式版本契约启用,旧题目不会自动增加语言能力。

Python 支持单文件 `main.py` 与标准库;Java 使用默认包的 `Main.java` / `Main`,允许有界辅助类、内部类和匿名类。普通题采用精确字节比较。

## 已知限制

这是基础功能整合,不是生产发布。离线安装、备份恢复、升级和持续运行的单机交付验收仍在独立工程分支进行。

模型与学习能力尚未接入。自助注册、比赛、训练、社区、自测、SPJ、交互题和分布式执行尚未完成;预览页面不代表真实业务已实现。
2026-10-16 16:45:57 +08:00
Kronecker f576756359 test(admin): isolate import recovery acceptance from candidate checks 2026-10-12 05:05:00 +08:00
Kronecker 445affb63d test(admin): verify cross-process import admission and recovery 2026-10-12 04:01:51 +08:00
Kronecker 3536ef1fbb test(admin): preserve baseline data through maintenance migrations 2026-10-12 03:48:26 +08:00
Kronecker 676781223d test(admin): verify bounded archive and private storage refusals 2026-10-12 03:28:41 +08:00
Kronecker 2f860a17c9 docs(admin): document bounded problem maintenance operations 2026-10-12 03:15:51 +08:00
Kronecker 835df6b7e7 feat(admin): connect authenticated problem maintenance console 2026-10-12 02:33:15 +08:00
Kronecker 5366418881 feat(problems): publish immutable candidates with audited maintenance 2026-10-11 23:29:21 +08:00
Kronecker 3152d59056 feat(problems): add bounded administrator package imports
Use live maintenance sessions, durable capacity reservations and streamed SHA-bound ZIP uploads. An ordinary capped import worker validates stored/deflated v1/v2 packages, persists immutable unpublished candidates and finite audit events, and recovers or releases capacity after interruption and expiry.

Validate actual PG/HTTP/worker/storage fault paths in an isolated capped VM (2 passed, 0 skipped), reuse unchanged actual migration roundtrip evidence, and pass affected backend/architecture checks plus the prior full engineering checks.
2026-10-11 22:19:38 +08:00
Kronecker 234ab23155 feat(identity): protect administrator bootstrap and recovery 2026-10-11 19:22:55 +08:00
Kronecker a7b2324a3e feat(identity): expose live maintenance capabilities and transaction authorization 2026-10-11 12:31:08 +08:00
Kronecker 3ed5b72459 feat(identity): persist administrator authority with scoped database roles 2026-10-11 12:20:10 +08:00
Kronecker 8143a7f665 fix(frontend): adapt submission summaries to workbench width 2026-10-11 11:17:06 +08:00
Kronecker 08f2db616f fix(frontend): separate submission time and version link 2026-10-11 11:10:46 +08:00
Kronecker c8cac766c7 test(submissions): verify exact performance cohort boundaries 2026-10-11 07:45:56 +08:00
Kronecker bc5cd12056 feat(frontend): share real submission details and performance in workbench 2026-10-11 03:55:23 +08:00
Kronecker 218fa38f8e feat(submissions): query bounded anonymous performance snapshots 2026-10-11 03:51:33 +08:00
Kronecker fce7522267 feat(submissions): bind final performance to trusted measurement epochs 2026-10-11 03:46:16 +08:00
Kronecker 3cc90e4573 feat(submissions): define bounded performance and scoped history contracts 2026-10-11 03:35:12 +08:00
Kronecker 5df3c370aa docs(frontend): document managed language submission 2026-10-10 04:09:41 +08:00
Kronecker 029585739c fix(worker): bound configurable control request deadlines 2026-10-10 02:15:52 +08:00
Kronecker 47f535ea79 docs(frontend): clarify connected judging services 2026-10-10 00:24:08 +08:00
Kronecker 67c3bc55ba chore(judge): document explicit managed runtime rollout 2026-10-09 23:29:23 +08:00
Kronecker d20721313e test(judge): verify managed worker faults and sealed programs 2026-10-09 22:49:57 +08:00
Kronecker 9d960c2a9b feat(frontend): enable problem-scoped Python and Java submissions 2026-10-09 22:32:38 +08:00
Kronecker 507b15b64a test(coordinator): fence stale managed reports and bound retries 2026-10-09 21:57:40 +08:00
Kronecker 643a8d342e fix(judge): bind managed inputs and confirm artifact cleanup 2026-10-09 21:45:21 +08:00
Kronecker 802e019699 feat(worker): judge versioned sealed runtime programs 2026-10-09 20:15:17 +08:00
Kronecker 2f1166954a feat(sandbox): route pinned runtimes through one bounded factory 2026-10-09 18:50:10 +08:00
Kronecker 38ee332a3e test(sandbox): verify managed file quotas and live wall deadlines 2026-10-09 18:12:37 +08:00
Kronecker 9394a914f8 feat(sandbox): bind managed requests to pinned runtime identities 2026-10-09 17:49:30 +08:00
Kronecker 1dd6d1f971 feat(sandbox): add immutable Python and Java execution profiles 2026-10-09 17:02:27 +08:00
Kronecker 53caafc157 feat(coordinator): dispatch versioned runtime leases and reports 2026-10-09 15:18:08 +08:00
Kronecker 4b8f255180 feat(judging): persist immutable per-language problem configurations 2026-10-09 14:53:09 +08:00
Kronecker a5a7e40308 feat(contracts): add versioned multi-runtime judging contracts 2026-10-09 14:15:24 +08:00
Kronecker 81f8dc3204 docs(platform): describe controlled judging startup and recovery 2026-10-09 10:06:17 +08:00
Kronecker 3e44779578 fix(frontend): ignore expired responses from prior sessions 2026-10-09 09:55:11 +08:00
Kronecker fb1b161c0d feat(platform): connect owned submissions and real browser flows 2026-10-09 09:30:12 +08:00
Kronecker 19a071573b feat(worker): consume durable jobs with fenced execution and recovery 2026-10-09 08:38:20 +08:00
Kronecker 76b565cce8 fix(contracts): reject unfulfillable output capture budgets 2026-10-09 08:25:39 +08:00
Kronecker b7e9111254 fix(messaging): suppress credential-bearing transport logs 2026-10-09 07:55:15 +08:00
Kronecker f838008c71 feat(coordinator): persist fenced execution authority and atomic results 2026-10-09 07:15:24 +08:00
Kronecker 38738122b3 feat(messaging): deliver durable outbox events with publisher confirms 2026-10-09 06:59:13 +08:00
Kronecker 75d74908e0 feat(submissions): create durable queued evaluations idempotently 2026-10-09 06:31:15 +08:00
Kronecker 8a01081cc9 feat(judge): compile once and run isolated points through helper factory 2026-10-09 04:12:22 +08:00
Kronecker 93fb41c608 feat(engine): judge immutable submissions through bounded execution ports 2026-10-09 03:34:04 +08:00
Kronecker 996dbc5144 feat(problems): publish immutable versions and fence artifact access 2026-10-09 01:51:13 +08:00
Kronecker ff60136f8d feat(identity): add bounded login and revocable sessions 2026-10-09 01:20:37 +08:00
Kronecker f4bf218081 feat(database): add judging schema and separate write roles 2026-10-09 01:09:34 +08:00
Kronecker df52446dac feat(contracts): validate fenced judging jobs and bounded results 2026-10-09 00:43:17 +08:00