docs(platform): describe controlled judging startup and recovery

This commit is contained in:
2026-10-09 10:06:17 +08:00
parent 3e44779578
commit 81f8dc3204
7 changed files with 99 additions and 13 deletions
+18 -2
View File
@@ -1,7 +1,8 @@
# Vue 前端工程
Vue 3 + TypeScript + Vite + Element Plus,使用 Vue Router 与 Pinia。
当前页面是开发预览和实际 API 连接检查;没有模拟登录或模拟评测结果。
登录、已发布题库、题面、提交与个人成绩页面使用真实 API。训练、比赛、社区等
本轮以外页面仍为明确的开发预览,不提供这些尚未实现的业务能力。
```bash
pnpm install --frozen-lockfile
@@ -24,4 +25,19 @@ pnpm build
API 类型更新执行根目录 `make contracts`;前端通过 `pnpm check:api` 拒绝过期类型。
登录凭据、模型密钥和数据库连接不能进入 `VITE_` 环境变量。
`pnpm test` 验证代码草稿在刷新、切到后台与页面离开时的保存行为,已纳入 `make check-frontend`。
已有账号登录使用 HttpOnly/Strict cookie 与单独 CSRF cookie;401清除内存身份,
保护页面重新登录后继续。自助注册暂不开放。密码/会话不存入 localStorage。
浏览器与 API 使用同一 origin 的 `/api`,明确配置 `KF_OJ_BROWSER_ORIGINS`;
生产必须使用 HTTPS、安全 cookie 与独立部署的反向代理。
编辑器保留每题/每语言本地草稿,新增 C17 并保留原 C++/Python/Rust 草稿;
仅题目声明支持的 C17/C++20 可提交。提交凭据按账号/版本/内容 SHA-256 绑定,
POST前先保存 UUID,双击共用请求,网络超时/刷新重试复用原键;内容变化产生新键。
草稿和已保存凭据不因失败/退出而清除,本地存储不可用时拒绝发起无法稳定重试的提交。
详情和列表查询每2秒一次,每轮最多240次/10分钟;终态、错误或离页停止,隐藏页面
取消当前查询,恢复可见时继续原预算。路由变化/会话变化后的旧响应不能覆盖当前视图。
耗尽后可手动刷新;不会用预览成绩填补错误。取消受理与最终停止分别展示。
运行指标仅来自完整持久化报告,null显示“—”;诊断和源码按纯文本显示。
`pnpm test` 覆盖草稿、幂等重试、轮询期限/隐藏/终态/失效响应和401处理,
已纳入 `make check-frontend`;真实浏览器编译/判题另在受限独立 VM 验收。