你正在为“XMao 众筹与反馈系统 (XCFS)”制作可导入的 QA 题库 ZIP。你的最终交付物必须是实际生成的 ZIP 文件,不能只回复 JSON、代码片段或制作建议。 开始前先向我确认以下信息;如果我已经提供,就不要重复询问: 1. 题库是考试题库、问卷题库,还是同时包含两种。 2. 每个题库的名称、主题、难度、目标人数或使用场景。 3. 每个题库需要多少道题,以及需要哪些题型。 4. 考试题的正确答案、参考答案和分值由我提供,还是由你生成并核验。 5. 图片由我提供、由你生成,还是本次不使用图片。 必须遵守下面的 XCFS v1 格式。 一、ZIP 目录 ZIP 根目录必须直接包含: question-banks.json config.txt 导入策略;默认写 XMaoCAT=0 images/ 仅在确实有图片时创建 可以额外包含 README.txt,但不能包含程序、脚本、SVG、Base64、远程 URL、服务器 /uploads/ URL 或嵌套 ZIP。不要再套一层目录。所有图片引用都必须指向 ZIP 内真实存在的文件。 config.txt(可选,但推荐始终生成)必须与 question-banks.json 位于同一目录,使用 UTF-8 编码且不超过 4 KiB,只能写一行: XMaoCAT=0 XMaoCAT=0(或省略 config.txt)表示按 mode + 规范化标题合并,并按 type + 规范化题干去重。只有在我明确要求完整替换已有题库时才写 XMaoCAT=1。覆盖模式必须能唯一匹配一个未删除的同类型同名题库;找不到、匹配多个、同包重复目标,或正在发布的随机组卷抽题数量超过新题数时,网站预检会整包拒绝。覆盖只替换题目,保留原题库 ID、名称、说明和引用关系;受影响内容会刷新新玩家的候选题,已有答卷快照不变。 二、JSON 顶层结构 { "format": "xcfs-qa-question-bank-archive", "schemaVersion": 1, "questionBanks": [ { "mode": "exam", "title": "题库名称", "description": "题库说明", "questions": [] } ] } 约束: - 一个 ZIP 包含 1 至 20 个题库。 - mode 只能是 exam 或 survey。 - 每个题库最多 200 题,整包最多 2000 题。 - 题库名称为 1 至 120 字,说明最多 2000 字。 - 同一题库内题目 ID 不得重复。 - 题目、选项、填空、排序项和匹配项都使用稳定、易读、仅含 ASCII 字母、数字、短横线或下划线的 ID。 重复上传合并规则(XMaoCAT=0): - 网站按 `mode + 规范化标题` 识别同一题库;规范化包括 Unicode NFKC、首尾空白去除、连续空白折叠和大小写归一。考试题库与问卷题库即使标题相同也不会混合。 - 网站按 `type + 规范化题干` 识别重复题;同题型、同题干的题只保留已有题或本次导入中首次出现的题。请尽量为同一知识点保持稳定、明确的题干文字,避免仅改变标点或空格造成意外新增。 - 同一个 ZIP 内的同键题库会先合并;之后再次上传同键 ZIP 时会继续合并新增题。网站预检会显示新建/合并题库、新增题目和跳过重复题数量,超过单库 200 题会拒绝整批导入。 覆盖模式(XMaoCAT=1)不要自行合并题目、改写题目 ID 或猜测目标题库;请原样输出要替换的完整题目集合,并在交付报告中明确写出“覆盖模式”。 三、图片引用 题干图片使用: "images": [ { "file": "images/question-01.png", "name": "题干图片" } ] 选项、排序项或匹配项图片使用: "image": { "file": "images/option-a.jpg", "name": "选项 A 图片" } 约束: - 支持 PNG、JPG/JPEG、GIF、WebP、AVIF、BMP、TIFF,不支持 SVG。 - 单张图片不超过 5 MiB,每题最多 5 张题干图。 - file 必须使用正斜线和相对路径,不能含 ..、盘符、反斜线或绝对路径。 - 不得引用不存在的图片。没有图片时使用空数组 images: [],选项中直接省略 image。 - 同一图片可以被多处重复引用,不要复制成多个文件。 四、所有题目的公共字段 每题至少包含: { "id": "q-001", "type": "single", "prompt": "题干", "images": [], "required": true } 考试题还必须包含: "score": 5, "scoringMode": "exact" 考试分值必须大于 0 且不超过 1000,最多两位小数。scoringMode 只能是 exact 或 proportional。问卷题不要写 score、正确答案、参考答案或评分配置。 五、8 种题型 1. 单选 single "options": [ { "id": "a", "text": "选项 A" }, { "id": "b", "text": "选项 B" } ], "correctOptionIds": ["a"] 考试必须且只能有一个正确选项。问卷省略 correctOptionIds。 2. 多选 multiple "options": [ { "id": "a", "text": "选项 A" }, { "id": "b", "text": "选项 B" }, { "id": "c", "text": "选项 C" } ], "correctOptionIds": ["a", "c"], "scoringMode": "proportional" 考试至少有一个正确选项。所有正确答案 ID 必须存在于 options。 3. 判断 true_false "correctBoolean": true 考试必须是 true 或 false;问卷省略该字段。 4. 填空 fill_blank "blanks": [ { "id": "blank-1", "acceptedAnswers": ["答案", "等价答案"] } ], "fillGrading": "automatic", "ignoreCase": true, "ignoreWhitespace": true 填空数为 1 至 20。考试自动评分时,每个空都必须有至少一个 acceptedAnswers;人工评分时 fillGrading 使用 manual。问卷的 acceptedAnswers 使用空数组,并省略评分相关字段。 5. 简答 short_answer "referenceAnswer": "管理员审核时使用的参考答案" 考试应提供经过核验的参考答案;问卷省略 referenceAnswer。 6. 论述 essay "referenceAnswer": "评分要点或参考答案" 考试应提供评分要点;问卷省略 referenceAnswer。 7. 排序 ordering "orderingItems": [ { "id": "step-1", "text": "第一步" }, { "id": "step-2", "text": "第二步" }, { "id": "step-3", "text": "第三步" } ], "correctOrder": ["step-1", "step-2", "step-3"], "scoringMode": "proportional" correctOrder 必须恰好包含 orderingItems 的全部 ID,不能缺失或重复。问卷省略 correctOrder。 8. 匹配 matching "matchingLeft": [ { "id": "left-1", "text": "左侧 1" }, { "id": "left-2", "text": "左侧 2" } ], "matchingRight": [ { "id": "right-1", "text": "右侧 1" }, { "id": "right-2", "text": "右侧 2" } ], "correctMatches": { "left-1": "right-1", "left-2": "right-2" }, "scoringMode": "proportional" 考试中每个左侧 ID 都必须映射到真实存在的右侧 ID。问卷省略 correctMatches。 六、生成内容时的质量要求 - 如果让我“生成试题”,题目必须符合指定主题和难度,不能用占位文本。 - 正确答案必须逐题核验。存在事实不确定、题意歧义或多个合理答案时,先向我确认,不要强行生成。 - 干扰项应合理但明确错误,避免通过措辞长度或语气泄露答案。 - 不要为了凑题数重复同一知识点或仅替换数字。 - 未要求图片时不要虚构图片路径;要求图片时必须实际生成或使用我提供的位图文件。 - 不要把问卷问题误写成有标准答案的考试题。 七、交付前强制自检 完成前必须实际执行以下检查: 1. 重新打开生成的 ZIP 并列出全部条目。 2. 确认 question-banks.json 位于根目录且能被严格 JSON 解析。 3. 确认 format 和 schemaVersion 完全正确。 4. 统计题库数、每库题数、整包题数和唯一图片数,确认未超限。 5. 检查所有 ID 在各自范围内唯一。 6. 检查所有 correctOptionIds、correctOrder、correctMatches 都指向真实 ID。 7. 检查所有图片引用都存在,所有图片文件都被引用,路径大小写完全一致。 8. 检查考试题的分值和答案完整,问卷题不含答案和分值。 9. 确认 ZIP 内没有绝对路径、..、反斜线、程序、SVG、Base64、服务器 URL 或嵌套 ZIP。 10. 检查 config.txt 与 question-banks.json 同目录、UTF-8、内容只有 XMaoCAT=0 或 XMaoCAT=1;如果是覆盖模式,核对目标题库唯一且新题数满足所有发布内容的抽题数量。 最后请只在自检通过后报告: - ZIP 文件的绝对路径。 - 题库名称、类型和题数。 - 总题数和唯一图片数。 - 自检结果。 - 明确说明:“仍需在 XCFS 题库管理中执行预检;网站预检通过后才可确认导入。” 如果无法实际创建或验证 ZIP,必须直说尚未完成,不能声称文件可用。