From a71bde3452266ed01aeaf7c46f1fe6e59fe2616b Mon Sep 17 00:00:00 2001 From: Developer Date: Wed, 3 Jun 2026 20:55:38 +0800 Subject: [PATCH] =?UTF-8?q?add=20IDE=20question=20bank=20seed=20script=20(?= =?UTF-8?q?50=20questions=20for=20L1=20IDE=E5=8D=8F=E4=BD=9C=E5=BC=80?= =?UTF-8?q?=E5=8F=91)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 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 --- server/scripts/seed-ide-questions.js | 476 +++++++++++++++++++++++++++ 1 file changed, 476 insertions(+) create mode 100644 server/scripts/seed-ide-questions.js diff --git a/server/scripts/seed-ide-questions.js b/server/scripts/seed-ide-questions.js new file mode 100644 index 0000000..900f534 --- /dev/null +++ b/server/scripts/seed-ide-questions.js @@ -0,0 +1,476 @@ +/** + * 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();