feat(SQL 题): 增删改题除了第 1 组,其余测试数据可以一行都不改——用来抓学生多改(WHERE 写漏、写宽)
Deploy / deploy (push) Canceled after 0s
Deploy / deploy (push) Canceled after 0s
原来每组数据都必须有被标准答案改到的行,所以「这组里没有研发部,看学生会不会把别的部门也改了」 这种测试数据建不了。现在只有第 1 组(题面上给学生看的那组)还要求改到行;其余组一行都没改时 出题页写「一行都没改」、预览写「执行后所有表都没有变化」。删掉第 1 组、别的组顶上来时自动按 新位置重查。判题本来就不管这一条,不受影响。 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
2cb39fd96b
commit
033a245abb
9 files changed
+54
-9
No files matched your search
@@ -221,8 +221,12 @@ function onTagsChange(tags: string[]) {
|
||||
|
||||
// ---------------------------------------------------------------- 测试数据:自动重跑
|
||||
|
||||
/** 一组数据跑出来的结果取决于这三样,任何一样变了,原来的结果就作废 */
|
||||
const signatureOf = (g: ScriptGroup) => JSON.stringify([form.answer, form.sqlConfig.mode, g.sql])
|
||||
/**
|
||||
* 一组数据跑出来的结果取决于这几样,任何一样变了,原来的结果就作废。
|
||||
* 排在第一也算:删掉第 1 组之后,原来的第 2 组成了题面展示的那组,增删改题得重查它改没改到行
|
||||
*/
|
||||
const signatureOf = (g: ScriptGroup) =>
|
||||
JSON.stringify([form.answer, form.sqlConfig.mode, g.sql, groups.value[0] === g])
|
||||
|
||||
function statusOf(g: ScriptGroup): GroupStatus {
|
||||
if (!g.sql.trim()) return "empty"
|
||||
@@ -243,6 +247,7 @@ async function run(g: ScriptGroup) {
|
||||
initSql: g.sql,
|
||||
refSql: form.answer,
|
||||
mode: form.sqlConfig.mode,
|
||||
shown: groups.value[0] === g,
|
||||
})
|
||||
} catch (err) {
|
||||
errorRaw =
|
||||
@@ -261,7 +266,8 @@ function runAll() {
|
||||
}
|
||||
|
||||
watchDebounced(
|
||||
() => [form.answer, form.sqlConfig.mode, groups.value.map((g) => g.sql)] as const,
|
||||
// 带上 key:删组、挪了谁排第一也要重跑(见 signatureOf)
|
||||
() => [form.answer, form.sqlConfig.mode, groups.value.map((g) => `${g.key}:${g.sql}`)] as const,
|
||||
runAll,
|
||||
{ debounce: 600, deep: true },
|
||||
)
|
||||
|
||||
@@ -33,7 +33,7 @@ export function explainSqlError(message: string) {
|
||||
[/(\d+) values for (\d+) columns/, (m) => `一行给了 ${m[1]} 个值,但表有 ${m[2]} 列`],
|
||||
]
|
||||
if (message.includes("标准答案未修改任何表数据")) {
|
||||
return "标准答案在这组数据上一行都没改:增删改题的每组数据里都要有会被改到的行"
|
||||
return "标准答案在这组数据上一行都没改:第 1 组是题面上给学生看的,里面要有会被改到的行"
|
||||
}
|
||||
for (const [pattern, say] of rules) {
|
||||
const match = message.match(pattern)
|
||||
|
||||
Reference in new issue
Block a user