fix(big-question): 小问改为与后台一致的「选填」,模板说明补充常见疑问
去掉 Excel 导入里「三个小问必须全部填写」的硬拦截:后台手工录入的弹窗标签写明 「可留空」,且 validateQuestionPayload 对小问无非空校验 ⇒ 导入比手工更严会让测试人员 困惑「手工能录、Excel 被拒」。现行为与后台一致,「建议三问写全」改为在模板说明中提示。 模板「填写说明」新增【常见疑问】5 问(29 行 → 46 行),直接回答:排序/状态填 0 是否有误、为何建议状态 0、导入后是否会一直不参与考试、题干与题干HTML 填哪个、小问能否留空。 「排序」补上「数值越小越靠前」(此前说明缺失,与后台弹窗标签不一致); 「状态」补上「1=启用(参与随机抽题)· 0=停用」的完整语义与启用操作路径。
This commit is contained in:
@@ -491,12 +491,12 @@ class BigQuestionService extends Service {
|
|||||||
['标题', '必填', '大题标题,不超过 200 字。同一组内标题不可重复(重复的行会被跳过并报错)'],
|
['标题', '必填', '大题标题,不超过 200 字。同一组内标题不可重复(重复的行会被跳过并报错)'],
|
||||||
['题干', '选填', '纯文本题干。若题目需要表格/加粗等富文本,请把 HTML 填进右侧「题干HTML」列;两列都填时以 HTML 为准'],
|
['题干', '选填', '纯文本题干。若题目需要表格/加粗等富文本,请把 HTML 填进右侧「题干HTML」列;两列都填时以 HTML 为准'],
|
||||||
['题干HTML', '选填', '富文本 HTML,可用 Excel 单元格编辑。例:<p>系统由 <b>3</b> 部分组成</p>。留空则使用「题干」纯文本'],
|
['题干HTML', '选填', '富文本 HTML,可用 Excel 单元格编辑。例:<p>系统由 <b>3</b> 部分组成</p>。留空则使用「题干」纯文本'],
|
||||||
['小问1', '必填', '第 1 小问题干'],
|
['小问1', '选填', '第 1 小问题干(考生作答区上方的提示文字)。可留空,但建议三问都写全'],
|
||||||
['小问2', '必填', '第 2 小问题干'],
|
['小问2', '选填', '第 2 小问题干。可留空,但建议三问都写全'],
|
||||||
['小问3', '必填', '第 3 小问题干'],
|
['小问3', '选填', '第 3 小问题干。可留空,但建议三问都写全'],
|
||||||
['每小题分值', '选填', '每道小问的分值,默认 10。大题总分 = 每小题分值 × 3'],
|
['每小题分值', '选填', '每道小问的分值,默认 10。大题总分 = 每小题分值 × 3'],
|
||||||
['排序', '选填', '数字,缺省 0'],
|
['排序', '选填', '大题在管理列表里的显示顺序:**数值越小越靠前**。缺省 0;想让某题排在前面就填 1、2、3'],
|
||||||
['状态', '选填', '1 = 启用(参与随机抽题);0 = 停用'],
|
['状态', '选填', '★ **1 = 启用(参与考生随机抽题)· 0 = 停用(留在题库但不参与抽题)**。本模板建议填 0,理由见下方【常见疑问】'],
|
||||||
[],
|
[],
|
||||||
['【组别说明】'],
|
['【组别说明】'],
|
||||||
['本文件不需要填写组别。导入时以「管理端当前选择的组别」为准,表格里的组别一律忽略。'],
|
['本文件不需要填写组别。导入时以「管理端当前选择的组别」为准,表格里的组别一律忽略。'],
|
||||||
@@ -509,11 +509,28 @@ class BigQuestionService extends Service {
|
|||||||
['【常见被拒原因(导入时会逐行报错)】'],
|
['【常见被拒原因(导入时会逐行报错)】'],
|
||||||
['1. 标题为空,或超过 200 字'],
|
['1. 标题为空,或超过 200 字'],
|
||||||
['2. 同一组内标题重复 → 跳过并报错'],
|
['2. 同一组内标题重复 → 跳过并报错'],
|
||||||
['3. 三个小问未填全'],
|
['3. 每小题分值不是大于 0 的数字'],
|
||||||
['4. 每小题分值不是大于 0 的数字'],
|
['4. 题干或小问中出现「参考答案 / 标准答案 / 评分标准 / 评分细则 / 答案要点」等字样 → 判定为泄题并拒绝'],
|
||||||
['5. 题干或小问中出现「参考答案 / 标准答案 / 评分标准 / 评分细则 / 答案要点」等字样 → 判定为泄题并拒绝'],
|
['5. 题干中直接给出可照抄的成品答案(如带具体参数的指令示例)→ 判定为泄题并拒绝'],
|
||||||
['6. 题干中直接给出可照抄的成品答案(如带具体参数的指令示例)→ 判定为泄题并拒绝'],
|
|
||||||
[' 说明:题干提供「指令格式定义」是允许的,给出「能照抄的成品」才构成泄题。'],
|
[' 说明:题干提供「指令格式定义」是允许的,给出「能照抄的成品」才构成泄题。'],
|
||||||
|
[],
|
||||||
|
['【常见疑问】'],
|
||||||
|
['Q1:「排序」和「状态」都填 0,是填错了吗?'],
|
||||||
|
['A:不是填错。排序 0 = 默认显示顺序(数值越小越靠前,可按需改成 1、2、3);'],
|
||||||
|
[' 状态 0 = 停用,即题目已入库但暂不参与抽题。'],
|
||||||
|
['Q2:为什么建议「状态」填 0 而不是 1?'],
|
||||||
|
['A:这是有意设计的保险。考生抽到题目时,题目会被「快照固化」,事后再怎么改题库,'],
|
||||||
|
[' 也影响不到已经抽到该题的考生。所以未经人工校对的题不应该直接进考卷 ——'],
|
||||||
|
[' 先以停用状态入库,校对无误后再启用。'],
|
||||||
|
['Q3:导入后题目会不会一直不参与考试?'],
|
||||||
|
['A:不会。到管理端「题库管理 → 综合大题」列表点「编辑」,'],
|
||||||
|
[' 把「状态」开关拨到「启用」并保存,该题即刻参与抽题。'],
|
||||||
|
['Q4:「题干」和「题干HTML」填哪个?'],
|
||||||
|
['A:普通文字填「题干」即可;需要表格、加粗等排版时填「题干HTML」(写 HTML 代码,'],
|
||||||
|
[' 建议写成一行避免换行被拆断)。两列都填时以「题干HTML」为准。'],
|
||||||
|
[' 例:<p>北斗三号由 <b>空间段</b>、<b>地面段</b>、<b>用户段</b> 三部分组成。</p>'],
|
||||||
|
['Q5:小问可以留空吗?'],
|
||||||
|
['A:可以,与后台手工录入一致。但建议三问都写全,否则该小问考生作答区没有提示文字。'],
|
||||||
];
|
];
|
||||||
const notesWs = XLSX.utils.aoa_to_sheet(notes);
|
const notesWs = XLSX.utils.aoa_to_sheet(notes);
|
||||||
notesWs['!cols'] = [{ wch: 16 }, { wch: 10 }, { wch: 92 }];
|
notesWs['!cols'] = [{ wch: 16 }, { wch: 10 }, { wch: 92 }];
|
||||||
@@ -590,11 +607,9 @@ class BigQuestionService extends Service {
|
|||||||
result.errors.push({ row: rowIndex, message: `标题「${row.title}」在本组已存在,跳过(避免重复题)` });
|
result.errors.push({ row: rowIndex, message: `标题「${row.title}」在本组已存在,跳过(避免重复题)` });
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (!row.sub1 || !row.sub2 || !row.sub3) {
|
// 小问允许留空:与后台手工录入保持一致(弹窗标签写明「可留空」,且
|
||||||
result.skipped++;
|
// validateQuestionPayload 对小问无非空校验),故 Excel 导入也不在此处拦截。
|
||||||
result.errors.push({ row: rowIndex, message: '三个小问必须全部填写' });
|
// 说明 sheet 中仍提示「建议三问都写全」,由录入人自行把握。
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 题干:HTML 列优先;未填时用纯文本包 <p>
|
// 题干:HTML 列优先;未填时用纯文本包 <p>
|
||||||
const html = row.descriptionHtml;
|
const html = row.descriptionHtml;
|
||||||
|
|||||||
Reference in New Issue
Block a user