Skip to content

后台管理指南

文档状态:部署运维方案尚未成熟

本分区文档描述的是开发期部署与运维方式(手动分步启动、开发期脚本),尚未提供面向生产的一键部署方案——当前不具备守护进程管理、TLS、备份、升级等生产级能力,生产部署请谨慎参考。项目后续将提供成熟的一键部署方式,届时本文档将整体更新。

管理后台面向 admin 角色,前端入口为「管理」页面(/admin),所有管理端点位于 /api/v1/admin/* 并强制校验管理员权限。

概览

后台按功能区分为以下页面:

页面功能
用户用户列表、编辑资料、分配角色、封禁 / 解封
角色与权限RBAC 角色、权限点管理
题目题目列表、创建 / 编辑 / 删除(含 U 型与 P 型)
分类题目分类的父子层级管理
提交查看全部提交、删除提交、重测(rejudge)
竞赛竞赛 CRUD 与参赛者管理
评测镜像评测镜像白名单维护
黑名单IP 黑名单管理
审计日志操作审计记录查询
系统设置运行时可改的系统配置
仪表盘运行统计概览

RBAC 角色与权限

Neuro OJ 使用「角色 → 权限点」模型:权限格式为 resource:action(例如 problem:createsubmission:read_own)。

  • 系统内置角色:root(UID=0 系统用户,不计入统计)、admin(管理后台)、user(普通用户默认权限集)。
  • 管理页「角色」可以创建自定义角色、编辑角色的权限点集合、删除不再使用的角色。
  • 用户的角色在「用户」页面通过「分配角色」调整。
  • 权限检查在服务端强制进行,前端菜单只是展示层。

安全约束

系统禁止降级最后一个可登录管理员——若当前只剩一个 admin,不能移除其管理角色,防止后台失守。

用户管理

  • 编辑资料:修改用户昵称、邮箱等基础信息。
  • 封禁 / 解封:封禁需填写原因,可设置封禁时长(临时封禁);被封禁用户登录时会看到原因与解封时间。封禁历史可在该用户详情中查看。
  • IP 黑名单:在黑名单页添加 / 移除 IP,黑名单内的来源会被拒绝访问。生产环境配合 TRUSTED_PROXIES 使用,否则所有请求都来自反向代理的 IP。

审计日志

  • 敏感操作(登录、封禁、角色变更、设置修改、删除等)会写入审计日志,可在「审计日志」页按操作类型与时间范围查询。
  • 保留时长由 AUDIT_LOG_RETENTION_DAYS 控制(默认 90 天;设为 0 表示禁用清理)。
  • 审计写入失败不影响业务主流程(仅记录错误日志)。

系统设置

运行时可改的系统配置以键值对形式存在「系统设置」页,包括但不限于:

说明
allow_register是否开放自助注册
jwt_expires_in登录令牌有效期
maintenance_mode维护模式开关
homepage_banner首页横幅内容
email_provider 及邮件相关键邮件服务配置
rate_limit_*登录限流参数

修改即时生效;涉及邮件、限流等键时请先确认新值正确,避免锁死服务。

题目与分类

  • 题目类型:U 型(用户题,创建者本人与 admin 可管理)与 P 型(主题题,仅 admin 管理)。admin 可创建任意类型。
  • 创建 / 编辑:在管理页填写题面、限制条件、语言与运行时配置,并上传统一题目包 zip(见出题人文档)。
  • 重测:题目或单条提交支持 rejudge(仅已完成或出错的提交可重测),用于修正题目配置或评测环境后的批量重判。
  • 分类:分类支持父子层级,题目与分类为多对多关系。
  • 评测镜像:白名单登记 evaluator / solution 镜像名与匹配模式;新增镜像后需在 Judge Worker 侧构建并重启使其生效。

提交管理

  • 管理员可以查看任意用户的提交详情(含代码与用例级结果)。
  • 可以删除异常提交,或对单条提交触发 rejudge。

仪表盘

「仪表盘」页提供运行统计概览(用户数、提交数、评测负载等),用于快速了解系统健康状况。

Neuro OJ 是一个独立社区项目,与 CCF 及 LMCC 无官方关系。