Files
English/kouyu_english/assets/courses/A1/A1-U01.json
T
shenleiandClaude Opus 4.8 febfd30f49 feat: A1 短材料复现本单元理解词,并加入黑夜模式
课程内容
- 重写全部 21 个 A1 单元的听读材料,把本单元理解词织进听/读文本,
  单元内理解词复现率从约 20% 提升到约 77%(各单元 56–96%)。
- 修正 U01 房间号与机场大巴同为 thirty 的撞车(改为 17/30/40)。
- 校验器容差按级别读取(A1 为 8%),materials 覆盖率、字数、
  选项子串等校验全部通过;course_content_test 通过。

黑夜模式
- app_theme 拆分明/暗两套调色板,AppColors 随亮度切换;
  main 用 theme/darkTheme/themeMode + builder 镜像已解析亮度;
  主题偏好持久化到快照;进度页新增“外观主题”切换。

文档
- COURSE-PACK-JSON.md 更新 A1 词池覆盖(840/933)与材料复现约定。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-18 11:16:09 +09:00

919 lines
24 KiB
JSON
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.
{
"schemaVersion": 1,
"id": "A1-U01",
"revision": 1,
"level": "A1",
"title": "开口求助与数字",
"categories": [
"旅行",
"日常"
],
"canDo": "没听懂时礼貌求助,说 11–100 的数字,拼读字母",
"status": "draft",
"meta": {
"draftedBy": "claude-opus-5",
"draftedAt": "2026-09-17",
"sources": [
"CEFR-J Vocabulary Profile 1.5",
"CEFR-J Grammar Profile 20180315"
],
"reviews": [],
"frozenAt": null
},
"names": [],
"grammar": [
{
"id": "123-2",
"use": "active"
},
{
"id": "249",
"use": "active",
"reason": "Can you…? 是旅行中求助必需的功能问句,本单元只作为固定句块使用"
},
{
"id": "59-1",
"use": "active"
},
{
"id": "239",
"use": "active"
},
{
"id": "246",
"use": "active"
},
{
"id": "150",
"use": "receptive"
}
],
"coreItems": [
{
"id": "A1-U01-P01",
"type": "phrase",
"en": "Excuse me.",
"zh": "打扰一下。",
"sceneWord": false,
"match": [
[
"excuse me"
]
],
"example": {
"en": "Excuse me. Can you help me?",
"zh": "打扰一下,你能帮我吗?"
},
"review": {
"prompt": "你想问路人问题,先礼貌地引起对方注意。"
}
},
{
"id": "A1-U01-P02",
"type": "phrase",
"en": "Sorry, I don't understand.",
"zh": "抱歉,我没听懂。",
"sceneWord": true,
"sceneReason": "understand 在 CEFR-J 为 A2,但没听懂时求助是旅行第一天就要用的生存句",
"match": [
[
"do not understand",
"can not understand"
]
],
"example": {
"en": "Sorry, I don't understand. Can you speak slowly, please?",
"zh": "抱歉,我没听懂。你能说慢一点吗?"
},
"review": {
"prompt": "对方说得太快,你没听懂,礼貌地告诉对方。"
}
},
{
"id": "A1-U01-P03",
"type": "pattern",
"en": "Can you speak slowly, please?",
"zh": "你能说慢一点吗?",
"sceneWord": true,
"sceneReason": "slowly 在 CEFR-J 为 A2,但请对方放慢语速是零基础学习者最常用的求助句",
"match": [
[
"speak slowly",
"speak more slowly",
"slowly"
]
],
"example": {
"en": "Sorry, can you speak slowly, please?",
"zh": "抱歉,你能说慢一点吗?"
},
"review": {
"prompt": "请对方说慢一点。"
}
},
{
"id": "A1-U01-P04",
"type": "pattern",
"en": "Can you help me?",
"zh": "你能帮我吗?",
"sceneWord": false,
"match": [
[
"help me",
"help us"
]
],
"example": {
"en": "Excuse me. Can you help me?",
"zh": "打扰一下,你能帮我吗?"
},
"review": {
"prompt": "在车站,你想请工作人员帮忙。"
}
},
{
"id": "A1-U01-P05",
"type": "pattern",
"en": "What does this word mean?",
"zh": "这个词是什么意思?",
"sceneWord": false,
"match": [
[
"what does",
"what is"
],
[
"mean"
]
],
"example": {
"en": "Excuse me. What does this word mean?",
"zh": "打扰一下,这个词是什么意思?"
},
"review": {
"prompt": "你看到一个不认识的词,问它的意思。"
}
},
{
"id": "A1-U01-P06",
"type": "pattern",
"en": "Can you write it down, please?",
"zh": "你能把它写下来吗?",
"sceneWord": false,
"match": [
[
"write it down",
"write that down",
"write down"
]
],
"example": {
"en": "Sorry, I don't understand. Can you write it down, please?",
"zh": "抱歉,我没听懂。你能写下来吗?"
},
"review": {
"prompt": "你听不清一个号码,请对方写下来。"
}
},
{
"id": "A1-U01-P07",
"type": "pattern",
"en": "How do you say this in English?",
"zh": "这个用英语怎么说?",
"sceneWord": false,
"match": [
[
"how do you say"
],
[
"in english"
]
],
"example": {
"en": "Excuse me. How do you say this in English?",
"zh": "打扰一下,这个用英语怎么说?"
},
"review": {
"prompt": "指着一样东西,问它用英语怎么说。"
}
},
{
"id": "A1-U01-W01",
"type": "word",
"en": "eleven",
"zh": "十一",
"sceneWord": false,
"match": [
[
"eleven"
]
],
"example": {
"en": "Eleven or twelve?",
"zh": "十一还是十二?"
},
"review": {
"prompt": "用英语说数字 11。"
}
},
{
"id": "A1-U01-W02",
"type": "word",
"en": "twelve",
"zh": "十二",
"sceneWord": false,
"match": [
[
"twelve"
]
],
"example": {
"en": "My room number is twelve.",
"zh": "我的房间号是十二。"
},
"review": {
"prompt": "用英语说数字 12。"
}
},
{
"id": "A1-U01-P08",
"type": "pattern",
"en": "thirteen, fourteen, fifteen, sixteen, seventeen, eighteen, nineteen",
"zh": "十三到十九(-teen 重音在后)",
"sceneWord": false,
"match": [
[
"thirteen",
"fourteen",
"fifteen",
"sixteen",
"seventeen",
"eighteen",
"nineteen"
]
],
"example": {
"en": "The bus number is seventeen.",
"zh": "公交车是十七路。"
},
"review": {
"prompt": "用英语说 13 到 19 之间的一个数字,比如 15。"
}
},
{
"id": "A1-U01-P09",
"type": "pattern",
"en": "twenty, thirty, forty, fifty, sixty, seventy, eighty, ninety",
"zh": "二十到九十(-ty 重音在前),21 说成 twenty-one",
"sceneWord": false,
"match": [
[
"twenty",
"thirty",
"forty",
"fifty",
"sixty",
"seventy",
"eighty",
"ninety"
]
],
"example": {
"en": "Forty or fourteen?",
"zh": "四十还是十四?"
},
"review": {
"prompt": "用英语说 40,再说 45。"
}
},
{
"id": "A1-U01-W03",
"type": "word",
"en": "one hundred",
"zh": "一百",
"sceneWord": true,
"sceneReason": "hundred 在 CEFR-J 为 A2,但说到 100 是本单元的数字目标,下一单元的价格也要用",
"match": [
[
"hundred"
]
],
"example": {
"en": "Your key number is one hundred.",
"zh": "你的钥匙号是一百。"
},
"review": {
"prompt": "用英语说数字 100。"
}
}
],
"receptiveWords": [
{
"id": "A1-U01-R01",
"en": "repeat",
"zh": "重复"
},
{
"id": "A1-U01-R02",
"en": "pardon",
"zh": "(没听清)请再说一遍"
},
{
"id": "A1-U01-R03",
"en": "question",
"zh": "问题"
},
{
"id": "A1-U01-R04",
"en": "easy",
"zh": "容易的"
},
{
"id": "A1-U01-R05",
"en": "difficult",
"zh": "难的"
},
{
"id": "A1-U01-R06",
"en": "right",
"zh": "对的"
},
{
"id": "A1-U01-R07",
"en": "wrong",
"zh": "错的"
},
{
"id": "A1-U01-R08",
"en": "sure",
"zh": "当然;好的"
},
{
"id": "A1-U01-R09",
"en": "letter",
"zh": "字母"
},
{
"id": "A1-U01-R10",
"en": "first",
"zh": "第一个"
},
{
"id": "A1-U01-R11",
"en": "email",
"zh": "电子邮件"
},
{
"id": "A1-U01-R12",
"en": "address",
"zh": "地址"
},
{
"id": "A1-U01-R13",
"en": "listen",
"zh": "听"
},
{
"id": "A1-U01-R14",
"en": "look",
"zh": "看"
},
{
"id": "A1-U01-R15",
"en": "problem",
"zh": "问题;麻烦"
},
{
"id": "A1-U01-R16",
"en": "room",
"zh": "房间"
},
{
"id": "A1-U01-R17",
"en": "welcome",
"zh": "欢迎;不客气"
},
{
"id": "A1-U01-R18",
"en": "great",
"zh": "太好了"
},
{
"id": "A1-U01-R19",
"en": "bus",
"zh": "公交车"
},
{
"id": "A1-U01-R20",
"en": "hotel",
"zh": "酒店"
},
{
"id": "A1-U01-R21",
"en": "here",
"zh": "这里"
},
{
"id": "A1-U01-R22",
"en": "there",
"zh": "那里"
},
{
"id": "A1-U01-R23",
"en": "now",
"zh": "现在"
},
{
"id": "A1-U01-R24",
"en": "very",
"zh": "很"
},
{
"id": "A1-U01-R25",
"en": "fine",
"zh": "很好;没问题"
},
{
"id": "A1-U01-R26",
"en": "answer",
"zh": "答案;回答"
}
],
"segments": [
{
"id": "A1-U01-S1",
"title": "没听懂时怎么说",
"minutes": 12,
"itemIds": [
"A1-U01-P01",
"A1-U01-P02",
"A1-U01-P03",
"A1-U01-P04"
],
"listening": {
"text": "Excuse me. Can you help me? Sure. What's the problem? Sorry, I don't understand. Can you speak slowly, please?",
"question": "说话的人没听懂时,请对方做什么?",
"options": [
"说慢一点",
"写下来",
"再帮一次忙"
]
},
"speaking": [
{
"text": "Excuse me. Can you help me?",
"tip": "excuse 的 x 读 /ks/"
},
{
"text": "Sorry, I don't understand."
},
{
"text": "Can you speak slowly, please?"
},
{
"text": "Pardon? Can you repeat that, please?",
"tip": "pardon 只需要听懂,会说更好"
}
],
"reading": {
"text": "Anna: Excuse me. Can you help me?\nTom: Sure. What's the problem?\nAnna: I have a question. Where is the bus?\nTom: The bus is there.\nAnna: Sorry, I don't understand. Can you speak slowly, please?\nTom: Sure. The bus... is... there. Look!\nAnna: Great. Thank you very much.\nTom: You're welcome.",
"question": "Anna 没听懂时说了哪一句?",
"options": [
"Can you speak slowly, please?",
"Can you help me?",
"Where is the bus?"
]
},
"writing": {
"prompt": "你没听懂对方的话,写两句话:说没听懂,再请对方说慢一点。",
"example": "Sorry, I don't understand. Can you speak slowly, please?",
"itemIds": [
"A1-U01-P02",
"A1-U01-P03"
]
},
"independent": {
"prompt": "想象你在街上找不到路:不看提示,说出引起注意、请求帮忙、请对方说慢一点的三句话。",
"itemIds": [
"A1-U01-P01",
"A1-U01-P04",
"A1-U01-P03"
]
}
},
{
"id": "A1-U01-S2",
"title": "问词义、拼写和写下来",
"minutes": 12,
"itemIds": [
"A1-U01-P05",
"A1-U01-P06",
"A1-U01-P07"
],
"listening": {
"text": "Excuse me. What does this word mean? This one? Address. Look, this is my email address. Sorry, can you write it down, please? Sure. Here you are.",
"question": "他们在说哪个词?",
"options": [
"地址",
"电话",
"名字"
]
},
"speaking": [
{
"text": "A B C D E F G, H I J K L M N O P, Q R S T U V, W X Y Z.",
"tip": "先念熟 26 个字母,才能拼读和听懂别人拼写"
},
{
"text": "What does this word mean?"
},
{
"text": "Can you write it down, please?"
},
{
"text": "How do you say this in English?"
},
{
"text": "K, E, Y. Key.",
"tip": "拼读时一个字母一个字母地说,停顿清楚"
}
],
"reading": {
"text": "Mia: Excuse me. How do you say this in English?\nTom: It's a key.\nMia: How do you spell that?\nTom: K, E, Y. Three letters. The first letter is K.\nMia: Can you write it down, please?\nTom: Sure. Here you are. Now listen: key.\nMia: Key. Thanks!",
"question": "Tom 说第一个字母是什么?",
"options": [
"K",
"E",
"Y"
]
},
"writing": {
"prompt": "你看到一个不认识的词,写一句话问它的意思。",
"example": "Excuse me. What does this word mean?",
"itemIds": [
"A1-U01-P05"
]
},
"independent": {
"prompt": "指着身边的一样东西,用英语问它怎么说,再请对方把词写下来。",
"itemIds": [
"A1-U01-P07",
"A1-U01-P06"
]
}
},
{
"id": "A1-U01-S3",
"title": "11 到 100",
"minutes": 13,
"itemIds": [
"A1-U01-W01",
"A1-U01-W02",
"A1-U01-P08",
"A1-U01-P09",
"A1-U01-W03"
],
"listening": {
"text": "Hello. My room number is fifteen. Fifty? No, fifteen. One, five.",
"question": "房间号是多少?",
"options": [
"15",
"50",
"51"
]
},
"speaking": [
{
"text": "eleven, twelve"
},
{
"text": "thirteen, fourteen, fifteen, sixteen, seventeen, eighteen, nineteen",
"tip": "-teen 重音在后:thir-TEEN"
},
{
"text": "twenty, thirty, forty, fifty, sixty, seventy, eighty, ninety",
"tip": "-ty 重音在前:THIR-ty"
},
{
"text": "twenty-one, thirty-five, one hundred"
}
],
"reading": {
"text": "Tom: What's your room number?\nMia: Thirty.\nTom: Thirteen?\nMia: No, that's wrong. Thirty. Three, zero.\nTom: Right, thirty. And the bus number?\nMia: Eleven.",
"question": "Mia 的房间号是多少?",
"options": [
"thirty",
"thirteen",
"three"
]
},
"writing": {
"prompt": "用英文单词写出 40、14 和 100。",
"example": "forty, fourteen, one hundred",
"itemIds": [
"A1-U01-P09",
"A1-U01-P08",
"A1-U01-W03"
]
},
"independent": {
"prompt": "不看提示,用英语从 11 数到 20,再说出 30、50、99 和 100。",
"itemIds": [
"A1-U01-W01",
"A1-U01-W02",
"A1-U01-P08",
"A1-U01-P09",
"A1-U01-W03"
]
}
}
],
"scenes": [
{
"id": "A1-U01-C1",
"kind": "main",
"title": "在街上问公交车",
"learnerRole": "游客",
"aiRole": "路人",
"setting": "你在街边,想知道去酒店坐几路公交车。",
"turns": [
{
"ai": "Hello.",
"goal": "引起对方注意,请对方帮忙",
"model": "Excuse me. Can you help me?",
"zh": "打扰一下,你能帮我吗?",
"itemIds": [
"A1-U01-P01",
"A1-U01-P04"
]
},
{
"ai": "Sure. What's your question?",
"goal": "问去酒店坐哪路公交车",
"model": "Which one is the hotel bus?",
"zh": "去酒店坐哪路车?",
"itemIds": []
},
{
"ai": "The hotel bus? It's the seventeen bus. It's there.",
"goal": "说你没听懂,请对方说慢一点",
"model": "Sorry, I don't understand. Can you speak slowly, please?",
"zh": "抱歉,我没听懂。你能说慢一点吗?",
"itemIds": [
"A1-U01-P02",
"A1-U01-P03"
]
},
{
"ai": "Bus... seventeen.",
"goal": "请对方把号码写下来",
"model": "Can you write it down, please?",
"zh": "你能写下来吗?",
"itemIds": [
"A1-U01-P06"
]
},
{
"ai": "Sure. Here you are. One, seven.",
"goal": "确认号码并道谢",
"model": "Seventeen. Thank you very much!",
"zh": "十七路。非常感谢!",
"itemIds": [
"A1-U01-P08"
]
}
]
},
{
"id": "A1-U01-C2",
"kind": "variant",
"title": "向朋友问词义",
"learnerRole": "学英语的人",
"aiRole": "朋友 Tom",
"setting": "朋友发来的消息里有个词你不认识。",
"turns": [
{
"ai": "Hi! How are you?",
"goal": "回答,再问 easy 是什么意思",
"model": "I'm fine, thanks. What does easy mean?",
"zh": "我很好,谢谢。easy 是什么意思?",
"itemIds": [
"A1-U01-P05"
]
},
{
"ai": "Easy means it is not difficult.",
"goal": "请对方说慢一点",
"model": "Sorry, can you speak slowly, please?",
"zh": "抱歉,你能说慢一点吗?",
"itemIds": [
"A1-U01-P03"
]
},
{
"ai": "Easy... is not... difficult. Now, a question for me?",
"goal": "指着一样东西,问它用英语怎么说",
"model": "Okay, thanks. How do you say this in English?",
"zh": "好的,谢谢。这个用英语怎么说?",
"itemIds": [
"A1-U01-P07"
]
},
{
"ai": "Good question! The answer is a pen.",
"goal": "请对方把词写下来",
"model": "Can you write it down, please?",
"zh": "你能写下来吗?",
"itemIds": [
"A1-U01-P06"
]
}
]
},
{
"id": "A1-U01-C3",
"kind": "variant",
"title": "在酒店前台听号码",
"learnerRole": "住客",
"aiRole": "前台",
"setting": "你刚到酒店,前台很快地说了房间号。",
"turns": [
{
"ai": "Hello. Welcome to the hotel. Your room number is twelve.",
"goal": "没听清,请对方说慢一点",
"model": "Sorry, I don't understand. Can you speak slowly, please?",
"zh": "抱歉,我没听懂。你能说慢一点吗?",
"itemIds": [
"A1-U01-P02",
"A1-U01-P03"
]
},
{
"ai": "Room... twelve. One, two.",
"goal": "确认是 11 还是 12",
"model": "Eleven or twelve?",
"zh": "十一还是十二?",
"itemIds": [
"A1-U01-W01",
"A1-U01-W02"
]
},
{
"ai": "Twelve. And your key number is one hundred.",
"goal": "重复钥匙号确认",
"model": "One hundred? Okay.",
"zh": "一百?好的。",
"itemIds": [
"A1-U01-W03"
]
},
{
"ai": "Yes. And the bus is at four o'clock. Bus number fourteen.",
"goal": "确认是 14 还是 40",
"model": "Fourteen or forty?",
"zh": "十四还是四十?",
"itemIds": [
"A1-U01-P08",
"A1-U01-P09"
]
},
{
"ai": "Fourteen. One, four.",
"goal": "确认并道谢",
"model": "Fourteen. Thank you very much!",
"zh": "十四。非常感谢!",
"itemIds": [
"A1-U01-P08"
]
}
]
}
],
"tasks": [
{
"id": "A1-U01-T1",
"sceneId": "A1-U01-C1",
"goal": "向路人求助:没听懂时请对方说慢一点并写下来,最后确认公交车号码",
"itemIds": [
"A1-U01-P01",
"A1-U01-P04",
"A1-U01-P02",
"A1-U01-P03",
"A1-U01-P06",
"A1-U01-P08"
],
"slots": [
"公交车号码"
]
},
{
"id": "A1-U01-T2",
"sceneId": "A1-U01-C2",
"goal": "问一个词的意思,再问一样东西用英语怎么说",
"itemIds": [
"A1-U01-P05",
"A1-U01-P03",
"A1-U01-P07",
"A1-U01-P06"
],
"slots": [
"不认识的词",
"要问的东西"
]
},
{
"id": "A1-U01-T3",
"sceneId": "A1-U01-C3",
"goal": "听前台说号码,逐个确认容易混淆的数字",
"itemIds": [
"A1-U01-P02",
"A1-U01-P03",
"A1-U01-W01",
"A1-U01-W02",
"A1-U01-W03",
"A1-U01-P08",
"A1-U01-P09"
],
"slots": [
"房间号",
"钥匙号",
"公交车号码"
]
}
],
"materials": [
{
"id": "A1-U01-M1",
"mode": "listening",
"title": "问路人:坐几路车、住几号房",
"text": "Hello! Welcome to the hotel. Do you have a question? Sure, I can help you. Listen, please, and look here. The bus to the hotel is number seventeen. One, seven. Sorry, can you repeat that? Yes, seventeen. Is that right? Great. Your room is number thirty. Three, zero. Now, is everything fine? The airport bus is number forty. It comes every twenty minutes. Please wait here at the bus stop. Have a good day!",
"glosses": {
"stop": "(公交)站",
"minutes": "分钟",
"airport": "机场",
"wait": "等",
"comes": "来"
},
"questions": [
{
"type": "gist",
"question": "这段话主要在帮客人做什么?",
"options": [
"告诉他公交车号和房间号",
"卖给他一张车票",
"教他怎么点咖啡"
]
},
{
"type": "detail",
"question": "去酒店坐几路公交车?",
"options": [
"十七路",
"四十路",
"三十路"
]
}
]
},
{
"id": "A1-U01-M2",
"mode": "reading",
"title": "读一段对话:问词义和拼写",
"text": "Anna: Excuse me, can you help me? This word is difficult. I don't understand it. What does it mean?\nTom: This one? It's 'address'. Look, this is my email address.\nAnna: Sorry, can you repeat it? And can you spell it? I'll write the letters down.\nTom: Sure. A, D, D, R, E, S, S. The first letter is A.\nAnna: Let me read it again. Is my answer right or wrong?\nTom: It's right. No problem!\nAnna: Great, thank you. My room is number fifteen.\nTom: Fifteen or fifty?\nAnna: Fifteen. One, five.\nTom: OK, that's fine. The bus stop is over there, near the door. It's very easy.\nAnna: Great, thank you very much!",
"glosses": {
"spell": "拼读",
"stop": "(公交)站",
"door": "门",
"let": "让;Let me… 让我……",
"read": "读"
},
"questions": [
{
"type": "detail",
"question": "Anna 觉得哪个词难、不明白?",
"options": [
"address(地址)",
"hotel(酒店)",
"bus(公交车)"
]
},
{
"type": "inference",
"question": "Tom 为什么说 “Fifteen or fifty?”",
"options": [
"这两个数字听起来很像",
"他没听清房间号,其实两个都不是",
"他想换一个房间"
]
}
]
}
],
"excluded": [
{
"en": "Could you…?",
"reason": "更礼貌的请求放到 A2A1 先用 Can you…?"
}
]
}