From 835df6b7e7b22c7197e1de3ce62daae683f0e0cd Mon Sep 17 00:00:00 2001 From: kronecker <2026692687@qq.com> Date: Mon, 12 Oct 2026 02:33:15 +0800 Subject: [PATCH] feat(admin): connect authenticated problem maintenance console --- frontend/README.md | 12 + frontend/src/admin/AdminApp.vue | 58 ++- frontend/src/admin/AdminLogin.vue | 48 ++ frontend/src/admin/AdminProblems.vue | 617 ++++++++++++++++++++++++ frontend/src/admin/AdminUnavailable.vue | 11 + frontend/src/admin/AdminView.vue | 275 +---------- frontend/src/admin/intents.ts | 90 ++++ frontend/src/admin/router.ts | 31 +- frontend/src/api/adminProblems.ts | 126 +++++ frontend/src/api/client.ts | 12 + frontend/src/api/transport.ts | 3 +- frontend/tests/admin-intents.test.ts | 50 ++ 12 files changed, 1065 insertions(+), 268 deletions(-) create mode 100644 frontend/src/admin/AdminLogin.vue create mode 100644 frontend/src/admin/AdminProblems.vue create mode 100644 frontend/src/admin/AdminUnavailable.vue create mode 100644 frontend/src/admin/intents.ts create mode 100644 frontend/src/api/adminProblems.ts create mode 100644 frontend/tests/admin-intents.test.ts diff --git a/frontend/README.md b/frontend/README.md index bda1eb4..b3c5bde 100644 --- a/frontend/README.md +++ b/frontend/README.md @@ -46,3 +46,15 @@ POST前先保存 UUID,双击共用请求,网络超时/刷新重试复用原 运行指标仅来自完整持久化报告,null显示“—”;诊断和源码按纯文本显示。 `pnpm test` 覆盖草稿、幂等重试、轮询期限/隐藏/终态/失效响应和401处理, 已纳入 `make check-frontend`;真实浏览器编译/判题另在受限独立 VM 验收。 + +管理入口 `/admin/index.html#/problems` 共用同源 Cookie、CSRF 与实时权限 API。 +`admin/` 管理路由和维护页面,`api/adminProblems.ts` 使用生成 DTO;普通用户进入明确 +403 页,权限失效或离页终止请求。题目、版本历史、本人导入和审计采用服务端游标分页。 + +题包只接受有界单层 ZIP,导入 UUID 在上传前绑定当前账号、SHA-256 和字节数。 +浏览器只持久保存 UUID/摘要等重试信息,不保存文件正文、密码或管理员能力。 +状态查询每 2 秒一次,最多 90 次/3 分钟;错误、终态、离页停止,可核对原操作。 +发布、下架和恢复使用独立稳定 UUID 与版本/状态前置条件;409 后重新读取当前状态, +网络不确定时核对原回执。候选题面、公开样例与预算按安全文本预览,隐藏工件不下发。 +发布产生新不可变版本;下架的受理任务与本人历史保留。其他管理业务区明确未实现。 +事件测试验证本地凭据与生命周期,不代替独立 VM 中的真实 Cookie/HTTP/浏览器验收。 diff --git a/frontend/src/admin/AdminApp.vue b/frontend/src/admin/AdminApp.vue index 3c81b9f..a35916d 100644 --- a/frontend/src/admin/AdminApp.vue +++ b/frontend/src/admin/AdminApp.vue @@ -1,9 +1,49 @@