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

924 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-U08",
"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": "61",
"use": "active",
"reason": "只用 I'm looking for… 这个固定句块"
},
{
"id": "15",
"use": "active"
},
{
"id": "59-2",
"use": "active"
},
{
"id": "16",
"use": "receptive"
}
],
"coreItems": [
{
"id": "A1-U08-P01",
"type": "phrase",
"en": "Where can I find the milk?",
"zh": "哪里能找到牛奶?",
"sceneWord": false,
"match": [
[
"where can i find"
]
],
"example": {
"en": "Excuse me. Where can I find the rice?",
"zh": "打扰一下,哪里能找到大米?"
},
"review": {
"prompt": "在超市问哪里能找到糖。"
}
},
{
"id": "A1-U08-P02",
"type": "phrase",
"en": "Do you have any yogurt?",
"zh": "你们有酸奶吗?",
"sceneWord": false,
"match": [
[
"do you have"
]
],
"example": {
"en": "Do you have any fresh bread?",
"zh": "你们有新鲜面包吗?"
},
"review": {
"prompt": "问店员有没有冰块。"
}
},
{
"id": "A1-U08-W01",
"type": "word",
"en": "aisle",
"zh": "(超市的)通道",
"sceneWord": true,
"sceneReason": "aisle 在 CEFR-J 为 A2,但在超市找东西时店员几乎都会这样指路",
"match": [
[
"aisle"
]
],
"example": {
"en": "The rice is in aisle 4.",
"zh": "大米在 4 号通道。"
},
"review": {
"prompt": "说“在 3 号通道”。"
}
},
{
"id": "A1-U08-P03",
"type": "phrase",
"en": "It's on the top shelf.",
"zh": "在最上层的架子上。",
"sceneWord": false,
"match": [
[
"top shelf",
"bottom shelf"
]
],
"example": {
"en": "The sugar is on the bottom shelf.",
"zh": "糖在最下层的架子上。"
},
"review": {
"prompt": "告诉朋友牛奶在最下层。"
}
},
{
"id": "A1-U08-P04",
"type": "phrase",
"en": "a bottle of water",
"zh": "一瓶水",
"sceneWord": false,
"match": [
[
"a bottle of",
"bottles of",
"a box of",
"a bag of",
"a piece of"
]
],
"example": {
"en": "Two bottles of water, please.",
"zh": "请给我两瓶水。"
},
"review": {
"prompt": "说要一盒鸡蛋。"
}
},
{
"id": "A1-U08-P05",
"type": "phrase",
"en": "a kilo of apples",
"zh": "一公斤苹果",
"sceneWord": true,
"sceneReason": "kilo 在 CEFR-J 为 A2,但在市场买水果、蔬菜时按公斤说数量",
"match": [
[
"kilo",
"kilos"
]
],
"example": {
"en": "Half a kilo of grapes, please.",
"zh": "请给我半公斤葡萄。"
},
"review": {
"prompt": "在水果摊说要两公斤苹果。"
}
},
{
"id": "A1-U08-P06",
"type": "phrase",
"en": "I need two bags.",
"zh": "我需要两个袋子。",
"sceneWord": false,
"match": [
[
"i need",
"we need"
]
],
"example": {
"en": "I need a box of eggs.",
"zh": "我需要一盒鸡蛋。"
},
"review": {
"prompt": "说你需要一个袋子。"
}
},
{
"id": "A1-U08-W02",
"type": "word",
"en": "bag",
"zh": "袋子",
"sceneWord": false,
"match": [
[
"bag",
"bags"
]
],
"example": {
"en": "Do you need a bag?",
"zh": "你需要袋子吗?"
},
"review": {
"prompt": "结账时说你要一个袋子。"
}
},
{
"id": "A1-U08-W03",
"type": "word",
"en": "fresh",
"zh": "新鲜的",
"sceneWord": true,
"sceneReason": "fresh 在 CEFR-J 为 A2,但买水果、面包时常要问",
"match": [
[
"fresh"
]
],
"example": {
"en": "Is the fish fresh?",
"zh": "这鱼新鲜吗?"
},
"review": {
"prompt": "问这些水果新不新鲜。"
}
},
{
"id": "A1-U08-P07",
"type": "phrase",
"en": "Where do I pay?",
"zh": "在哪里付钱?",
"sceneWord": false,
"match": [
[
"where do i pay",
"where can i pay"
]
],
"example": {
"en": "Excuse me. Where do I pay?",
"zh": "打扰一下,在哪里付钱?"
},
"review": {
"prompt": "拿好东西后问在哪里付钱。"
}
},
{
"id": "A1-U08-P08",
"type": "phrase",
"en": "What time do you close?",
"zh": "你们几点关门?",
"sceneWord": false,
"match": [
[
"what time do you close",
"what time do you open"
]
],
"example": {
"en": "What time do you open?",
"zh": "你们几点开门?"
},
"review": {
"prompt": "问便利店几点开门。"
}
},
{
"id": "A1-U08-P09",
"type": "phrase",
"en": "I'm looking for eggs.",
"zh": "我在找电池。",
"sceneWord": false,
"match": [
[
"looking for"
]
],
"example": {
"en": "I'm looking for the bread.",
"zh": "我在找面包。"
},
"review": {
"prompt": "告诉店员你在找牛奶。"
}
}
],
"receptiveWords": [
{
"id": "A1-U08-R01",
"en": "box",
"zh": "盒子;箱子"
},
{
"id": "A1-U08-R02",
"en": "piece",
"zh": "一块;一片"
},
{
"id": "A1-U08-R03",
"en": "list",
"zh": "清单"
},
{
"id": "A1-U08-R04",
"en": "pick",
"zh": "挑选"
},
{
"id": "A1-U08-R05",
"en": "put",
"zh": "放"
},
{
"id": "A1-U08-R06",
"en": "carry",
"zh": "拿;提"
},
{
"id": "A1-U08-R07",
"en": "heavy",
"zh": "重的"
},
{
"id": "A1-U08-R08",
"en": "store",
"zh": "商店"
},
{
"id": "A1-U08-R09",
"en": "candy",
"zh": "糖果"
},
{
"id": "A1-U08-R10",
"en": "biscuit",
"zh": "饼干"
},
{
"id": "A1-U08-R11",
"en": "grape",
"zh": "葡萄"
},
{
"id": "A1-U08-R12",
"en": "corn",
"zh": "玉米"
},
{
"id": "A1-U08-R13",
"en": "bean",
"zh": "豆子"
},
{
"id": "A1-U08-R14",
"en": "basket",
"zh": "篮子"
},
{
"id": "A1-U08-R15",
"en": "item",
"zh": "物品;件"
},
{
"id": "A1-U08-R16",
"en": "sell",
"zh": "卖"
},
{
"id": "A1-U08-R17",
"en": "open",
"zh": "开着的;营业"
},
{
"id": "A1-U08-R18",
"en": "closed",
"zh": "关着的;停止营业"
},
{
"id": "A1-U08-R19",
"en": "bottom",
"zh": "底部"
},
{
"id": "A1-U08-R20",
"en": "year",
"zh": "年"
},
{
"id": "A1-U08-R21",
"en": "night",
"zh": "夜晚"
},
{
"id": "A1-U08-R22",
"en": "snack",
"zh": "零食"
},
{
"id": "A1-U08-R23",
"en": "soap",
"zh": "肥皂"
},
{
"id": "A1-U08-R24",
"en": "salt",
"zh": "盐"
},
{
"id": "A1-U08-R25",
"en": "battery",
"zh": "电池"
},
{
"id": "A1-U08-R26",
"en": "empty",
"zh": "空的"
},
{
"id": "A1-U08-R27",
"en": "keep",
"zh": "保留"
},
{
"id": "A1-U08-R28",
"en": "plastic",
"zh": "塑料的"
},
{
"id": "A1-U08-R29",
"en": "whole",
"zh": "整个的"
}
],
"segments": [
{
"id": "A1-U08-S1",
"title": "找东西",
"minutes": 13,
"itemIds": [
"A1-U08-P01",
"A1-U08-P02",
"A1-U08-W01",
"A1-U08-P03",
"A1-U08-P09"
],
"listening": {
"text": "Excuse me. Where can I find the sugar? It's in aisle 4, on the bottom shelf. And do you have any candy? Yes, in aisle 7.",
"question": "糖在哪里?",
"options": [
"4 号通道最下层",
"7 号通道最下层",
"4 号通道最上层"
]
},
"speaking": [
{
"text": "Excuse me. Where can I find the milk?"
},
{
"text": "I'm looking for the bread.",
"tip": "looking for 连读,for 很轻"
},
{
"text": "Do you have any yogurt?"
},
{
"text": "It's in aisle 3.",
"tip": "aisle 里的 s 不发音,读作 /aɪl/"
},
{
"text": "It's on the top shelf."
}
],
"reading": {
"text": "Welcome to City Store\nAisle 1: fruit and vegetables\nAisle 2: bread and cake\nAisle 3: milk, cheese, yogurt and cream\nAisle 4: rice, beans, corn, sugar and salt\nAisle 5: candy, biscuits and snacks\nAisle 6: soap and batteries\nIce is in the box next to the door.",
"question": "酸奶在哪个通道?",
"options": [
"aisle 3",
"aisle 5",
"aisle 6"
]
},
"writing": {
"prompt": "写两句话:问哪里能找到牛奶,再问有没有酸奶。",
"example": "Where can I find the milk? Do you have any yogurt?",
"itemIds": [
"A1-U08-P01",
"A1-U08-P02"
]
},
"independent": {
"prompt": "想想你家附近的超市,用英语问三样东西在哪里。",
"itemIds": [
"A1-U08-P01",
"A1-U08-P09",
"A1-U08-W01"
]
}
},
{
"id": "A1-U08-S2",
"title": "说数量",
"minutes": 13,
"itemIds": [
"A1-U08-P04",
"A1-U08-P05",
"A1-U08-P06",
"A1-U08-W02",
"A1-U08-W03"
],
"listening": {
"text": "Can I have a kilo of apples, please? Sure. Anything else? Yes, two bottles of water. Do you need a bag? Yes, please. I need two bags. They're heavy.",
"question": "顾客买了几瓶水?",
"options": [
"两瓶",
"一瓶",
"三瓶"
]
},
"speaking": [
{
"text": "a bottle of water"
},
{
"text": "a box of eggs"
},
{
"text": "a kilo of apples",
"tip": "kilo 读作 /ˈkiːləʊ/"
},
{
"text": "Half a kilo, please."
},
{
"text": "I need two bags."
},
{
"text": "Is the bread fresh?"
}
],
"reading": {
"text": "Shopping list\n- a kilo of apples\n- half a kilo of grapes\n- a box of eggs\n- two bottles of water\n- a piece of cheese\n- a whole chicken\nMia: Please keep the list, and don't buy candy!",
"question": "清单上要买多少葡萄?",
"options": [
"half a kilo",
"a piece of cheese",
"a box of eggs"
]
},
"writing": {
"prompt": "写购物清单里的两行:一瓶水、一公斤苹果。",
"example": "a bottle of water, a kilo of apples",
"itemIds": [
"A1-U08-P04",
"A1-U08-P05"
]
},
"independent": {
"prompt": "用英语说说你这周要买的三样东西和数量。",
"itemIds": [
"A1-U08-P04",
"A1-U08-P05",
"A1-U08-P06"
]
}
},
{
"id": "A1-U08-S3",
"title": "付钱和营业时间",
"minutes": 10,
"itemIds": [
"A1-U08-P07",
"A1-U08-P08",
"A1-U08-W02"
],
"listening": {
"text": "Where do I pay? Over there. What time do you close? We close at ten. We're open every day.",
"question": "这家店几点关门?",
"options": [
"十点",
"九点",
"十一点"
]
},
"speaking": [
{
"text": "Where do I pay?"
},
{
"text": "What time do you close?",
"tip": "do you 连读成 /djuː/"
},
{
"text": "What time do you open?"
},
{
"text": "Can I have a plastic bag?"
}
],
"reading": {
"text": "Open every day: 7 to 11\nClosed on the first day of the new year\nPlease put your items in a basket. Please pay here.\nPlastic bags are 10 cents.",
"question": "塑料袋多少钱?",
"options": [
"十美分一个",
"免费",
"一美元"
]
},
"writing": {
"prompt": "写两句话:问在哪里付钱,再问几点关门。",
"example": "Where do I pay? What time do you close?",
"itemIds": [
"A1-U08-P07",
"A1-U08-P08"
]
},
"independent": {
"prompt": "在便利店结账时,用英语要一个袋子,并问几点关门。",
"itemIds": [
"A1-U08-W02",
"A1-U08-P08"
]
}
}
],
"scenes": [
{
"id": "A1-U08-C1",
"kind": "main",
"title": "在超市找东西",
"learnerRole": "顾客",
"aiRole": "店员",
"setting": "你在一家大超市,想买牛奶、酸奶和鸡蛋,但找不到。",
"turns": [
{
"ai": "Hi. Can I help you?",
"goal": "问哪里能找到牛奶",
"model": "Yes, please. Where can I find the milk?",
"zh": "是的,谢谢。哪里能找到牛奶?",
"itemIds": [
"A1-U08-P01"
]
},
{
"ai": "The milk is in aisle 3, on the bottom shelf.",
"goal": "确认通道,再问有没有新鲜酸奶",
"model": "Aisle 3? And do you have any fresh yogurt?",
"zh": "3 号通道?你们有新鲜酸奶吗?",
"itemIds": [
"A1-U08-W01",
"A1-U08-P02",
"A1-U08-W03"
]
},
{
"ai": "Yes, next to the milk, on the top shelf.",
"goal": "确认位置,再说你还在找鸡蛋",
"model": "On the top shelf. Thanks. I'm also looking for eggs.",
"zh": "最上层。谢谢。我还在找鸡蛋。",
"itemIds": [
"A1-U08-P03",
"A1-U08-P09"
]
},
{
"ai": "Eggs are in aisle 5. Do you need a basket? You can't carry it all.",
"goal": "说不用篮子,你有袋子",
"model": "No, thanks. I have a bag.",
"zh": "不用了,谢谢。我有袋子。",
"itemIds": [
"A1-U08-W02"
]
},
{
"ai": "OK. Anything else?",
"goal": "问在哪里付钱",
"model": "Where do I pay?",
"zh": "在哪里付钱?",
"itemIds": [
"A1-U08-P07"
]
}
]
},
{
"id": "A1-U08-C2",
"kind": "variant",
"title": "在水果摊买水果",
"learnerRole": "顾客",
"aiRole": "摊主",
"setting": "你在市场的水果摊买水果。",
"turns": [
{
"ai": "Hello! Fresh fruit today!",
"goal": "问苹果新不新鲜",
"model": "Are the apples fresh?",
"zh": "苹果新鲜吗?",
"itemIds": [
"A1-U08-W03"
]
},
{
"ai": "Very fresh. Pick your apples. Two dollars a kilo.",
"goal": "要两公斤苹果",
"model": "Two kilos of apples, please.",
"zh": "请给我两公斤苹果。",
"itemIds": [
"A1-U08-P05"
]
},
{
"ai": "Sure. Anything else? The grapes are very sweet.",
"goal": "要半公斤葡萄",
"model": "OK, half a kilo of grapes.",
"zh": "好,半公斤葡萄。",
"itemIds": [
"A1-U08-P05"
]
},
{
"ai": "Here you are. It's heavy. Do you need a bag?",
"goal": "说需要两个袋子",
"model": "Yes, I need two bags, please.",
"zh": "要,我需要两个袋子。",
"itemIds": [
"A1-U08-P06",
"A1-U08-W02"
]
},
{
"ai": "Sure. Seven dollars, please.",
"goal": "付钱",
"model": "Here you are.",
"zh": "给你。",
"itemIds": []
}
]
},
{
"id": "A1-U08-C3",
"kind": "variant",
"title": "晚上去便利店",
"learnerRole": "顾客",
"aiRole": "店员",
"setting": "晚上你在酒店旁边的便利店买东西。",
"turns": [
{
"ai": "Hi there.",
"goal": "说你在找电池",
"model": "Hi. I'm looking for batteries.",
"zh": "你好。我在找电池。",
"itemIds": [
"A1-U08-P09"
]
},
{
"ai": "Sorry, we don't sell batteries. We have snacks, drinks and soap.",
"goal": "改要一瓶水",
"model": "OK. A bottle of water, please.",
"zh": "好吧。请给我一瓶水。",
"itemIds": [
"A1-U08-P04"
]
},
{
"ai": "The water is over there. Anything else?",
"goal": "问几点关门",
"model": "No, thanks. What time do you close?",
"zh": "不用了,谢谢。你们几点关门?",
"itemIds": [
"A1-U08-P08"
]
},
{
"ai": "We're open all night.",
"goal": "问有没有冰块",
"model": "Oh, good. Do you have any ice?",
"zh": "哦,太好了。你们有冰块吗?",
"itemIds": [
"A1-U08-P02"
]
},
{
"ai": "Sorry, the ice box is empty now.",
"goal": "回应",
"model": "That's OK. Thank you.",
"zh": "没关系,谢谢。",
"itemIds": []
}
]
}
],
"tasks": [
{
"id": "A1-U08-T1",
"sceneId": "A1-U08-C1",
"goal": "在超市问三样东西在哪里,确认通道和货架,最后问在哪里付钱",
"itemIds": [
"A1-U08-P01",
"A1-U08-W01",
"A1-U08-P02",
"A1-U08-W03",
"A1-U08-P03",
"A1-U08-P09",
"A1-U08-W02",
"A1-U08-P07"
],
"slots": [
"商品",
"位置"
]
},
{
"id": "A1-U08-T2",
"sceneId": "A1-U08-C2",
"goal": "在水果摊问新鲜程度,按公斤买水果并要袋子",
"itemIds": [
"A1-U08-W03",
"A1-U08-P05",
"A1-U08-P06",
"A1-U08-W02"
],
"slots": [
"水果",
"数量",
"袋子"
]
},
{
"id": "A1-U08-T3",
"sceneId": "A1-U08-C3",
"goal": "在便利店找东西,找不到时换一样,并问营业时间",
"itemIds": [
"A1-U08-P09",
"A1-U08-P04",
"A1-U08-P08",
"A1-U08-P02"
],
"slots": [
"商品",
"营业时间"
]
}
],
"materials": [
{
"id": "A1-U08-M1",
"mode": "listening",
"title": "超市广播",
"text": "Welcome to our store! We are open now, from morning to ten at night. Today we sell fresh fruit and vegetables. Grapes and apples are cheap. The candy, biscuits and snacks are on the top shelf; corn, beans and salt are at the bottom. Milk and yogurt are next to the eggs. Soap and batteries are near the door. Please take a basket and put your items in it. Some boxes are heavy, so carry them with care. Please keep your plastic bags. Pay at the front. Thank you, and have a nice day!",
"glosses": {
"forget": "忘记",
"tonight": "今晚",
"front": "前面;front desk 前台",
"care": "with care 小心地",
"shelf": "架子"
},
"questions": [
{
"type": "gist",
"question": "这段广播主要说什么?",
"options": [
"超市里的商品和信息",
"怎么坐地铁",
"怎么点菜"
]
},
{
"type": "detail",
"question": "糖果和零食放在哪里?",
"options": [
"最上层的架子",
"门口",
"最下面"
]
}
]
},
{
"id": "A1-U08-M2",
"mode": "reading",
"title": "读一段对话:在超市找东西",
"text": "Mia: Excuse me, where can I find the milk?\nStaff: It's on the top shelf, next to the yogurt.\nMia: Thank you. I have a list. I need a box of eggs, a piece of cheese and some grapes.\nStaff: The eggs are in aisle three. The grapes are fresh today. Please pick the good ones.\nMia: OK. Where are the corn and the beans?\nStaff: At the bottom, near the salt. Do you need soap or batteries?\nMia: Yes, one soap. This basket is heavy now! Can you carry it?\nStaff: Sure. Do you want a plastic bag or a box?\nMia: A box, please. What time do you close? Are you open on Sunday?\nStaff: We close at ten, and yes, we're open every day of the year.\nMia: Great, thank you very much!",
"glosses": {
"staff": "员工,服务员",
"front": "前面;front desk 前台",
"shelf": "架子"
},
"questions": [
{
"type": "detail",
"question": "Mia 的清单上有什么?",
"options": [
"一盒鸡蛋、一块奶酪、一些葡萄",
"面包和牛奶",
"糖和零食"
]
},
{
"type": "detail",
"question": "超市几点关门?",
"options": [
"十点",
"九点",
"十一点"
]
}
]
}
],
"excluded": [
{
"en": "checkout / cashier",
"reason": "B1 或未收录;A1 用 Where do I pay? 表达"
},
{
"en": "dozen",
"reason": "B1A1 用 a box of twelve eggs"
}
]
}