查看错误日志
{{ figureStates[question.id].log }}
{{ externalNotice }}
{{ figureStates[question.id].log }}
{{ previewResult.log_excerpt }}
{{ editing.detail.raw_latex }}
{{ drillsetError }}
{{ drillsetNotice }}
读取中…
{{ drillsetQuery ? '没有匹配的分类' : (canEditDrillsetContent ? '还没有分类,点上面的「新建」加一个' : '还没有分类') }}
左边选一个分类
读取中…
{{ (drillsetSearching && drillsetPaperScope === 'all') ? '全库还没有试卷' : '该分类下还没有试卷' }}
没有匹配的试卷
扫描中…
{{ drillsetPendingFilter === 'new' ? '没有新出现的疑似成套卷' : (drillsetPendingFilter === 'ignored' ? '还没有忽略掉任何来源' : '还没扫到疑似成套卷') }}
新建试卷
新试卷的名称
{{ drillsetNewPaper.error }}
确认成套卷
来源 {{ drillsetConfirmPaper.source }} · 将写入 {{ drillsetConfirmPaper.count }} 道题
{{ drillsetConfirmPaper.error }}
{{ dedupState.title || '发现可能重复的题目,仍然入库?' }}
填写日期与班级
填写试卷标题
{{ newLectureIsIndex ? ('新建' + newLectureIndexLabel) : '填写讲义标题' }}
{{ newLectureState.error }}
填写练习内容
{{ confirmState.message }}
{{ confirmState.file }}
{{ confirmState.note }}
我的待审
共计 {{ activePendingGroup.rows.length }} 题通过审核
{{ pendingNotice.message }}
{{ dangerConfirm.message }}
请把用户名 {{ dangerConfirm.expected }} 敲进下面这一格再点「删除」:
{{ dangerConfirm.error }}
已重置「{{ resetResult.username }}」的密码
下面临时密码只显示这一次,请单独发给 TA。
{{ resetResult.password }}
清理缓存
当前全部缓存 {{ humanBytes(cacheClearTotalBytes) }} · 可分别勾选,只清所选类别
预计释放:{{ humanBytes(cacheClearReleaseBytes) }} 清理后:{{ humanBytes(cacheClearAfterBytes) }} / 100 MB
{{ cacheClearDialog.error }}
目录权限:{{ stagesDialog.username }}
{{ stagesDialog.error }}
改密码
{{ pwError }}
改完不用重新登录。
这个账号的密码刚被管理员重置过。设一个新密码(至少 6 位)就能进工作台; 改完不用重新登录。
{{ pwError }}
两次输入的新密码不一样
待审 {{ reviewDrafts.length }} 份 · {{ reviewStats.claimed }} 份正在处理{{ reviewStats.holders ? '(' + reviewStats.holders + ')' : '' }} · {{ reviewStats.free }} 份没人认领 · 最早一条提交于 {{ reviewStats.oldest }} · 你认领着 {{ reviewStats.mine }} 份
你已审核共计 {{ reviewedTotal }} 题{{ reviewNotice.message }}
左边选一份草稿开始审 —— 打开会自动认领,右边会直接出排版预览图。
{{ reviewSelected.tikz }}
编译中…(第一次要几秒)
{{ reviewPreview.log_excerpt }}
{{ reviewFigure.log_excerpt }}
只渲染 TikZ 图:图形本身能编译 —— 出错的多半是题干 / 答案里的命令。
{{ adminMode === 'full' ? '后台管理区' : '后台功能区' }}
{{ externalAccess.access_url }}
账号 / 角色 / 注册时间 / 最近登录 / 状态。改角色立即生效(对方不用重新登录, 下一次请求就按新角色走)。自己那一行不能改 —— 防止把唯一的管理员降级。 禁用是"停用账号"不是删除:禁用后对方立刻掉线、也不能再登录,随时可以启用恢复。
读取中…
用户库里还没有账号(服务第一次启动会自动生成三个)。
这一类还没有账号(点「全部」看全)。
每个账号能看 / 能改哪几个大类(角色之外的第二根轴)。改完**立即生效**: 没勾的大类,对方在目录树 / 搜索 / 统计里都看不到(后端过滤,不是前端藏)。
读取中…
{{ permNotice }}
给账号开通 / 撤销自己的私人工作区(workspaces/<账号>)。
撤权只收权限、**不删目录**,重新授权接着用同一份;
「初始化」只在目录被人手工删掉后用来补建(幂等)。
读取中…
给账号开通 / 撤销「班级管理」(左栏那一个页签)。开通 = 直接给最高档
edit;撤权 = 收回档位(不动工作空间)。
改完**立即生效**:对方不用重新登录,页签会出现或消失。
读取中…
{{ permNotice }}
给账号逐个开通「真题卷集」(中栏那一个页签)。只有三档:无(默认,页签都不出现)/ 能看(只读浏览)/ 能编(能新建 / 保存 / 删除试卷、管分类、处置待审区)。 改完**立即生效**:对方不用重新登录,页签会出现或消失。
读取中…
{{ permError }}
{{ journalHint }}
{{ journalNotice.message }}
读取中…
{{ journalError }}
还没有记录。经 app 覆盖保存 / 新增 / 关联改编之后,这里就会有一条。
审计流水:谁下载了什么文件(只记非管理员账号)、谁改过哪个账号 (注册 / 改角色 / 禁用 / 启用 / 重置密码 / 清理会话 / 备份)与 谁动了题库内容(录入写盘 / 覆盖保存 / 关联改编 / 课测保存 / 提交待审 / 审核通过 / 审核拒绝 / 撤回待审 / 还原)。 它只追加在 .data/audit.jsonl 里;本页默认显示最近 500 条,可继续加载到 2000 条。
{{ auditError }}
读取中…
这一类还没有记录。
邀请码是现在唯一的建号通道(不再开放无邀请码注册):把码发给同事,他拿码注册, 注册出来的角色由码决定。永远发不出管理员码(唯一管理员只能走命令行建号)。 一人一码 —— 用过 / 作废 / 过期的码都不能再用。
{{ invitesError }}
{{ invitesNotice }}
读取中…
还没有发过邀请码 —— 选个角色、点「发一张邀请码」。
这一类还没有码(点「全部」看全)。
{{ row.code }}
{{ inviteRoleLabel(row.role) }}
{{ inviteStatusLabel(row) }}
被 {{ row.used_by }} 用了({{ shortStamp(row.used_at) }})
还没人用
服务 / 关键开关 / 存储占用 / 账号数据 / 班级数据 —— 全部只读。清理过期会话只删"已经过期"的会话行, 在线的人一条都不动,谁也掉不了线。
{{ sysError }}
{{ sysNotice }}
读取中…
健康检查
{{ sysHealth.verdict }}
题库健康度
{{ group.title }}
整包备份:把这个工程(题库 .tex、.data 用户库与草稿、backend / frontend 全部)打成一个 tar.gz 放进备份目录。排除 .cache / .venv / __pycache__ 这些能重新生成的, 以及备份目录本身。打包在后台线程跑,页面可以随时切走。
{{ backupError }}
{{ backupDone }}
{{ restoreNotice }}
读取中…
还没有备份。点上面「立即备份」打第一个包。
还原日志
读取中…
{{ restoreLogError }}
{{ restoreLogText || '暂无日志内容。' }}
{{ workspaceError }}
{{ workspaceNotice }}
{{ workspaceRenameError }}
读取中…
{{ handoutTreeError }}
没找到匹配的文件夹或文件
{{ workspaceCwd ? '这个文件夹是空的' : (workspaceSharedMode ? '还没有收到过分享。输码接收别人的分享文件夹。' : '工作区里还没有内容') }}
读取中…
回收站是空的 —— 删掉的东西会在这里放 {{ trashKeepDays }} 天,到期自动清掉。
读取中…
{{ gradeError }}
{{ gradeTestsError }}
{{ gradeFlash }}
{{ gradeNotice }}
读取中…
{{ gradeEmptyText }}
先在左栏点一个班
{{ gradeGridError }}
读取中…
| 名称 | {{ t.name }} | 总计 |
|---|---|---|
| 日期 | {{ shortHeld(t.held_text) }} | 共{{ gridTests.length }}次 |
| 满分 | {{ t.full_score === null ? '—' : t.full_score }} | 100 |
| {{ s.name }} | {{ totalPercentText(s) }} | |
| 平均分 | {{ gridTestAverage(t.id) }} | {{ gridTotalAverage() }} |
{{ gridTests.length ? '这个班还没有学生' : '这个班还没有测试 —— 先去左栏右键建一个' }}
这个班还没有测试 —— 先去左栏右键建一个
| {{ row.label }} | {{ col[row.key] }} | {{ gradePersonalTable.total[row.key] }} |
|---|
先在左栏点一个班
还没有人录过成绩
还没有可画的数据(要有测试 + 满分 + 已录成绩)
—
—
还没有人录过成绩
满分 {{ analysisTestStats.fullText }} | 已录 {{ analysisTestStats.count }} 人
这一次还没有人录成绩
上一次:{{ analysisTestDelta.prevName }} ({{ analysisTestDelta.prevDate }})
这是第一次测试 —— 没有「上一次」可比(涨跌记「—」)
没有进步的人
没有人退步
要两次都有成绩才谈得上「名次变化」(现在算不了)
有成绩 {{ analysisStudentStats.count }} 次 | 全班 {{ analysisStudentStats.classSize }} 人
{{ chart.empty }}
还没有可比的成绩
先在左栏点一个班,再点某个人 / 某次测试看分析。
新建班级
{{ gradeError }}
修改名称
{{ gradeError }}
学生详情
姓名 {{ gradeStudentDetail.name }}
联系电话 {{ gradeStudentDetail.contact_phone || '—' }}
上课电话 {{ gradeStudentDetail.class_phone || '—' }}
{{ gradeTestForm.id ? '修改测试' : '新建测试' }}
{{ gradeTestsError }}
家长端设置
家长扫码后会看到“{{ gradeParentProfileName || '某某老师' }}邀请您加入某某班级”。 这里只填写对外称呼,不会显示账号名或内部备注。
{{ gradeParentProfileError }}
家长端管理
读取中…
{{ gradeParentManagerError }}
请选择一个在授班级,查看或管理该班的查询码和家长绑定。
暂无有效查询码
暂无已失效查询码
暂无有效家长绑定
没有匹配的学生
本班暂无学生
没有匹配的学生
{{ gradeParentCodeTitle }}
正在生成查询码与成绩简报…
{{ gradeParentCodeError }}
{{ gradeParentShareError }}
家长微信扫码后进入本班绑定;以后打开查询码会直接显示成绩。
家长微信扫码后,未绑定则自动进入本班绑定;已绑定则直接显示成绩。
快速录入 · {{ gradeQuickTest ? gradeQuickTest.name : '' }}
{{ gradeQuickRows.length ? '没有匹配的学生' : '这个班还没有学生' }}
{{ gradeGridError }}
花名册 · {{ gradeDetail ? gradeDetail.name : '' }}({{ (gradeStudents || []).length }} 人)
{{ gradeStuError }}
这个班还没有学生 —— 点下面「新增学生」或「导入名单」
{{ gradeStudentForm.pendingCandidate ? '这个学生是?' : '新增学生' }}
{{ gradeStuError }}
跨班搜人
搜索中…
没有匹配的学生
{{ gradeSearchError }}
请在左侧选择学生
正在读他的成绩单…
这个学生还没有加入任何班
| {{ row.label }} | {{ col[row.key] }} | {{ sheet.table.total[row.key] }} |
|---|
| {{ row.label }} | {{ col[row.key] }} | {{ gradeZoomSheet.table.total[row.key] }} |
|---|
导入名单
姓名对上了、电话对不上(或有没见过的号)—— 请逐个确认:
没有需要确认的行,名单已经更新好了。
{{ gradeStuError }}
选择归属 · {{ gradePickTitle }}
下面都是你名下叫「{{ gradePickTitle }}」的学生,点一位把他归过去(电话会更新成这次填的):
{{ gradeStuError }}
{{ bakError }}
{{ bakNotice }}
读取中…
没有可删候选 —— 现在的备份都还带着旧内容(都是还原点)。
这道题已被改动
文件在 app 之外被改过(可能是系统更新或外部编辑),这次没有覆盖
你表单里的内容没有丢失。请选择操作:
与磁盘那一版不一样的字段:{{ staleState.changed.join('、') }}
{{ staleState.diff }}
两边逐字节一致(多半只是被别处改动了排版 / 注释)。
{{ staleState.message }}
你现在的改动还在编辑器里(一个字没丢)。可以另存为新文件保住它, 或者放弃它、重新打开磁盘上那一版。
请选择一个模板
打开文件
{{ handoutPickNotice }}
选择写入目标(写进哪份题库 .tex)
目录树读取中…
{{ reviewTargetError }}
已选:{{ reviewTargetPicked || '(还没选,点上面某个 .tex)' }}
保存文件
将保存到:{{ workspacePathDisplay(createHandoutPreview.display || createHandoutPreview.dir) }}
这个文件已经存在 —— 点「加序号」换个名字
{{ createHandoutState.error }}
{{ loginError || loginNotice }}
还没有账号?
{{ registerError }}