Files
English/kouyu_english/assets/courses/A1/A1-U20.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

858 lines
22 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-U20",
"revision": 1,
"level": "A1",
"title": "打电话与留言",
"categories": [
"日常"
],
"canDo": "留下姓名、号码和简短信息",
"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",
"use": "active"
},
{
"id": "141",
"use": "active",
"reason": "只用 I'll call again later 表示马上决定的事"
},
{
"id": "237",
"use": "receptive"
},
{
"id": "117",
"use": "active"
}
],
"coreItems": [
{
"id": "A1-U20-P01",
"type": "phrase",
"en": "Hello, this is Chen.",
"zh": "你好,我是陈。",
"sceneWord": false,
"match": [
[
"this is"
]
],
"example": {
"en": "Hello, this is Anna from room 305.",
"zh": "你好,我是 305 房间的安娜。"
},
"review": {
"prompt": "打电话时先说你是谁。"
}
},
{
"id": "A1-U20-P02",
"type": "phrase",
"en": "Can I speak to Mr Brown?",
"zh": "我能和布朗先生通话吗?",
"sceneWord": false,
"match": [
[
"speak to"
]
],
"example": {
"en": "Can I speak to Lucy, please?",
"zh": "请问露西在吗?"
},
"review": {
"prompt": "打电话找你的朋友汤姆。"
}
},
{
"id": "A1-U20-P03",
"type": "phrase",
"en": "Who's calling, please?",
"zh": "请问您是哪位?",
"sceneWord": false,
"match": [
[
"who's calling",
"who is calling"
]
],
"example": {
"en": "Hello. Who's calling?",
"zh": "你好,请问是哪位?"
},
"review": {
"prompt": "接电话时问对方是谁。"
}
},
{
"id": "A1-U20-P04",
"type": "phrase",
"en": "Hold on, please.",
"zh": "请稍等。",
"sceneWord": false,
"match": [
[
"hold on"
]
],
"example": {
"en": "Hold on. I can get him.",
"zh": "稍等,我去叫他。"
},
"review": {
"prompt": "请对方在电话里稍等。"
}
},
{
"id": "A1-U20-P05",
"type": "phrase",
"en": "He's not here right now.",
"zh": "他现在不在。",
"sceneWord": false,
"match": [
[
"not here right now"
]
],
"example": {
"en": "Sorry, she's not here right now.",
"zh": "抱歉,她现在不在。"
},
"review": {
"prompt": "告诉打电话的人你妈妈不在。"
}
},
{
"id": "A1-U20-P06",
"type": "phrase",
"en": "Can I leave a message?",
"zh": "我可以留个言吗?",
"sceneWord": false,
"match": [
[
"leave a message"
]
],
"example": {
"en": "Do you want to leave a message?",
"zh": "您要留言吗?"
},
"review": {
"prompt": "要找的人不在,问能不能留言。"
}
},
{
"id": "A1-U20-P07",
"type": "phrase",
"en": "Can you call me back?",
"zh": "你能给我回电话吗?",
"sceneWord": false,
"match": [
[
"call me back",
"call you back"
]
],
"example": {
"en": "I can call you back later.",
"zh": "我晚点给你回电话。"
},
"review": {
"prompt": "请对方给你回电话。"
}
},
{
"id": "A1-U20-P08",
"type": "phrase",
"en": "What's your mobile number?",
"zh": "你的手机号是多少?",
"sceneWord": false,
"match": [
[
"mobile number",
"phone number"
]
],
"example": {
"en": "My mobile number is 138 2046 7751.",
"zh": "我的手机号是 138 2046 7751。"
},
"review": {
"prompt": "问对方的手机号。"
}
},
{
"id": "A1-U20-P09",
"type": "phrase",
"en": "Sorry, I can't hear you.",
"zh": "抱歉,我听不见你说话。",
"sceneWord": false,
"match": [
[
"can't hear"
]
],
"example": {
"en": "I can't hear you. Can you speak slowly?",
"zh": "我听不见,你能慢点说吗?"
},
"review": {
"prompt": "电话信号不好,说你听不见。"
}
},
{
"id": "A1-U20-P10",
"type": "phrase",
"en": "Sorry, wrong number.",
"zh": "抱歉,打错了。",
"sceneWord": false,
"match": [
[
"wrong number"
]
],
"example": {
"en": "I think you have the wrong number.",
"zh": "我想你打错了。"
},
"review": {
"prompt": "有人打错电话,告诉他打错了。"
}
},
{
"id": "A1-U20-P11",
"type": "phrase",
"en": "I'll call again later.",
"zh": "我晚点再打。",
"sceneWord": false,
"match": [
[
"call again",
"call later"
]
],
"example": {
"en": "OK, I'll call later.",
"zh": "好,我晚点再打。"
},
"review": {
"prompt": "对方忙,说你晚点再打。"
}
},
{
"id": "A1-U20-P12",
"type": "phrase",
"en": "Please text me.",
"zh": "请给我发短信。",
"sceneWord": true,
"sceneReason": "text 为 A2 动词,旅行中发短信确认地址很常用",
"match": [
[
"text me"
]
],
"example": {
"en": "Text me the address, please.",
"zh": "请把地址发短信给我。"
},
"review": {
"prompt": "请朋友把时间发短信给你。"
}
}
],
"receptiveWords": [
{
"id": "A1-U20-R01",
"en": "telephone",
"zh": "电话"
},
{
"id": "A1-U20-R02",
"en": "mail",
"zh": "邮件"
},
{
"id": "A1-U20-R03",
"en": "ring",
"zh": "(电话)响"
},
{
"id": "A1-U20-R04",
"en": "voice",
"zh": "声音"
},
{
"id": "A1-U20-R05",
"en": "conversation",
"zh": "对话"
},
{
"id": "A1-U20-R06",
"en": "talk",
"zh": "说话"
},
{
"id": "A1-U20-R07",
"en": "mind",
"zh": "介意(Never mind."
},
{
"id": "A1-U20-R08",
"en": "grandma",
"zh": "奶奶;外婆"
},
{
"id": "A1-U20-R09",
"en": "grandpa",
"zh": "爷爷;外公"
},
{
"id": "A1-U20-R10",
"en": "mum",
"zh": "妈妈"
},
{
"id": "A1-U20-R11",
"en": "haircut",
"zh": "理发"
},
{
"id": "A1-U20-R12",
"en": "class",
"zh": "课;班"
},
{
"id": "A1-U20-R13",
"en": "lesson",
"zh": "课"
},
{
"id": "A1-U20-R14",
"en": "course",
"zh": "课程"
},
{
"id": "A1-U20-R15",
"en": "test",
"zh": "考试"
},
{
"id": "A1-U20-R16",
"en": "college",
"zh": "学院"
},
{
"id": "A1-U20-R17",
"en": "club",
"zh": "俱乐部"
},
{
"id": "A1-U20-R18",
"en": "group",
"zh": "小组"
},
{
"id": "A1-U20-R19",
"en": "owner",
"zh": "老板;主人"
},
{
"id": "A1-U20-R20",
"en": "worker",
"zh": "工作人员"
}
],
"segments": [
{
"id": "A1-U20-S1",
"title": "打电话找人",
"minutes": 13,
"itemIds": [
"A1-U20-P01",
"A1-U20-P02",
"A1-U20-P03",
"A1-U20-P04",
"A1-U20-P05"
],
"listening": {
"text": "Hello? Hello, this is Chen. Can I speak to Mr Brown? Who's calling, please? Chen, from London. Hold on, please. ... Sorry, he's not here right now.",
"question": "布朗先生现在怎么样?",
"options": [
"不在",
"在开会",
"马上来接电话"
]
},
"speaking": [
{
"text": "Hello, this is Chen."
},
{
"text": "Can I speak to Mr Brown?"
},
{
"text": "Who's calling, please?"
},
{
"text": "Hold on, please.",
"tip": "hold on 连读成 /həʊl dɒn/"
},
{
"text": "He's not here right now."
}
],
"reading": {
"text": "Phone talk\nThe phone rings. Grandma answers.\nGrandma: Hello?\nLeo: Hi Grandma, this is Leo. Can I speak to Mum?\nGrandma: Hold on... Sorry, she's not here right now. She's at her dance class. Do you want to talk to Grandpa?\nLeo: Yes, please!\nIt's a short conversation, but Grandma loves Leo's voice.",
"question": "妈妈现在在哪里?",
"options": [
"在舞蹈课上",
"在上班",
"在家里"
]
},
"writing": {
"prompt": "写两句话:说你是谁,再问能不能和汤姆通话。",
"example": "Hello, this is Chen. Can I speak to Tom?",
"itemIds": [
"A1-U20-P01",
"A1-U20-P02"
]
},
"independent": {
"prompt": "你接到电话,要找的人不在,用英语问对方是谁并说那人不在。",
"itemIds": [
"A1-U20-P03",
"A1-U20-P04",
"A1-U20-P05"
]
}
},
{
"id": "A1-U20-S2",
"title": "留言和回电",
"minutes": 13,
"itemIds": [
"A1-U20-P06",
"A1-U20-P07",
"A1-U20-P08",
"A1-U20-P11",
"A1-U20-P12"
],
"listening": {
"text": "Can I leave a message? Sure. Can you ask Lucy to call me back? What's your mobile number? It's 139 5520 8864. OK. Or I'll call again later.",
"question": "打电话的人希望露西做什么?",
"options": [
"给他回电话",
"发邮件",
"去找他"
]
},
"speaking": [
{
"text": "Can I leave a message?"
},
{
"text": "Can you call me back?"
},
{
"text": "What's your mobile number?"
},
{
"text": "I'll call again later."
},
{
"text": "Please text me."
}
],
"reading": {
"text": "Phone messages\nFor: Mr Brown\nFrom: Sara, the owner of Sun Hair\nMessage: Your haircut is on Friday at 3 pm. Please call her back.\n-\nFor: Ella\nFrom: Kate, the College English Club\nMessage: The group lesson is on Monday. Your test is next week. Please text her or send an email or mail. Her number is 136 2210 5547.",
"question": "艾拉的考试在什么时候?",
"options": [
"下周",
"周一",
"周五"
]
},
"writing": {
"prompt": "写两句话:问能不能留言,请对方回电话。",
"example": "Can I leave a message? Can you call me back?",
"itemIds": [
"A1-U20-P06",
"A1-U20-P07"
]
},
"independent": {
"prompt": "用英语给不在的朋友留言:说你是谁,请他回电话,并留下手机号。",
"itemIds": [
"A1-U20-P01",
"A1-U20-P06",
"A1-U20-P07",
"A1-U20-P08"
]
}
},
{
"id": "A1-U20-S3",
"title": "电话里的问题",
"minutes": 11,
"itemIds": [
"A1-U20-P09",
"A1-U20-P10"
],
"listening": {
"text": "Hello? Is that Max? Sorry, wrong number. Oh, sorry! ... Hello, Max? Sorry, I can't hear you. Can you speak slowly?",
"question": "第一个电话出了什么问题?",
"options": [
"打错了",
"听不见",
"没人接"
]
},
"speaking": [
{
"text": "Sorry, I can't hear you."
},
{
"text": "Sorry, wrong number."
},
{
"text": "Can you spell your name, please?"
}
],
"reading": {
"text": "Phone help for your trip\nCan't hear the worker on the telephone? Say \"Sorry, I can't hear you.\" Ask them to speak slowly or to spell a word.\nWrong number? Say sorry. Never mind!\nA course or a class on the phone is not easy. Text or email is OK too.",
"question": "电话里听不清时可以怎么做?",
"options": [
"请对方慢点说或拼出来",
"马上挂电话",
"大声喊"
]
},
"writing": {
"prompt": "写两句话:说你听不见,请对方慢点说。",
"example": "Sorry, I can't hear you. Can you speak slowly?",
"itemIds": [
"A1-U20-P09"
]
},
"independent": {
"prompt": "有人打错电话找“Max”,用英语礼貌地告诉他打错了。",
"itemIds": [
"A1-U20-P10",
"A1-U20-P03"
]
}
}
],
"scenes": [
{
"id": "A1-U20-C1",
"kind": "main",
"title": "打电话到朋友家",
"learnerRole": "你",
"aiRole": "朋友的家人",
"setting": "你打电话找朋友汤姆,接电话的是他的家人。",
"turns": [
{
"ai": "Hello?",
"goal": "说你是谁",
"model": "Hello, this is Chen.",
"zh": "你好,我是陈。",
"itemIds": [
"A1-U20-P01"
]
},
{
"ai": "Hi, Chen.",
"goal": "问能不能和汤姆通话",
"model": "Can I speak to Tom, please?",
"zh": "请问汤姆在吗?",
"itemIds": [
"A1-U20-P02"
]
},
{
"ai": "Sorry, he's not here right now.",
"goal": "问能不能留言",
"model": "Can I leave a message?",
"zh": "我可以留个言吗?",
"itemIds": [
"A1-U20-P06"
]
},
{
"ai": "Sure.",
"goal": "请他回电话",
"model": "Can you ask him to call me back?",
"zh": "你能让他给我回电话吗?",
"itemIds": [
"A1-U20-P07"
]
},
{
"ai": "OK. What's your mobile number?",
"goal": "留下号码,说晚点再打",
"model": "It's 138 2046 7751. Or I'll call again later.",
"zh": "138 2046 7751。或者我晚点再打。",
"itemIds": [
"A1-U20-P11"
]
}
]
},
{
"id": "A1-U20-C2",
"kind": "variant",
"title": "接电话",
"learnerRole": "接电话的人",
"aiRole": "打电话来的人",
"setting": "你在朋友家,电话响了,你帮忙接电话。",
"turns": [
{
"ai": "Hello, can I speak to Lily?",
"goal": "问对方是谁",
"model": "Who's calling, please?",
"zh": "请问您是哪位?",
"itemIds": [
"A1-U20-P03"
]
},
{
"ai": "This is Ben, from her English class.",
"goal": "请对方稍等",
"model": "Hold on, please.",
"zh": "请稍等。",
"itemIds": [
"A1-U20-P04"
]
},
{
"ai": "OK.",
"goal": "说她现在不在",
"model": "Sorry, she's not here right now.",
"zh": "抱歉,她现在不在。",
"itemIds": [
"A1-U20-P05"
]
},
{
"ai": "Oh. Can she call me back?",
"goal": "问对方的手机号",
"model": "Sure. What's your mobile number?",
"zh": "好的。你的手机号是多少?",
"itemIds": [
"A1-U20-P08"
]
},
{
"ai": "It's 136... hello?",
"goal": "说听不见",
"model": "Sorry, I can't hear you.",
"zh": "抱歉,我听不见你说话。",
"itemIds": [
"A1-U20-P09"
]
}
]
},
{
"id": "A1-U20-C3",
"kind": "variant",
"title": "打错电话和发短信",
"learnerRole": "你",
"aiRole": "陌生人/朋友",
"setting": "你打给酒店想确认地址,结果先打错,再打给朋友。",
"turns": [
{
"ai": "Hello?",
"goal": "说你是谁,问能不能和 Sam 通话",
"model": "Hello, this is Chen. Can I speak to Sam?",
"zh": "你好,我是陈。能和 Sam 通话吗?",
"itemIds": [
"A1-U20-P01",
"A1-U20-P02"
]
},
{
"ai": "Sam? There's no Sam here.",
"goal": "说抱歉,打错了",
"model": "Oh, sorry. Wrong number.",
"zh": "哦,抱歉,打错了。",
"itemIds": [
"A1-U20-P10"
]
},
{
"ai": "No problem. Bye.",
"goal": "说你晚点再打",
"model": "OK, I'll call again later.",
"zh": "好,我晚点再打。",
"itemIds": [
"A1-U20-P11"
]
},
{
"ai": "(Sam) Hi Chen! Sorry, I'm busy right now.",
"goal": "请他发短信给你地址",
"model": "Please text me the address.",
"zh": "请把地址发短信给我。",
"itemIds": [
"A1-U20-P12"
]
},
{
"ai": "Sure. I can text you in five minutes.",
"goal": "请他之后给你回电话",
"model": "Thanks. Can you call me back tonight?",
"zh": "谢谢。你今晚能给我回电话吗?",
"itemIds": [
"A1-U20-P07"
]
}
]
}
],
"tasks": [
{
"id": "A1-U20-T1",
"sceneId": "A1-U20-C1",
"goal": "打电话找人,对方不在时留言",
"itemIds": [
"A1-U20-P01",
"A1-U20-P02",
"A1-U20-P06",
"A1-U20-P07",
"A1-U20-P11"
],
"slots": [
"你是谁",
"找谁",
"留言内容"
]
},
{
"id": "A1-U20-T2",
"sceneId": "A1-U20-C2",
"goal": "帮别人接电话并记下对方信息",
"itemIds": [
"A1-U20-P03",
"A1-U20-P04",
"A1-U20-P05",
"A1-U20-P08",
"A1-U20-P09"
],
"slots": [
"对方是谁",
"手机号"
]
},
{
"id": "A1-U20-T3",
"sceneId": "A1-U20-C3",
"goal": "处理打错电话,并请朋友发短信",
"itemIds": [
"A1-U20-P01",
"A1-U20-P02",
"A1-U20-P10",
"A1-U20-P11",
"A1-U20-P12",
"A1-U20-P07"
],
"slots": [
"打错",
"短信",
"回电"
]
}
],
"materials": [
{
"id": "A1-U20-M1",
"mode": "listening",
"title": "一条电话留言",
"text": "Hello, this is a telephone message for Mr Brown. This is Chen from the hotel. Your phone rang, but I couldn't reach you, so I'll leave a short message. Sorry if my voice is not clear. I'm calling about your reservation for next week. My grandma and grandpa will visit, so I moved your room. Please call me back for a short conversation, or text me. My mobile number is 138 — let me repeat, one, three, eight. I have an English class and a haircut this afternoon, so if I don't answer, call again later. Never mind if it's late. Thank you. Bye.",
"glosses": {
"reach": "联系到",
"moved": "换了",
"couldn't": "不能(过去式)",
"clear": "清楚的"
},
"questions": [
{
"type": "gist",
"question": "这条留言是谁留给谁的?",
"options": [
"Chen 留给 Mr Brown",
"Mr Brown 留给 Chen",
"Anna 留给 Ben"
]
},
{
"type": "detail",
"question": "留言的人希望对方做什么?",
"options": [
"给他回电话",
"来酒店",
"发邮件"
]
}
]
},
{
"id": "A1-U20-M2",
"mode": "reading",
"title": "读一段对话:打电话留言",
"text": "Chen: Hello, this is Chen. Can I speak to Mr Brown?\nWorker: Hold on, please... Sorry, he's not here right now. This is his co-worker.\nChen: Can I leave a message? I couldn't reach him by mail.\nWorker: Of course. I'm the office worker today.\nChen: Please ask him to call me back. It's about a college course and a club test next week.\nWorker: Sorry, I can't hear you. Your voice is not clear. Can you say the number again?\nChen: Sure. My mobile is 139... I'll text you too. Is Mr Brown the owner?\nWorker: Yes, he owns the group. Never mind, I'll tell him after his class.\nChen: Thank you. When is he back?\nWorker: Maybe this afternoon, after his lesson.\nChen: OK, I'll call again later. Goodbye.",
"glosses": {
"staff": "员工,服务员",
"goodbye": "再见",
"co-worker": "同事",
"owns": "拥有",
"office": "办公室",
"reach": "联系到",
"clear": "清楚的"
},
"questions": [
{
"type": "detail",
"question": "Mr Brown 在吗?",
"options": [
"不在",
"在,正在开会",
"在,马上来"
]
},
{
"type": "detail",
"question": "Chen 希望 Mr Brown 做什么?",
"options": [
"给他回电话",
"来酒店",
"发邮件给他"
]
}
]
}
],
"excluded": [
{
"en": "voicemail",
"reason": "不在 CEFR-J 表中;A1 用 leave a message 表达"
}
]
}