"""Curated, fact-checked starter bank for 知识竞速 (Knowledge Rush). Content is data (like KB articles), Chinese. ~10 verified single-answer questions per category; the AI generator and admin CRUD extend it at scale. Kept as a plain module so both the seeding migration and tests can reference it without duplicating the payload. Each entry: prompt / options (4, keyed A–D) / correct_key / explanation / category. Answers are deliberately uncontroversial to avoid shipping a wrong "correct" answer. """ from __future__ import annotations from app.domains.arcade.trivia_models import ( CAT_CHINESE_CULTURE, CAT_COMMON_SENSE, CAT_GEOGRAPHY, CAT_HISTORY, CAT_LIFE, CAT_SCIENCE, ) def _q(prompt, opts, correct, explanation, category): return { "prompt": prompt, "options": [{"key": k, "text": t} for k, t in zip("ABCD", opts, strict=False)], "correct_key": correct, "explanation": explanation, "category": category, } _STARTER_SEED: list[dict] = [ # ── 常识 common sense ── _q("一天有多少个小时?", ["12", "24", "36", "48"], "B", "一天有 24 小时。", CAT_COMMON_SENSE), _q("水的化学式是?", ["CO₂", "O₂", "H₂O", "NaCl"], "C", "水由两个氢原子和一个氧原子组成,化学式为 H₂O。", CAT_COMMON_SENSE), _q("传统说法里彩虹有几种颜色?", ["5", "6", "7", "9"], "C", "赤橙黄绿青蓝紫,共七色。", CAT_COMMON_SENSE), _q("成年人正常体温大约是多少摄氏度?", ["30℃", "37℃", "40℃", "42℃"], "B", "正常体温约 36.5–37℃。", CAT_COMMON_SENSE), _q("在中国,拨打哪个号码呼叫急救(救护车)?", ["110", "119", "120", "122"], "C", "120 是急救电话,110 报警、119 火警。", CAT_COMMON_SENSE), _q("人体面积最大的器官是?", ["心脏", "肝脏", "皮肤", "肺"], "C", "皮肤是人体最大的器官。", CAT_COMMON_SENSE), _q("一年有多少个月?", ["10", "11", "12", "13"], "C", "一年有 12 个月。", CAT_COMMON_SENSE), _q("交通信号灯中表示「停止」的是什么颜色?", ["红色", "绿色", "黄色", "蓝色"], "A", "红灯停、绿灯行、黄灯警示。", CAT_COMMON_SENSE), _q("一星期有几天?", ["5", "6", "7", "8"], "C", "一星期有 7 天。", CAT_COMMON_SENSE), _q("指南针的指针通常指向哪个方向?", ["东", "南", "南北", "西"], "C", "指南针依地磁场指示南北方向。", CAT_COMMON_SENSE), # ── 历史 history ── _q("中国历史上第一个统一的中央集权王朝是?", ["夏朝", "商朝", "秦朝", "汉朝"], "C", "公元前 221 年秦始皇统一六国,建立秦朝。", CAT_HISTORY), _q("第二次世界大战结束于哪一年?", ["1918", "1939", "1945", "1949"], "C", "1945 年第二次世界大战结束。", CAT_HISTORY), _q("美国第一任总统是谁?", ["林肯", "华盛顿", "杰斐逊", "富兰克林"], "B", "乔治·华盛顿是美国首任总统。", CAT_HISTORY), _q("中华人民共和国成立于哪一年?", ["1911", "1945", "1949", "1978"], "C", "1949 年 10 月 1 日中华人民共和国成立。", CAT_HISTORY), _q("下列哪一项不属于中国古代「四大发明」?", ["造纸术", "印刷术", "地动仪", "指南针"], "C", "四大发明为造纸术、印刷术、火药、指南针;地动仪不在其列。", CAT_HISTORY), _q("唐朝的都城(长安)是今天的哪座城市?", ["北京", "洛阳", "西安", "南京"], "C", "唐都长安即今陕西西安。", CAT_HISTORY), _q("中国历史上唯一的女皇帝是?", ["慈禧", "武则天", "吕后", "王昭君"], "B", "武则天是中国历史上唯一正式称帝的女皇帝。", CAT_HISTORY), _q("文艺复兴最早兴起于哪个国家?", ["法国", "英国", "德国", "意大利"], "D", "文艺复兴最早发源于意大利。", CAT_HISTORY), _q("秦始皇统一六国大约在公元前哪一年?", ["前 476 年", "前 221 年", "前 202 年", "前 800 年"], "B", "公元前 221 年秦统一六国。", CAT_HISTORY), _q("「贞观之治」出现在哪个朝代?", ["汉朝", "唐朝", "宋朝", "明朝"], "B", "「贞观之治」是唐太宗李世民时期的盛世。", CAT_HISTORY), # ── 科学 science ── _q("空气中含量最高的气体是?", ["氧气", "氮气", "二氧化碳", "氢气"], "B", "空气约 78% 是氮气、21% 是氧气。", CAT_SCIENCE), _q("标准大气压下水的沸点是多少摄氏度?", ["90℃", "100℃", "110℃", "120℃"], "B", "1 标准大气压下水在 100℃ 沸腾。", CAT_SCIENCE), _q("地球围绕什么天体公转?", ["月球", "火星", "太阳", "银河系中心"], "C", "地球围绕太阳公转,周期约一年。", CAT_SCIENCE), _q("声音能否在真空中传播?", ["能", "不能", "只有低音能", "只有高音能"], "B", "声音靠介质传播,真空中无介质,不能传播。", CAT_SCIENCE), _q("人体内负责泵送血液的器官是?", ["肝脏", "肺", "心脏", "肾脏"], "C", "心脏通过收缩泵血,推动血液循环。", CAT_SCIENCE), _q("元素周期表中排第一位(原子序数 1)的元素是?", ["氦", "氢", "氧", "碳"], "B", "氢的原子序数是 1,位列周期表之首。", CAT_SCIENCE), _q("植物把光能转化为化学能的过程叫?", ["呼吸作用", "蒸腾作用", "光合作用", "分解作用"], "C", "光合作用利用叶绿素把光能转化为有机物。", CAT_SCIENCE), _q("光在真空中的速度约为每秒多少?", ["3 万公里", "30 万公里", "300 万公里", "3 千公里"], "B", "光速约每秒 30 万公里(≈3×10⁸ m/s)。", CAT_SCIENCE), _q("DNA 的中文全称是?", ["核糖核酸", "脱氧核糖核酸", "氨基酸", "腺苷酸"], "B", "DNA 即脱氧核糖核酸,携带遗传信息。", CAT_SCIENCE), _q("彩虹的形成主要是光的什么现象?", ["反射", "折射与色散", "衍射", "偏振"], "B", "阳光经水滴折射与色散分解成七色。", CAT_SCIENCE), # ── 地理 geography ── _q("中国最长的河流是?", ["黄河", "长江", "珠江", "淮河"], "B", "长江全长约 6300 公里,是中国第一长河。", CAT_GEOGRAPHY), _q("世界最高峰是?", ["乞力马扎罗山", "珠穆朗玛峰", "勃朗峰", "富士山"], "B", "珠穆朗玛峰海拔约 8848 米,为世界最高峰。", CAT_GEOGRAPHY), _q("中华人民共和国的首都是?", ["上海", "北京", "广州", "西安"], "B", "北京是中国的首都。", CAT_GEOGRAPHY), _q("世界上面积最大的国家是?", ["中国", "美国", "加拿大", "俄罗斯"], "D", "俄罗斯是世界面积最大的国家。", CAT_GEOGRAPHY), _q("面积最大的大洋是?", ["大西洋", "印度洋", "太平洋", "北冰洋"], "C", "太平洋是地球上面积最大的大洋。", CAT_GEOGRAPHY), _q("中国面积最大的省级行政区是?", ["西藏", "内蒙古", "新疆", "青海"], "C", "新疆维吾尔自治区面积约 166 万平方公里,居各省区之首。", CAT_GEOGRAPHY), _q("日本的首都是?", ["大阪", "京都", "东京", "名古屋"], "C", "东京是日本的首都。", CAT_GEOGRAPHY), _q("澳大利亚主要位于哪个半球?", ["北半球", "南半球", "东半球正中", "西半球"], "B", "澳大利亚位于南半球。", CAT_GEOGRAPHY), _q("世界上最大的热带沙漠是?", ["戈壁沙漠", "撒哈拉沙漠", "塔克拉玛干沙漠", "阿拉伯沙漠"], "B", "撒哈拉沙漠是世界最大的热带沙漠。", CAT_GEOGRAPHY), _q("长江与黄河相比,哪条更长?", ["黄河", "长江", "一样长", "无法比较"], "B", "长江比黄河更长,是中国第一、世界第三长河。", CAT_GEOGRAPHY), # ── 中华文化 chinese culture ── _q("端午节主要纪念哪位历史人物?", ["李白", "屈原", "杜甫", "岳飞"], "B", "端午节相传为纪念投江的爱国诗人屈原。", CAT_CHINESE_CULTURE), _q("中秋节的传统食物是?", ["粽子", "月饼", "汤圆", "饺子"], "B", "中秋赏月、吃月饼,象征团圆。", CAT_CHINESE_CULTURE), _q("十二生肖中排在第一位的是?", ["牛", "虎", "鼠", "龙"], "C", "十二生肖顺序:鼠牛虎兔……鼠居首。", CAT_CHINESE_CULTURE), _q("「但愿人长久,千里共婵娟」出自哪位词人?", ["李清照", "辛弃疾", "苏轼", "陆游"], "C", "出自苏轼《水调歌头·明月几时有》。", CAT_CHINESE_CULTURE), _q("下列哪一部不属于中国「四大名著」?", ["红楼梦", "西游记", "聊斋志异", "水浒传"], "C", "四大名著为红楼梦、西游记、水浒传、三国演义;聊斋志异不在其列。", CAT_CHINESE_CULTURE), _q("京剧脸谱中,红色通常象征人物的什么品格?", ["奸诈", "忠勇", "鲁莽", "阴险"], "B", "红脸多表忠勇正义,如关羽。", CAT_CHINESE_CULTURE), _q("农历正月初一是什么节日?", ["元宵节", "春节", "清明节", "重阳节"], "B", "农历正月初一为春节,是最重要的传统节日。", CAT_CHINESE_CULTURE), _q("「四书」不包括下列哪一部?", ["大学", "中庸", "论语", "诗经"], "D", "四书为《大学》《中庸》《论语》《孟子》;《诗经》属「五经」。", CAT_CHINESE_CULTURE), _q("书法中「颜筋柳骨」的「颜」指哪位书法家?", ["颜回", "颜真卿", "颜之推", "柳公权"], "B", "「颜」指颜真卿,「柳」指柳公权。", CAT_CHINESE_CULTURE), _q("春节北方地区除夕夜常吃的传统食物是?", ["月饼", "粽子", "饺子", "青团"], "C", "北方有除夕吃饺子的习俗,寓意辞旧迎新。", CAT_CHINESE_CULTURE), # ── 生活百科 life ── _q("食盐的主要成分是?", ["碳酸钙", "氯化钠", "硫酸镁", "碳酸氢钠"], "B", "食盐的主要成分是氯化钠(NaCl)。", CAT_LIFE), _q("油锅着火时,正确的做法是?", ["直接泼水", "盖上锅盖隔绝空气", "用扇子扇", "端起锅跑"], "B", "泼水会引起爆燃;盖锅盖隔绝氧气最安全。", CAT_LIFE), _q("被开水轻度烫伤,第一时间应该?", ["涂牙膏", "用流动冷水冲", "挑破水泡", "抹酱油"], "B", "立即用流动冷水冲 15–20 分钟降温最有效。", CAT_LIFE), _q("正确洗手时,用肥皂搓洗建议至少多少秒?", ["3 秒", "20 秒", "1 分钟", "5 分钟"], "B", "世卫组织建议流动水加肥皂搓洗至少 20 秒。", CAT_LIFE), _q("大量食用隔夜的绿叶菜,可能摄入较多的有害物是?", ["亚硝酸盐", "反式脂肪", "黄曲霉素", "酒精"], "A", "隔夜绿叶菜久放会积累较多亚硝酸盐,宜现做现吃。", CAT_LIFE), _q("现代智能手机普遍使用哪种电池?", ["铅酸电池", "镍镉电池", "锂离子电池", "干电池"], "C", "现代手机使用锂离子(含锂聚合物)电池。", CAT_LIFE), _q("发现有人中暑,应先把他转移到什么环境?", ["太阳下", "阴凉通风处", "热水里", "密闭房间"], "B", "应迅速移到阴凉通风处并降温补水。", CAT_LIFE), _q("冰箱冷藏室的适宜温度大约是?", ["-18℃", "0℃", "4℃", "15℃"], "C", "冷藏室约 4℃,冷冻室约 -18℃。", CAT_LIFE), _q("食品「保质期」的含义是?", ["过期即有毒", "此期限内品质有保证", "生产日期", "最长存放年限"], "B", "保质期指在规定条件下品质有保证的期限,并非「过期即毒」。", CAT_LIFE), _q("轻微感冒时,多喝温水有什么帮助?", ["能杀死病毒", "有助补水、缓解不适", "完全没用", "会加重病情"], "B", "多喝水有助补充体液、缓解症状,但不能直接杀病毒。", CAT_LIFE), ] def _bulk_bank() -> list[dict]: """The large curated bank, one module per category under ``seedbank/``. Kept separate from the hand-written starter set so content can be authored/reviewed per category; deduped by prompt against the starter.""" from app.domains.arcade.seedbank import ( trivia_chinese_culture, trivia_common_sense, trivia_geography, trivia_history, trivia_life, trivia_science, ) out: list[dict] = [] for mod in ( trivia_common_sense, trivia_history, trivia_science, trivia_geography, trivia_chinese_culture, trivia_life, ): out.extend(mod.QUESTIONS) return out # Starter set first (stable ordering), then the bulk bank, deduped by prompt. def _assemble() -> list[dict]: seen: set[str] = set() merged: list[dict] = [] for q in [*_STARTER_SEED, *_bulk_bank()]: p = q["prompt"] if p in seen: continue seen.add(p) merged.append(q) return merged TRIVIA_SEED: list[dict] = _assemble() __all__ = ["TRIVIA_SEED"]