Files
aurak/server/scripts/seed-ide-questions.js
T
Developer a71bde3452 add IDE question bank seed script (50 questions for L1 IDE协作开发)
- Copilot: 12 questions (intelligent completion, Chat modes, CLI)
- Claude Code: 12 questions (interaction methods, model selection, CLI commands)
- OpenCode: 19 questions (overview, installation, Plan/Build, commands, models)
- Debug: 7 questions (/fix, /debug, /tests, /explain commands)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-03 20:55:38 +08:00

477 lines
22 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* IDE 协作开发题库 — 种子脚本
* 运行方式:cd D:/AuraK/server && node scripts/seed-ide-questions.js
*/
const { DatabaseSync } = require('node:sqlite');
const crypto = require('crypto');
const path = require('path');
const DB_PATH = path.join(__dirname, '..', 'data', 'metadata.db');
const BANK_ID = crypto.randomUUID();
const TENANT_ID = 'a140a68e-f70a-44d3-b753-fa33d48cf234'; // 现有tenant
const ADMIN_USER_ID = '1cf8ba6d-d184-4055-ab58-99c6f38bbf93'; // admin用户
const db = new DatabaseSync(DB_PATH);
function uuid() {
return crypto.randomUUID();
}
function now() {
return new Date().toISOString().replace('T', ' ').substring(0, 22) + '000';
}
const ts = now();
// ===== 创建题库 =====
console.log('Creating IDE question bank...');
db.prepare(`
INSERT INTO question_banks (id, tenant_id, template_id, name, description, status, created_by, reviewed_by, reviewed_at, review_comment, created_at, updated_at)
VALUES (?, ?, NULL, ?, ?, 'PUBLISHED', ?, ?, ?, ?, ?, ?)
`).run(BANK_ID, TENANT_ID, 'IDE协作开发题库', 'L1课程四:IDE协作开发考核题库,包含Copilot、Claude Code、OpenCode三种工具的50道题目', ADMIN_USER_ID, ADMIN_USER_ID, ts, 'approve', ts, ts);
// ===== 生成题目 =====
const items = [];
function addItem(questionText, questionType, options, correctAnswer, keyPoints, difficulty, dimension, basis, judgment) {
items.push({
questionText,
questionType,
options: options ? JSON.stringify(options) : null,
correctAnswer,
keyPoints: JSON.stringify(keyPoints),
difficulty: difficulty || 'STANDARD',
dimension: dimension || 'IDE',
basis: basis || null,
judgment: judgment || null,
});
}
// ================================================
// 一、GitHub Copilot — 智能代码补全(4题)
// ================================================
addItem(
'以下说法是否正确?(✓ / ✗)\n\n看到 Copilot 给出的灰色补全建议后,按 Tab 键可以接受建议。',
'TRUE_FALSE', null, '✓',
['Tab键接受补全建议', 'Copilot基础操作'],
'STANDARD', 'IDE', 'GitHub Copilot 使用指南 - 第3章'
);
addItem(
'以下说法是否正确?(✓ / ✗)\n\n看到 Copilot 给出的补全建议后,按 Esc 键可以拒绝这个建议。',
'TRUE_FALSE', null, '✓',
['Esc键拒绝补全建议', 'Copilot基础操作'],
'STANDARD', 'IDE', 'GitHub Copilot 使用指南 - 第3章'
);
addItem(
'以下说法是否正确?(✓ / ✗)\n\n写函数开头后,Copilot 会自动逐行补全后续逻辑。',
'TRUE_FALSE', null, '✓',
['Copilot智能补全功能', '注释驱动代码生成'],
'STANDARD', 'IDE', 'GitHub Copilot 使用指南 - 第3章'
);
addItem(
'小张用智能补全生成了一段代码,看起来功能正常。\n\n问:在正式使用这段代码前,他应该先做什么?',
'SHORT_ANSWER', null, '审查代码逻辑,确认没有语法错误或逻辑漏洞后再使用。AI 生成的代码需要人工审核。',
['人工审核AI生成代码', '代码审查', '不直接使用AI生成的代码'],
'STANDARD', 'IDE', 'GitHub Copilot 使用指南 - 红线警告'
);
// ================================================
// 二、GitHub Copilot — Chat 三种模式(5题)
// ================================================
addItem(
'小张接手了一个老项目,打开 OrderService.java 发现有段逻辑看不太懂。他打开 Copilot Chat,想先问问这段代码是干什么的。\n\nCopilot Chat 有以下三种模式:Ask / Plan / Agent\n\n问:小张应该选择哪种模式?',
'SHORT_ANSWER', null, 'Ask(问答模式)。Ask 模式只回答问题,不修改代码。',
['Ask模式适用场景', '不修改代码的对话方式'],
'STANDARD', 'IDE', 'GitHub Copilot 使用指南 - 第3章 三种对话模式'
);
addItem(
'小李需要在三个文件中新增一个「批量删除用户」的功能,希望 AI 直接帮他完成代码修改。\n\nCopilot Chat 有以下三种模式:Ask / Plan / Agent\n\n问:小李应该选择哪种模式?',
'SHORT_ANSWER', null, 'Agent(智能代理模式)。Agent 模式可以自动跨文件修改代码。',
['Agent模式适用场景', '跨文件修改任务'],
'STANDARD', 'IDE', 'GitHub Copilot 使用指南 - 第3章 三种对话模式'
);
addItem(
'小赵想在项目中新增一个功能,但不知道涉及哪些文件、影响范围多大,想让 AI 先扫描整个项目给出方案。\n\nCopilot Chat 有以下三种模式:Ask / Plan / Agent\n\n问:小赵应该选择哪种模式?',
'SHORT_ANSWER', null, 'Plan(计划模式)。Plan 模式只出方案不动代码,适合先评估再动手。',
['Plan模式适用场景', '先规划再执行'],
'STANDARD', 'IDE', 'GitHub Copilot 使用指南 - 第3章 三种对话模式'
);
addItem(
'以下说法是否正确?(✓ / ✗)\n\nAsk 模式下,Copilot 只会回答问题,不会修改用户的代码。',
'TRUE_FALSE', null, '✓',
['Ask模式只回答不修改'],
'STANDARD', 'IDE', 'GitHub Copilot 使用指南 - 第3章'
);
addItem(
'以下说法是否正确?(✓ / ✗)\n\nAgent 模式下,Copilot 可以跨多个文件修改代码。',
'TRUE_FALSE', null, '✓',
['Agent模式跨文件修改'],
'STANDARD', 'IDE', 'GitHub Copilot 使用指南 - 第3章'
);
// ================================================
// 三、GitHub Copilot — CLI 使用(3题)
// ================================================
addItem(
'小刘想用 Copilot CLI 重构一个 Python 脚本,过程中要多次对话、逐步调优。\n\nCopilot CLI 有以下两种使用方式:交互模式(copilot)/ 非交互模式(copilot -p "指令"\n\n问:小刘应该选择哪种方式?',
'SHORT_ANSWER', null, '交互模式(copilot)。交互模式支持多轮对话,适合需要迭代的复杂任务。',
['CLI交互模式适用场景', '多轮对话重构'],
'STANDARD', 'IDE', 'GitHub Copilot 使用指南 - CLI 使用'
);
addItem(
'小钱想用 Copilot CLI 快速解释一下 git diff 的结果,不想进入交互式对话。\n\nCopilot CLI 有以下两种使用方式:交互模式(copilot)/ 非交互模式(copilot -p "指令"\n\n问:小钱应该选择哪种方式?',
'SHORT_ANSWER', null, '非交互模式(copilot -p "指令")。非交互模式适合一次性任务,快速获得结果后退出。',
['CLI非交互模式适用场景', '一次性任务'],
'STANDARD', 'IDE', 'GitHub Copilot 使用指南 - CLI使用'
);
addItem(
'小赵在 Copilot CLI 交互模式中,想清空当前对话上下文重新开始。\n\nCopilot CLI 中常用的斜杠命令有:/clear / /model / /session / /exit\n\n问:小赵应该使用哪个命令?',
'SHORT_ANSWER', null, '/clear',
['CLI斜杠命令', '/clear清空对话'],
'STANDARD', 'IDE', 'GitHub Copilot 使用指南 - CLI斜杠命令'
);
// ================================================
// 四、Claude Code — 四种交互方式(6题)
// ================================================
addItem(
'以下说法是否正确?(✓ / ✗)\n\n在 Claude Code 中输入 @src/utils.js 可以让 AI 读取该文件。',
'TRUE_FALSE', null, '✓',
['Claude Code文件引用', '@语法'],
'STANDARD', 'IDE', 'Claude Code 使用指南 - 第3章 文件引用'
);
addItem(
'以下说法是否正确?(✓ / ✗)\n\n在 Claude Code 中输入 /clear 可以清空当前对话。',
'TRUE_FALSE', null, '✓',
['Claude Code斜杠命令', '/clear清屏'],
'STANDARD', 'IDE', 'Claude Code 使用指南 - 第3章 斜杠命令'
);
addItem(
'以下说法是否正确?(✓ / ✗)\n\n在 Claude Code 中输入 !git status 可以查看 Git 状态。',
'TRUE_FALSE', null, '✓',
['Claude Code Bash模式', '!语法执行系统命令'],
'STANDARD', 'IDE', 'Claude Code 使用指南 - 第3章 Bash模式'
);
addItem(
'以下说法是否正确?(✓ / ✗)\n\n在 Claude Code 中所有操作都必须用特殊符号,自然语言输入不能完成任何功能。',
'TRUE_FALSE', null, '✗。自然语言也可以完成大部分功能,特殊符号用于特定场景。',
['自然语言可用', '特殊符号的定位'],
'STANDARD', 'IDE', 'Claude Code 使用指南 - 第3章 交互方式'
);
addItem(
'以下说法是否正确?(✓ / ✗)\n\n在 Claude Code 中输入 !npm run dev 可以启动开发服务器。',
'TRUE_FALSE', null, '✓',
['Claude Code Bash模式', '!语法启动开发服务器'],
'STANDARD', 'IDE', 'Claude Code 使用指南 - 第3章 Bash模式'
);
addItem(
'以下说法是否正确?(✓ / ✗)\n\n在 Claude Code 中输入 /help 可以查看所有可用命令。',
'TRUE_FALSE', null, '✓',
['Claude Code斜杠命令', '/help帮助'],
'STANDARD', 'IDE', 'Claude Code 使用指南 - 第3章 斜杠命令'
);
// ================================================
// 五、Claude Code — 模型选择与切换(3题)
// ================================================
addItem(
'Claude Code 的三个模型特点如下:\n- Sonnet:主力工程师,日常编码首选\n- Haiku:响应极快、成本低,适合简单任务\n- Opus:处理超级复杂的难题,智商最高\n\n小陈需要修复一个非常复杂的系统架构 Bug。\n\n问:他应该选择哪个模型?',
'SHORT_ANSWER', null, 'Opus',
['Opus模型适用场景', '复杂难题'],
'STANDARD', 'IDE', 'Claude Code 使用指南 - 第3章 模型选择'
);
addItem(
'Claude Code 的三个模型特点如下:\n- Sonnet:主力工程师,日常编码首选\n- Haiku:响应极快、成本低,适合简单任务\n- Opus:处理超级复杂的难题,智商最高\n\n小陈在做日常的 CRUD 接口开发。\n\n问:他应该选择哪个模型?',
'SHORT_ANSWER', null, 'Sonnet',
['Sonnet模型适用场景', '日常编码'],
'STANDARD', 'IDE', 'Claude Code 使用指南 - 第3章 模型选择'
);
addItem(
'Claude Code 的三个模型特点如下:\n- Sonnet:主力工程师,日常编码首选\n- Haiku:响应极快、成本低,适合简单任务\n- Opus:处理超级复杂的难题,智商最高\n\n小陈想快速查一下某个 JavaScript 数组方法的语法。\n\n问:他应该选择哪个模型?',
'SHORT_ANSWER', null, 'Haiku',
['Haiku模型适用场景', '快速简单任务'],
'STANDARD', 'IDE', 'Claude Code 使用指南 - 第3章 模型选择'
);
// ================================================
// 六、Claude Code — CLI 命令(3题)
// ================================================
addItem(
'小赵的 Claude Code 会话因为终端意外关闭了,想接着刚才的对话继续。\n\nClaude CLI 有以下命令:claude / claude --continue / claude --resume\n\n问:小赵应该用哪个命令?',
'SHORT_ANSWER', null, 'claude --continue(或 claude -c)。该命令用于恢复上次意外关闭的会话。',
['恢复会话', '--continue参数'],
'STANDARD', 'IDE', 'Claude Code 使用指南 - 第3章 CLI命令'
);
addItem(
'小钱想用 Claude Code 快速解释一下 git diff 的结果,不想进入交互式对话。\n\nClaude CLI 有以下命令:claude / claude -p "指令" / claude --resume\n\n问:小钱应该用哪个命令?',
'SHORT_ANSWER', null, 'claude -p "指令"。-p 参数用于一次性任务,适合快速执行。',
['一次性任务', '-p参数'],
'STANDARD', 'IDE', 'Claude Code 使用指南 - 第3章 CLI命令'
);
addItem(
'以下说法是否正确?(✓ / ✗)\n\nclaude --resume 可以从历史会话列表中选择恢复。',
'TRUE_FALSE', null, '✓',
['恢复历史会话', '--resume参数'],
'STANDARD', 'IDE', 'Claude Code 使用指南 - 第3章 CLI命令'
);
// ================================================
// 七、OpenCode — 整体认知(3题)
// ================================================
addItem(
'以下说法是否正确?(✓ / ✗)\n\nOpenCode 像一位身边的搭档,可以直接读取项目文件、修改代码、执行命令。',
'TRUE_FALSE', null, '✓',
['OpenCode核心定位', 'AI编码代理'],
'STANDARD', 'IDE', 'OpenCode 使用指南 - 第1章 核心定位'
);
addItem(
'以下说法是否正确?(✓ / ✗)\n\n传统 AI 像远程顾问,给你建议但需要你自己动手;OpenCode 可以直接帮你操作。',
'TRUE_FALSE', null, '✓',
['OpenCode与传统AI区别', '直接操作能力'],
'STANDARD', 'IDE', 'OpenCode 使用指南 - 第1章'
);
addItem(
'小周想用 OpenCode 读取包含客户个人信息的代码文件,让 AI 帮忙优化。\n\n问:这种做法是否合适?为什么?',
'SHORT_ANSWER', null, '不合适。客户个人信息属于敏感数据,严禁输入任何公共 AI 工具。应该先对数据进行脱敏处理,用虚构数据或占位符替代后再使用。',
['安全合规', '敏感数据保护', '数据脱敏'],
'STANDARD', 'IDE', 'OpenCode 使用指南 - 红线警告'
);
// ================================================
// 八、OpenCode — 安装与使用方式(4题)
// ================================================
addItem(
'OpenCode 有以下四种使用方式:\n- 终端版 — 轻量启动快,适合有基础的用户\n- 桌面应用 — 界面直观,适合新手\n- IDE 扩展 — 深度绑定编辑器\n- Web 版 — 浏览器访问,可远程部署\n\n小周是新手,不喜欢操作命令行,想找一个界面直观的方式。\n\n问:他应该选择哪种方式?',
'SHORT_ANSWER', null, '桌面应用',
['OpenCode使用方式选择', '桌面应用适合新手'],
'STANDARD', 'IDE', 'OpenCode 使用指南 - 第2章 使用方式'
);
addItem(
'OpenCode 有以下四种使用方式:终端版 / 桌面应用 / IDE 扩展 / Web 版\n\n小刘平时用 VS Code 写代码,希望不离开编辑器就能用 OpenCode。\n\n问:他应该选择哪种方式?',
'SHORT_ANSWER', null, 'IDE 扩展',
['OpenCode IDE扩展', '编辑器集成'],
'STANDARD', 'IDE', 'OpenCode 使用指南 - 第2章 使用方式'
);
addItem(
'OpenCode 有以下四种使用方式:终端版 / 桌面应用 / IDE 扩展 / Web 版\n\n小马需要在远程服务器上开发,只能通过命令行操作。\n\n问:他应该选择哪种方式?',
'SHORT_ANSWER', null, '终端版',
['OpenCode终端版', '远程服务器开发'],
'STANDARD', 'IDE', 'OpenCode 使用指南 - 第2章 使用方式'
);
addItem(
'以下说法是否正确?(✓ / ✗)\n\n在终端中输入 opencode 可以启动 OpenCode。',
'TRUE_FALSE', null, '✓',
['OpenCode启动命令'],
'STANDARD', 'IDE', 'OpenCode 使用指南 - 第2章 安装'
);
// ================================================
// 九、OpenCode — Plan / Build 工作模式(5题)
// ================================================
addItem(
'小周接手了一个新项目,想先让 OpenCode 分析项目结构,还不想修改任何文件。\n\nOpenCode 有以下两种工作模式:Plan / Build\n\n问:小周应该选择哪种模式?',
'SHORT_ANSWER', null, 'Plan(计划模式)。Plan 模式下 AI 只能读取文件,不会修改代码。',
['Plan模式', '只读分析'],
'STANDARD', 'IDE', 'OpenCode 使用指南 - 第3章 Plan模式'
);
addItem(
'小周已经确认了修改方案,想让 OpenCode 开始实际修改代码。\n\nOpenCode 有以下两种工作模式:Plan / Build\n\n问:小周应该选择哪种模式?',
'SHORT_ANSWER', null, 'Build(构建模式)。Build 模式下 AI 可以编辑文件和执行命令。',
['Build模式', '实际代码修改'],
'STANDARD', 'IDE', 'OpenCode 使用指南 - 第3章 Build模式'
);
addItem(
'以下说法是否正确?(✓ / ✗)\n\nPlan 模式下 AI 只能读取文件,不会修改任何代码。',
'TRUE_FALSE', null, '✓',
['Plan模式只读特性'],
'STANDARD', 'IDE', 'OpenCode 使用指南 - 第3章'
);
addItem(
'以下说法是否正确?(✓ / ✗)\n\nBuild 模式下 AI 可以编辑文件和执行命令。',
'TRUE_FALSE', null, '✓',
['Build模式可写特性'],
'STANDARD', 'IDE', 'OpenCode 使用指南 - 第3章'
);
addItem(
'小周让 OpenCode 在 Build 模式下修改了多个文件。\n\n问:修改完成后,他应该先做什么?',
'SHORT_ANSWER', null, '审查 AI 修改的代码,确认逻辑正确后再使用。AI 生成的代码不能直接部署到生产环境。',
['代码审查', 'AI生成代码需人工审核'],
'STANDARD', 'IDE', 'OpenCode 使用指南 - 安全原则'
);
// ================================================
// 十、OpenCode — 常用命令(5题)
// ================================================
addItem(
'小周用 OpenCode 修改了代码,但发现改错了,想撤销刚才的修改。\n\nOpenCode 中有以下命令:/undo / /redo / /clear / /init\n\n问:他应该使用哪个命令?',
'SHORT_ANSWER', null, '/undo',
['OpenCode撤销命令', '/undo'],
'STANDARD', 'IDE', 'OpenCode 使用指南 - 第3章 撤销更改'
);
addItem(
'小周撤销了修改后又觉得还是刚才改得好,想恢复回来。\n\nOpenCode 中有以下命令:/undo / /redo / /clear / /init\n\n问:他应该使用哪个命令?',
'SHORT_ANSWER', null, '/redo',
['OpenCode重做命令', '/redo'],
'STANDARD', 'IDE', 'OpenCode 使用指南 - 第3章'
);
addItem(
'小周想在新项目目录中创建 AGENTS.md 文件,让 OpenCode 了解项目结构。\n\nOpenCode 中有以下命令:/undo / /redo / /clear / /init\n\n问:他应该使用哪个命令?',
'SHORT_ANSWER', null, '/init',
['OpenCode初始化', '/init命令'],
'STANDARD', 'IDE', 'OpenCode 使用指南 - 第4章 项目初始化'
);
addItem(
'小周想看看 OpenCode 当前有哪些可用的斜杠命令和快捷键。\n\nOpenCode 中有以下命令:/help / /models / /connect / /exit\n\n问:他应该使用哪个命令?',
'SHORT_ANSWER', null, '/help',
['OpenCode帮助', '/help命令'],
'STANDARD', 'IDE', 'OpenCode 使用指南 - 第3章 斜杠命令'
);
addItem(
'小周想切换 OpenCode 正在使用的 AI 模型。\n\nOpenCode 中有以下命令:/help / /models / /connect / /exit\n\n问:他应该使用哪个命令?',
'SHORT_ANSWER', null, '/models',
['OpenCode模型切换', '/models命令'],
'STANDARD', 'IDE', 'OpenCode 使用指南 - 第3章 模型选择'
);
// ================================================
// 十一、OpenCode — 模型选择(2题)
// ================================================
addItem(
'以下说法是否正确?(✓ / ✗)\n\nOpenCode 内置多款免费模型,启动后可以直接选择使用,无需配置 API 密钥。',
'TRUE_FALSE', null, '✓',
['OpenCode免费模型', '无需API密钥'],
'STANDARD', 'IDE', 'OpenCode 使用指南 - 第3章 模型'
);
addItem(
'以下说法是否正确?(✓ / ✗)\n\n使用第三方 LLM 提供商(如 OpenAI、Anthropic)需要自行承担 API 费用。',
'TRUE_FALSE', null, '✓',
['第三方LLM费用', 'API成本'],
'STANDARD', 'IDE', 'OpenCode 使用指南 - 第3章 模型'
);
// ================================================
// 十二、Debug — 调试助手(7题)
// ================================================
addItem(
'小吴的代码运行时报错了,不知道问题出在哪,想让 Copilot Chat 帮他定位和解决 Bug。\n\nCopilot Chat 中有以下命令:/fix / /tests / /explain / /debug\n\n问:他应该使用哪个命令?',
'SHORT_ANSWER', null, '/debug。该命令专用于帮助定位和解决 Bug。',
['/debug命令', '定位解决Bug'],
'STANDARD', 'IDE', 'GitHub Copilot 使用指南 - 第3章 内置命令'
);
addItem(
'小吴已经知道问题在哪了,想让 Copilot 直接修复选中的代码。\n\nCopilot Chat 中有以下命令:/fix / /tests / /explain / /debug\n\n问:他应该使用哪个命令?',
'SHORT_ANSWER', null, '/fix。该命令用于自动修复代码问题。',
['/fix命令', '自动修复代码'],
'STANDARD', 'IDE', 'GitHub Copilot 使用指南 - 第3章 内置命令'
);
addItem(
'以下说法是否正确?(✓ / ✗)\n\n在 Copilot Chat 中输入 /tests 可以生成选中代码的单元测试。',
'TRUE_FALSE', null, '✓',
['/tests命令', '生成单元测试'],
'STANDARD', 'IDE', 'GitHub Copilot 使用指南 - 第3章 内置命令'
);
addItem(
'以下说法是否正确?(✓ / ✗)\n\n在 Copilot Chat 中输入 /explain 可以让 AI 解释选中代码的逻辑。',
'TRUE_FALSE', null, '✓',
['/explain命令', '解释代码逻辑'],
'STANDARD', 'IDE', 'GitHub Copilot 使用指南 - 第3章 内置命令'
);
addItem(
'以下说法是否正确?(✓ / ✗)\n\n/debug 命令可以帮助定位和解决 Bug。',
'TRUE_FALSE', null, '✓',
['/debug命令功能'],
'STANDARD', 'IDE', 'GitHub Copilot 使用指南 - 第3章 内置命令'
);
addItem(
'小吴用 /fix 命令让 Copilot 自动修复了代码。\n\n问:修复完成后,他应该先做什么?',
'SHORT_ANSWER', null, '审查修复后的代码,确认修改正确、逻辑无误后再使用。',
['代码审查', '修复后验证'],
'STANDARD', 'IDE', 'GitHub Copilot 使用指南 - 安全原则'
);
addItem(
'小吴遇到一个 Bug,想把包含数据库连接串的配置文件贴到 Copilot Chat 中用 /debug 分析。\n\n问:这种做法是否合适?为什么?',
'SHORT_ANSWER', null, '不合适。数据库连接串属于敏感信息,严禁输入公共 AI 工具。应该用脱敏数据或占位符替代后再进行分析。',
['安全合规', '敏感数据保护', '脱敏处理'],
'STANDARD', 'IDE', 'GitHub Copilot 使用指南 - 红线警告'
);
// ===== 批量插入题目 =====
console.log(`Inserting ${items.length} questions...`);
const insertItem = db.prepare(`
INSERT INTO question_bank_items (id, bank_id, question_text, questionType, options, correctAnswer, key_points, difficulty, dimension, basis, judgment, status, created_by, created_at, updated_at)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 'PUBLISHED', ?, ?, ?)
`);
for (const item of items) {
insertItem.run(
uuid(),
BANK_ID,
item.questionText,
item.questionType,
item.options,
item.correctAnswer,
item.keyPoints,
item.difficulty,
item.dimension,
item.basis,
item.judgment,
ADMIN_USER_ID,
ts,
ts
);
}
console.log(`Successfully inserted ${items.length} IDE questions into bank ${BANK_ID}`);
db.close();