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

918 lines
23 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-U15",
"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": "239",
"use": "active"
},
{
"id": "146",
"use": "active"
},
{
"id": "21",
"use": "active"
},
{
"id": "22",
"use": "receptive"
}
],
"coreItems": [
{
"id": "A1-U15-P01",
"type": "phrase",
"en": "I have a reservation.",
"zh": "我有预订。",
"sceneWord": true,
"sceneReason": "reservation 为 B1,但入住酒店第一句就要用",
"match": [
[
"have a reservation"
]
],
"example": {
"en": "Hello, I have a reservation for tonight.",
"zh": "你好,我预订了今晚的房间。"
},
"review": {
"prompt": "到了前台,说你有预订。"
}
},
{
"id": "A1-U15-P02",
"type": "phrase",
"en": "It's under the name Chen.",
"zh": "预订名字是陈。",
"sceneWord": false,
"match": [
[
"under the name"
]
],
"example": {
"en": "The reservation is under the name Wang.",
"zh": "预订用的是王这个名字。"
},
"review": {
"prompt": "告诉前台预订用的名字。"
}
},
{
"id": "A1-U15-P03",
"type": "phrase",
"en": "for three nights",
"zh": "住三晚",
"sceneWord": false,
"match": [
[
"night",
"nights"
]
],
"example": {
"en": "I'm staying for one night.",
"zh": "我住一晚。"
},
"review": {
"prompt": "说你要住两晚。"
}
},
{
"id": "A1-U15-P04",
"type": "phrase",
"en": "Can I check in now?",
"zh": "我现在可以入住吗?",
"sceneWord": false,
"match": [
[
"check in"
]
],
"example": {
"en": "What time can I check in?",
"zh": "我几点可以入住?"
},
"review": {
"prompt": "问现在能不能入住。"
}
},
{
"id": "A1-U15-P05",
"type": "phrase",
"en": "What time is check-out?",
"zh": "几点退房?",
"sceneWord": false,
"match": [
[
"check-out",
"check out"
]
],
"example": {
"en": "Can I check out late?",
"zh": "我可以晚点退房吗?"
},
"review": {
"prompt": "问几点退房。"
}
},
{
"id": "A1-U15-P06",
"type": "phrase",
"en": "Do I fill in this form?",
"zh": "我要填这张表吗?",
"sceneWord": false,
"match": [
[
"fill in"
]
],
"example": {
"en": "Please fill in this form.",
"zh": "请填一下这张表。"
},
"review": {
"prompt": "问要不要填表。"
}
},
{
"id": "A1-U15-P07",
"type": "phrase",
"en": "Here is your key.",
"zh": "这是您的钥匙。",
"sceneWord": false,
"match": [
[
"key",
"keys"
]
],
"example": {
"en": "Can I have two keys?",
"zh": "可以给我两把钥匙吗?"
},
"review": {
"prompt": "要两把房间钥匙。"
}
},
{
"id": "A1-U15-P08",
"type": "phrase",
"en": "What's the Wi-Fi password?",
"zh": "Wi-Fi 密码是多少?",
"sceneWord": true,
"sceneReason": "password 为 B1,住酒店时几乎每次都要问",
"match": [
[
"password"
]
],
"example": {
"en": "What's the password, please?",
"zh": "请问密码是多少?"
},
"review": {
"prompt": "问 Wi-Fi 密码。"
}
},
{
"id": "A1-U15-P09",
"type": "phrase",
"en": "What time is breakfast?",
"zh": "早饭几点?",
"sceneWord": false,
"match": [
[
"time is breakfast"
]
],
"example": {
"en": "What time is breakfast tomorrow?",
"zh": "明天早饭几点?"
},
"review": {
"prompt": "问早饭时间。"
}
},
{
"id": "A1-U15-P10",
"type": "phrase",
"en": "Where is the elevator?",
"zh": "电梯在哪里?",
"sceneWord": true,
"sceneReason": "elevator 为 A2,酒店里找路必需",
"match": [
[
"elevator"
]
],
"example": {
"en": "The elevator is next to the bar.",
"zh": "电梯在酒吧旁边。"
},
"review": {
"prompt": "问电梯在哪里。"
}
},
{
"id": "A1-U15-P11",
"type": "phrase",
"en": "Can I have a quiet room?",
"zh": "能给我一间安静的房间吗?",
"sceneWord": false,
"match": [
[
"quiet room"
]
],
"example": {
"en": "Can I have a quiet room with a view?",
"zh": "能给我一间安静、有景色的房间吗?"
},
"review": {
"prompt": "要一间安静的房间。"
}
},
{
"id": "A1-U15-P12",
"type": "phrase",
"en": "Can you keep my bags?",
"zh": "能帮我寄存行李吗?",
"sceneWord": false,
"match": [
[
"keep my bags",
"keep my bag"
]
],
"example": {
"en": "Can you keep my bags until three?",
"zh": "能帮我寄存行李到三点吗?"
},
"review": {
"prompt": "退房后请前台寄存行李。"
}
},
{
"id": "A1-U15-P13",
"type": "phrase",
"en": "Can I pay later?",
"zh": "我可以晚点付钱吗?",
"sceneWord": false,
"match": [
[
"pay later"
]
],
"example": {
"en": "Can I pay later, at check-out?",
"zh": "我可以退房时再付吗?"
},
"review": {
"prompt": "问能不能晚点付钱。"
}
}
],
"receptiveWords": [
{
"id": "A1-U15-R01",
"en": "guest",
"zh": "客人"
},
{
"id": "A1-U15-R02",
"en": "code",
"zh": "代码;密码"
},
{
"id": "A1-U15-R03",
"en": "swimming pool",
"zh": "游泳池"
},
{
"id": "A1-U15-R04",
"en": "bath",
"zh": "浴缸;洗澡"
},
{
"id": "A1-U15-R05",
"en": "hall",
"zh": "大厅"
},
{
"id": "A1-U15-R06",
"en": "clock",
"zh": "钟"
},
{
"id": "A1-U15-R07",
"en": "sea",
"zh": "大海"
},
{
"id": "A1-U15-R08",
"en": "beach",
"zh": "海滩"
},
{
"id": "A1-U15-R09",
"en": "tower",
"zh": "塔"
},
{
"id": "A1-U15-R10",
"en": "garbage",
"zh": "垃圾"
},
{
"id": "A1-U15-R11",
"en": "note",
"zh": "便条"
},
{
"id": "A1-U15-R12",
"en": "copy",
"zh": "复印件"
},
{
"id": "A1-U15-R13",
"en": "rule",
"zh": "规定"
},
{
"id": "A1-U15-R14",
"en": "smoking",
"zh": "吸烟"
},
{
"id": "A1-U15-R15",
"en": "bar",
"zh": "酒吧"
},
{
"id": "A1-U15-R16",
"en": "receptionist",
"zh": "前台接待员"
},
{
"id": "A1-U15-R17",
"en": "double",
"zh": "双人的"
},
{
"id": "A1-U15-R18",
"en": "view",
"zh": "景色"
},
{
"id": "A1-U15-R19",
"en": "balcony",
"zh": "阳台"
},
{
"id": "A1-U15-R20",
"en": "surname",
"zh": "姓"
},
{
"id": "A1-U15-R21",
"en": "ID",
"zh": "身份证件"
},
{
"id": "A1-U15-R22",
"en": "high",
"zh": "高的"
},
{
"id": "A1-U15-R23",
"en": "star",
"zh": "星级;星星"
},
{
"id": "A1-U15-R24",
"en": "hill",
"zh": "小山"
},
{
"id": "A1-U15-R25",
"en": "own",
"zh": "自己的"
}
],
"segments": [
{
"id": "A1-U15-S1",
"title": "办理入住",
"minutes": 13,
"itemIds": [
"A1-U15-P01",
"A1-U15-P02",
"A1-U15-P03",
"A1-U15-P04",
"A1-U15-P06"
],
"listening": {
"text": "Good afternoon. I have a reservation. It's under the name Chen. For three nights. Yes, a double room. Can I check in now? Sure. Please fill in this form.",
"question": "客人住几晚?",
"options": [
"三晚",
"两晚",
"一晚"
]
},
"speaking": [
{
"text": "I have a reservation.",
"tip": "reservation 重音在第三个音节:res-er-VA-tion"
},
{
"text": "It's under the name Chen."
},
{
"text": "I'm staying for three nights."
},
{
"text": "Can I check in now?"
},
{
"text": "Do I fill in this form?"
}
],
"reading": {
"text": "Guest form\nSurname: ______ First name: ______\nNationality: ______\nID or passport number: ______\nRoom: single / double\nNights: ______\nEach guest must fill in their own form. If you have a child, write his or her name below yours. Please show us a copy of your passport.",
"question": "带孩子的客人要怎么填?",
"options": [
"把孩子的名字写在自己下面",
"给孩子另填一张",
"不用写孩子"
]
},
"writing": {
"prompt": "写两句话:说你有预订,名字是什么。",
"example": "I have a reservation. It's under the name Chen.",
"itemIds": [
"A1-U15-P01",
"A1-U15-P02"
]
},
"independent": {
"prompt": "用英语跟前台说你的预订、住几晚,并问现在能不能入住。",
"itemIds": [
"A1-U15-P01",
"A1-U15-P02",
"A1-U15-P03",
"A1-U15-P04"
]
}
},
{
"id": "A1-U15-S2",
"title": "房间和钥匙",
"minutes": 12,
"itemIds": [
"A1-U15-P07",
"A1-U15-P08",
"A1-U15-P09",
"A1-U15-P10"
],
"listening": {
"text": "Here is your key. Your room is 1208, on floor 12. The elevator is over there. Breakfast is from seven to ten. And the Wi-Fi password is on the card.",
"question": "早饭几点开始?",
"options": [
"七点",
"十点",
"十二点"
]
},
"speaking": [
{
"text": "Here is your key."
},
{
"text": "What's the Wi-Fi password?"
},
{
"text": "What time is breakfast?"
},
{
"text": "Where is the elevator?",
"tip": "elevator 重音在第一个音节:EL-e-va-tor"
}
],
"reading": {
"text": "Welcome to Sea View Hotel: four stars\nBreakfast: 7:00-10:00, in the hall on the first floor.\nSwimming pool: on the high floor above the bar. It's open to everyone until 9 pm.\nWi-Fi: the password is on your key card. The code for the door is 4471.\nRules: no smoking inside. Please put garbage in the bag beside the door. The clock in the hall is always right.",
"question": "游泳池在哪里?",
"options": [
"酒吧楼上的高层",
"一楼大厅",
"前台旁边"
]
},
"writing": {
"prompt": "写两句话:问 Wi-Fi 密码,再问早饭几点。",
"example": "What's the Wi-Fi password? What time is breakfast?",
"itemIds": [
"A1-U15-P08",
"A1-U15-P09"
]
},
"independent": {
"prompt": "刚拿到钥匙,用英语问电梯在哪、早饭几点。",
"itemIds": [
"A1-U15-P07",
"A1-U15-P10",
"A1-U15-P09"
]
}
},
{
"id": "A1-U15-S3",
"title": "特别需求",
"minutes": 12,
"itemIds": [
"A1-U15-P05",
"A1-U15-P11",
"A1-U15-P12",
"A1-U15-P13"
],
"listening": {
"text": "Excuse me, what time is check-out? Twelve. Can you keep my bags? My flight is at six. Yes. And can I pay later? Yes, at check-out.",
"question": "客人为什么要寄存行李?",
"options": [
"航班在六点",
"房间太吵",
"他要去海滩"
]
},
"speaking": [
{
"text": "What time is check-out?"
},
{
"text": "Can I have a quiet room?"
},
{
"text": "Can you keep my bags?"
},
{
"text": "Can I pay later?"
}
],
"reading": {
"text": "A note from the receptionist\nDear guest,\nYour room has a bath and a balcony with a view of the sea and the beach. From there, you can see the old tower on the hill. Someone in the room next to yours is not quiet, so we can move you to a quiet room. Check-out is at 11:00. We can keep your bags after that.",
"question": "酒店可以帮客人做什么?",
"options": [
"换到安静的房间",
"送去海滩",
"免费早饭"
]
},
"writing": {
"prompt": "写两句话:问几点退房,再请前台寄存行李。",
"example": "What time is check-out? Can you keep my bags?",
"itemIds": [
"A1-U15-P05",
"A1-U15-P12"
]
},
"independent": {
"prompt": "你的航班很晚,用英语问退房时间并请酒店寄存行李。",
"itemIds": [
"A1-U15-P05",
"A1-U15-P12",
"A1-U15-P13"
]
}
}
],
"scenes": [
{
"id": "A1-U15-C1",
"kind": "main",
"title": "前台入住",
"learnerRole": "客人",
"aiRole": "前台接待员",
"setting": "你到达酒店前台,办理入住。",
"turns": [
{
"ai": "Good evening. Welcome to Sea View Hotel.",
"goal": "说你有预订",
"model": "Hi. I have a reservation.",
"zh": "你好,我有预订。",
"itemIds": [
"A1-U15-P01"
]
},
{
"ai": "What's the name, please?",
"goal": "说预订名字是陈",
"model": "It's under the name Chen.",
"zh": "预订名字是陈。",
"itemIds": [
"A1-U15-P02"
]
},
{
"ai": "Yes, Mr Chen. A double room for three nights. Please fill in this form.",
"goal": "确认后问现在能不能入住",
"model": "OK. Can I check in now?",
"zh": "好的。我现在可以入住吗?",
"itemIds": [
"A1-U15-P04"
]
},
{
"ai": "Yes, you can. Here is your key. Your room is on floor 8.",
"goal": "问电梯在哪里",
"model": "Thank you. Where is the elevator?",
"zh": "谢谢。电梯在哪里?",
"itemIds": [
"A1-U15-P10"
]
},
{
"ai": "It's over there, beside the bar.",
"goal": "问 Wi-Fi 密码和早饭时间",
"model": "What's the Wi-Fi password? And what time is breakfast?",
"zh": "Wi-Fi 密码是多少?早饭几点?",
"itemIds": [
"A1-U15-P08",
"A1-U15-P09"
]
}
]
},
{
"id": "A1-U15-C2",
"kind": "variant",
"title": "提前到达",
"learnerRole": "客人",
"aiRole": "前台接待员",
"setting": "你早上九点就到了酒店,但入住时间是下午两点。",
"turns": [
{
"ai": "Good morning! How can I help you?",
"goal": "说有预订,问现在能否入住",
"model": "I have a reservation. Can I check in now?",
"zh": "我有预订。现在可以入住吗?",
"itemIds": [
"A1-U15-P01",
"A1-U15-P04"
]
},
{
"ai": "Sorry, check-in is at two pm.",
"goal": "请前台先寄存行李",
"model": "OK. Can you keep my bags?",
"zh": "好的。能帮我寄存行李吗?",
"itemIds": [
"A1-U15-P12"
]
},
{
"ai": "Sure. What's your name?",
"goal": "说名字,住两晚",
"model": "It's under the name Li. For two nights.",
"zh": "名字是李。住两晚。",
"itemIds": [
"A1-U15-P02",
"A1-U15-P03"
]
},
{
"ai": "Thank you. Do you want to pay now?",
"goal": "问能不能晚点付",
"model": "Can I pay later?",
"zh": "我可以晚点付吗?",
"itemIds": [
"A1-U15-P13"
]
},
{
"ai": "Sure. Do you have any questions?",
"goal": "问能不能要一间安静的房间",
"model": "Yes. Can I have a quiet room?",
"zh": "有。能给我一间安静的房间吗?",
"itemIds": [
"A1-U15-P11"
]
}
]
},
{
"id": "A1-U15-C3",
"kind": "variant",
"title": "退房前",
"learnerRole": "客人",
"aiRole": "前台接待员",
"setting": "你明天要走,来前台问退房的事。",
"turns": [
{
"ai": "Hello. What can I do for you?",
"goal": "问几点退房",
"model": "What time is check-out?",
"zh": "几点退房?",
"itemIds": [
"A1-U15-P05"
]
},
{
"ai": "It's at eleven.",
"goal": "说航班很晚,请寄存行李",
"model": "My flight is late. Can you keep my bags?",
"zh": "我的航班很晚,能帮我寄存行李吗?",
"itemIds": [
"A1-U15-P12"
]
},
{
"ai": "Yes, no problem. Here is a card for your bags.",
"goal": "问要不要填表",
"model": "Thank you. Do I fill in this form?",
"zh": "谢谢。我要填这张表吗?",
"itemIds": [
"A1-U15-P06"
]
},
{
"ai": "Yes, please. Just your name and room.",
"goal": "问还要不要钥匙",
"model": "OK. Here is my key. Do you want it now?",
"zh": "好的,这是我的钥匙。你现在要吗?",
"itemIds": [
"A1-U15-P07"
]
},
{
"ai": "Tomorrow is OK. Have a good night!",
"goal": "问早饭几点",
"model": "Thanks. What time is breakfast?",
"zh": "谢谢。早饭几点?",
"itemIds": [
"A1-U15-P09"
]
}
]
}
],
"tasks": [
{
"id": "A1-U15-T1",
"sceneId": "A1-U15-C1",
"goal": "在前台完成入住并问清楚房间信息",
"itemIds": [
"A1-U15-P01",
"A1-U15-P02",
"A1-U15-P04",
"A1-U15-P10",
"A1-U15-P08",
"A1-U15-P09",
"A1-U15-P07",
"A1-U15-P03"
],
"slots": [
"预订",
"钥匙",
"密码",
"早饭"
]
},
{
"id": "A1-U15-T2",
"sceneId": "A1-U15-C2",
"goal": "提前到达时安排寄存和付款",
"itemIds": [
"A1-U15-P01",
"A1-U15-P04",
"A1-U15-P12",
"A1-U15-P02",
"A1-U15-P03",
"A1-U15-P13",
"A1-U15-P11"
],
"slots": [
"入住时间",
"寄存",
"付款"
]
},
{
"id": "A1-U15-T3",
"sceneId": "A1-U15-C3",
"goal": "退房前问清时间并寄存行李",
"itemIds": [
"A1-U15-P05",
"A1-U15-P12",
"A1-U15-P06",
"A1-U15-P07",
"A1-U15-P09"
],
"slots": [
"退房",
"行李"
]
}
],
"materials": [
{
"id": "A1-U15-M1",
"mode": "listening",
"title": "酒店前台接待",
"text": "Good evening, and welcome to our hotel — it's a high, five-star tower by the sea. Do you have a reservation? Can I have your surname and your ID? Your room is a double room on the fifth floor, with a balcony and a nice view of the beach. The elevator is in the hall, near the big clock. Breakfast is from seven to nine. There is a swimming pool, a bar, and a small garden on the hill. One rule: no smoking in the room, please. The Wi-Fi code is on this note. Here is your key. Check-out is at twelve. Enjoy your stay!",
"glosses": {
"fifth": "第五",
"desk": "桌子;front desk 前台",
"five-star": "五星级",
"key": "钥匙"
},
"questions": [
{
"type": "gist",
"question": "这段话主要在做什么?",
"options": [
"帮客人办理入住",
"点晚餐",
"问路"
]
},
{
"type": "detail",
"question": "早餐几点供应?",
"options": [
"早上七点到九点",
"中午十二点",
"晚上七点"
]
}
]
},
{
"id": "A1-U15-M2",
"mode": "reading",
"title": "读一段对话:办入住",
"text": "Guest: Hi, I have a reservation. My surname is Chen, for three nights.\nReceptionist: Let me check. Can I see your ID, please? Yes, one double room for three nights.\nGuest: Can I check in now? Can I have a quiet room with a view of the sea?\nReceptionist: Of course. Room 502 has a balcony and a view of the beach and the tower.\nGuest: Lovely. What's the Wi-Fi code?\nReceptionist: It's on this note. Here is a copy of the hotel rules; there is no smoking inside.\nGuest: OK. Is there a swimming pool?\nReceptionist: Yes, near the bar. What time is check-out?\nGuest: At twelve. Can you keep my bags after that? And where do I put the garbage?\nReceptionist: I'll keep your bags in the hall. The garbage goes in the box by the door.\nGuest: Great, thank you!",
"glosses": {
"course": "of course 当然",
"inside": "里面",
"key": "钥匙"
},
"questions": [
{
"type": "detail",
"question": "这位客人订了几晚?",
"options": [
"三晚",
"两晚",
"一晚"
]
},
{
"type": "detail",
"question": "客人想要什么样的房间?",
"options": [
"安静、能看海的房间",
"最便宜的房间",
"楼层最低的房间"
]
}
]
}
],
"excluded": [
{
"en": "reception",
"reason": "B1A1 用 front desk 以外的说法,直接对 receptionist 说话"
},
{
"en": "deposit",
"reason": "B1;押金留到 A2 酒店问题单元"
}
]
}