feat: 完善听力口语辅助状态记录、练习分块与复习抽查间隔机制

This commit is contained in:
shen
2026-09-23 18:33:22 -07:00
parent 6b42b7abc3
commit d740a9e19c
106 changed files with 2933 additions and 845 deletions
+22 -6
View File
@@ -457,12 +457,21 @@
"说慢一点",
"写下来",
"再帮一次忙"
]
],
"itemIds": []
},
"speaking": [
{
"text": "Excuse me. Can you help me?",
"tip": "excuse 的 x 读 /ks/"
"tip": "excuse 的 x 读 /ks/",
"chunks": [
"Excuse me.",
"Can you help me?"
],
"itemIds": [
"A1-U01-P01",
"A1-U01-P04"
]
},
{
"text": "Sorry, I don't understand."
@@ -517,12 +526,14 @@
"地址",
"电话",
"名字"
]
],
"itemIds": []
},
"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 个字母,才能拼读和听懂别人拼写"
"tip": "先念熟 26 个字母,才能拼读和听懂别人拼写",
"itemIds": []
},
{
"text": "What does this word mean?"
@@ -580,11 +591,16 @@
"15",
"50",
"51"
]
],
"itemIds": []
},
"speaking": [
{
"text": "eleven, twelve"
"text": "eleven, twelve",
"itemIds": [
"A1-U01-W01",
"A1-U01-W02"
]
},
{
"text": "thirteen, fourteen, fifteen, sixteen, seventeen, eighteen, nineteen",
+18 -6
View File
@@ -399,11 +399,15 @@
"15 美元",
"40 美元",
"50 美元"
]
],
"itemIds": []
},
"speaking": [
{
"text": "How much is it?"
"text": "How much is it?",
"itemIds": [
"A1-U02-P01"
]
},
{
"text": "It's twenty dollars.",
@@ -460,12 +464,16 @@
"只收现金",
"只收卡",
"现金和卡都收"
]
],
"itemIds": []
},
"speaking": [
{
"text": "I'll take it.",
"tip": "I'll 连读成一个音节"
"tip": "I'll 连读成一个音节",
"itemIds": [
"A1-U02-P03"
]
},
{
"text": "Can I pay by card?"
@@ -521,12 +529,16 @@
"商店旁边",
"酒店里面",
"公交车上"
]
],
"itemIds": []
},
"speaking": [
{
"text": "Is there an ATM near here?",
"tip": "ATM 三个字母分开读"
"tip": "ATM 三个字母分开读",
"itemIds": [
"A1-U02-P07"
]
},
{
"text": "I only have cards."
+18 -6
View File
@@ -431,11 +431,15 @@
"大杯",
"小杯",
"没说大小"
]
],
"itemIds": []
},
"speaking": [
{
"text": "Can I see the menu, please?"
"text": "Can I see the menu, please?",
"itemIds": [
"A1-U03-P02"
]
},
{
"text": "I'd like a coffee, please.",
@@ -493,11 +497,15 @@
"热的,加奶,不加糖",
"冰的,加奶,加糖",
"热的,不加奶,加糖"
]
],
"itemIds": []
},
"speaking": [
{
"text": "Hot, please."
"text": "Hot, please.",
"itemIds": [
"A1-U03-W04"
]
},
{
"text": "With milk, please."
@@ -553,11 +561,15 @@
"带走",
"在店里吃",
"还没决定"
]
],
"itemIds": []
},
"speaking": [
{
"text": "A chicken sandwich, please."
"text": "A chicken sandwich, please.",
"itemIds": [
"A1-U03-W07"
]
},
{
"text": "To go, please."
+18 -6
View File
@@ -473,11 +473,15 @@
"火车站",
"洗手间",
"银行"
]
],
"itemIds": []
},
"speaking": [
{
"text": "Sorry, I'm lost."
"text": "Sorry, I'm lost.",
"itemIds": [
"A1-U04-P03"
]
},
{
"text": "Excuse me. Where is the station?"
@@ -537,11 +541,15 @@
"右边,医院旁边",
"左边,医院旁边",
"右边,公园旁边"
]
],
"itemIds": []
},
"speaking": [
{
"text": "Go straight."
"text": "Go straight.",
"itemIds": [
"A1-U04-P05"
]
},
{
"text": "Turn left.",
@@ -599,11 +607,15 @@
"十分钟",
"五分钟",
"半小时"
]
],
"itemIds": []
},
"speaking": [
{
"text": "Is it far?"
"text": "Is it far?",
"itemIds": [
"A1-U04-P08"
]
},
{
"text": "It's five minutes from here."
+20 -6
View File
@@ -455,11 +455,15 @@
"两人桌",
"三人桌",
"四人桌"
]
],
"itemIds": []
},
"speaking": [
{
"text": "A table for two, please."
"text": "A table for two, please.",
"itemIds": [
"A1-U05-P01"
]
},
{
"text": "I'm very hungry."
@@ -517,11 +521,17 @@
"鸡汤和米饭",
"鱼和米饭",
"鸡汤和蔬菜"
]
],
"itemIds": []
},
"speaking": [
{
"text": "soup, rice, fish"
"text": "soup, rice, fish",
"itemIds": [
"A1-U05-W01",
"A1-U05-W02",
"A1-U05-W03"
]
},
{
"text": "I'd like some vegetables, please.",
@@ -576,11 +586,15 @@
"已经吃饱了",
"不喜欢冰淇淋",
"甜点太贵"
]
],
"itemIds": []
},
"speaking": [
{
"text": "I'm full."
"text": "I'm full.",
"itemIds": [
"A1-U05-P06"
]
},
{
"text": "No dessert, thanks."
+18 -6
View File
@@ -506,11 +506,15 @@
"八岁",
"六岁",
"三岁"
]
],
"itemIds": []
},
"speaking": [
{
"text": "This is my family."
"text": "This is my family.",
"itemIds": [
"A1-U06-P01"
]
},
{
"text": "These are my parents."
@@ -572,12 +576,16 @@
"老师",
"医生",
"学生"
]
],
"itemIds": []
},
"speaking": [
{
"text": "What does he do?",
"tip": "does he 连读,he 的 h 可以很弱"
"tip": "does he 连读,he 的 h 可以很弱",
"itemIds": [
"A1-U06-P03"
]
},
{
"text": "She's a teacher."
@@ -631,11 +639,15 @@
"两间",
"三间",
"一间"
]
],
"itemIds": []
},
"speaking": [
{
"text": "I live in a small flat."
"text": "I live in a small flat.",
"itemIds": [
"A1-U06-W05"
]
},
{
"text": "There are two bedrooms.",
+18 -6
View File
@@ -451,11 +451,15 @@
"到街对面坐车",
"就坐这辆车",
"改坐地铁"
]
],
"itemIds": []
},
"speaking": [
{
"text": "A ticket to the airport, please."
"text": "A ticket to the airport, please.",
"itemIds": [
"A1-U07-P01"
]
},
{
"text": "A single ticket, please."
@@ -513,11 +517,15 @@
"城市公园站",
"动物园站",
"第五站"
]
],
"itemIds": []
},
"speaking": [
{
"text": "Where do I change?"
"text": "Where do I change?",
"itemIds": [
"A1-U07-P04"
]
},
{
"text": "How many stops?"
@@ -576,11 +584,15 @@
"下一站",
"这一站",
"终点站"
]
],
"itemIds": []
},
"speaking": [
{
"text": "Is this seat free?"
"text": "Is this seat free?",
"itemIds": [
"A1-U07-P10"
]
},
{
"text": "Where do I get off?",
+23 -6
View File
@@ -452,11 +452,20 @@
"4 号通道最下层",
"7 号通道最下层",
"4 号通道最上层"
]
],
"itemIds": []
},
"speaking": [
{
"text": "Excuse me. Where can I find the milk?"
"text": "Excuse me. Where can I find the milk?",
"chunks": [
"Excuse me.",
"Where can I find",
"the milk?"
],
"itemIds": [
"A1-U08-P01"
]
},
{
"text": "I'm looking for the bread.",
@@ -517,11 +526,15 @@
"两瓶",
"一瓶",
"三瓶"
]
],
"itemIds": []
},
"speaking": [
{
"text": "a bottle of water"
"text": "a bottle of water",
"itemIds": [
"A1-U08-P04"
]
},
{
"text": "a box of eggs"
@@ -582,11 +595,15 @@
"十点",
"九点",
"十一点"
]
],
"itemIds": []
},
"speaking": [
{
"text": "Where do I pay?"
"text": "Where do I pay?",
"itemIds": [
"A1-U08-P07"
]
},
{
"text": "What time do you close?",
+18 -6
View File
@@ -494,12 +494,16 @@
"高瘦,短黑发,戴眼镜",
"矮个子,长黑发,戴眼镜",
"高瘦,短黑发,不戴眼镜"
]
],
"itemIds": []
},
"speaking": [
{
"text": "What does she look like?",
"tip": "look like 连读,重音在 look"
"tip": "look like 连读,重音在 look",
"itemIds": [
"A1-U09-P01"
]
},
{
"text": "She's tall."
@@ -559,12 +563,16 @@
"友善又有趣",
"聪明但害羞",
"严厉又无聊"
]
],
"itemIds": []
},
"speaking": [
{
"text": "What is he like?",
"tip": "不要和 What does he like? 混淆"
"tip": "不要和 What does he like? 混淆",
"itemIds": [
"A1-U09-P04"
]
},
{
"text": "She's very kind."
@@ -620,11 +628,15 @@
"他的猫走丢了",
"他工作太多",
"他生病了"
]
],
"itemIds": []
},
"speaking": [
{
"text": "I'm tired."
"text": "I'm tired.",
"itemIds": [
"A1-U09-P05"
]
},
{
"text": "I'm very happy today."
+18 -6
View File
@@ -426,11 +426,15 @@
"四十美元左右",
"三十美元左右",
"十四美元左右"
]
],
"itemIds": []
},
"speaking": [
{
"text": "Take me to the airport, please."
"text": "Take me to the airport, please.",
"itemIds": [
"A1-U10-P01"
]
},
{
"text": "Take me to this address, please."
@@ -489,12 +493,16 @@
"桥上车很多",
"桥上有事故",
"公路更便宜"
]
],
"itemIds": []
},
"speaking": [
{
"text": "Please use the meter.",
"tip": "meter 读作 /ˈmiːtə/"
"tip": "meter 读作 /ˈmiːtə/",
"itemIds": [
"A1-U10-P06"
]
},
{
"text": "Is this the right way?"
@@ -547,11 +555,15 @@
"三十美元",
"二十美元",
"五十美元"
]
],
"itemIds": []
},
"speaking": [
{
"text": "Can you stop here, please?"
"text": "Can you stop here, please?",
"itemIds": [
"A1-U10-P04"
]
},
{
"text": "Stop at the corner, please."
+18 -6
View File
@@ -479,12 +479,16 @@
"七点半",
"六点半",
"八点"
]
],
"itemIds": []
},
"speaking": [
{
"text": "I get up at seven.",
"tip": "get up 连读成 /ɡe tʌp/"
"tip": "get up 连读成 /ɡe tʌp/",
"itemIds": [
"A1-U11-P01"
]
},
{
"text": "What time do you get up?"
@@ -544,11 +548,15 @@
"看电视",
"跑步",
"吃早饭"
]
],
"itemIds": []
},
"speaking": [
{
"text": "I always have breakfast."
"text": "I always have breakfast.",
"itemIds": [
"A1-U11-W02"
]
},
{
"text": "I usually go to work by bus.",
@@ -606,11 +614,15 @@
"十一点",
"十点",
"十二点"
]
],
"itemIds": []
},
"speaking": [
{
"text": "I watch TV in the evening."
"text": "I watch TV in the evening.",
"itemIds": [
"A1-U11-P05"
]
},
{
"text": "In my free time, I read books."
+18 -6
View File
@@ -500,11 +500,15 @@
"镜子旁边",
"门口",
"楼上"
]
],
"itemIds": []
},
"speaking": [
{
"text": "Just looking, thanks."
"text": "Just looking, thanks.",
"itemIds": [
"A1-U12-P01"
]
},
{
"text": "I need some new clothes.",
@@ -564,11 +568,15 @@
"衣服太小",
"衣服太贵",
"试衣间有人"
]
],
"itemIds": []
},
"speaking": [
{
"text": "Can I try it on?"
"text": "Can I try it on?",
"itemIds": [
"A1-U12-P03"
]
},
{
"text": "Where is the changing room?"
@@ -626,11 +634,15 @@
"蓝色",
"红色",
"粉色"
]
],
"itemIds": []
},
"speaking": [
{
"text": "Do you have it in blue?"
"text": "Do you have it in blue?",
"itemIds": [
"A1-U12-P08"
]
},
{
"text": "It looks good on you."
+19 -5
View File
@@ -508,11 +508,15 @@
"五月六日",
"五月五日",
"六月五日"
]
],
"itemIds": []
},
"speaking": [
{
"text": "What's the date today?"
"text": "What's the date today?",
"itemIds": [
"A1-U13-P01"
]
},
{
"text": "When is your birthday?"
@@ -568,11 +572,15 @@
"周日",
"周六",
"周五"
]
],
"itemIds": []
},
"speaking": [
{
"text": "Are you free on Saturday?"
"text": "Are you free on Saturday?",
"itemIds": [
"A1-U13-P04"
]
},
{
"text": "Sorry, I'm busy."
@@ -632,11 +640,17 @@
"下周",
"明天",
"下个月"
],
"itemIds": [
"A1-U13-P10"
]
},
"speaking": [
{
"text": "Can we change the date?"
"text": "Can we change the date?",
"itemIds": [
"A1-U13-P11"
]
},
{
"text": "I'm free next week."
+18 -6
View File
@@ -475,11 +475,15 @@
"靠窗",
"靠过道",
"最前排"
]
],
"itemIds": []
},
"speaking": [
{
"text": "Here is my passport."
"text": "Here is my passport.",
"itemIds": [
"A1-U14-P01"
]
},
{
"text": "My flight is at ten."
@@ -535,11 +539,15 @@
"三点半",
"十二点",
"两点半"
]
],
"itemIds": []
},
"speaking": [
{
"text": "Which gate is it?"
"text": "Which gate is it?",
"itemIds": [
"A1-U14-P02"
]
},
{
"text": "Is it on time?"
@@ -596,11 +604,15 @@
"两周",
"两天",
"两个月"
]
],
"itemIds": []
},
"speaking": [
{
"text": "I'm here on holiday."
"text": "I'm here on holiday.",
"itemIds": [
"A1-U14-P06"
]
},
{
"text": "I'm visiting friends."
+18 -6
View File
@@ -444,12 +444,16 @@
"三晚",
"两晚",
"一晚"
]
],
"itemIds": []
},
"speaking": [
{
"text": "I have a reservation.",
"tip": "reservation 重音在第三个音节:res-er-VA-tion"
"tip": "reservation 重音在第三个音节:res-er-VA-tion",
"itemIds": [
"A1-U15-P01"
]
},
{
"text": "It's under the name Chen."
@@ -508,11 +512,15 @@
"七点",
"十点",
"十二点"
]
],
"itemIds": []
},
"speaking": [
{
"text": "Here is your key."
"text": "Here is your key.",
"itemIds": [
"A1-U15-P07"
]
},
{
"text": "What's the Wi-Fi password?"
@@ -568,11 +576,15 @@
"航班在六点",
"房间太吵",
"他要去海滩"
]
],
"itemIds": []
},
"speaking": [
{
"text": "What time is check-out?"
"text": "What time is check-out?",
"itemIds": [
"A1-U15-P05"
]
},
{
"text": "Can I have a quiet room?"
+18 -6
View File
@@ -482,11 +482,15 @@
"多云",
"晴天",
"下雨"
]
],
"itemIds": []
},
"speaking": [
{
"text": "What's the weather like today?"
"text": "What's the weather like today?",
"itemIds": [
"A1-U16-P01"
]
},
{
"text": "It's sunny."
@@ -547,11 +551,15 @@
"凉快",
"暖和",
"很热"
]
],
"itemIds": []
},
"speaking": [
{
"text": "It's warm today."
"text": "It's warm today.",
"itemIds": [
"A1-U16-W01"
]
},
{
"text": "The evening is cool."
@@ -610,11 +618,15 @@
"可以每天游泳",
"天气凉快",
"可以看雪"
]
],
"itemIds": []
},
"speaking": [
{
"text": "I like summer."
"text": "I like summer.",
"itemIds": [
"A1-U16-P09"
]
},
{
"text": "Is it going to rain?"
+19 -5
View File
@@ -445,11 +445,15 @@
"没有热水,电视坏了",
"太吵,门打不开",
"毛巾脏了"
]
],
"itemIds": []
},
"speaking": [
{
"text": "There's no hot water."
"text": "There's no hot water.",
"itemIds": [
"A1-U17-P01"
]
},
{
"text": "The TV doesn't work."
@@ -510,11 +514,15 @@
"毛巾和水",
"毛毯和水",
"毛巾和洗发水"
]
],
"itemIds": []
},
"speaking": [
{
"text": "Can I have another towel?"
"text": "Can I have another towel?",
"itemIds": [
"A1-U17-P03"
]
},
{
"text": "Can you send someone?"
@@ -572,11 +580,17 @@
"太吵了",
"门打不开",
"房间太脏"
],
"itemIds": [
"A1-U17-P04"
]
},
"speaking": [
{
"text": "It's too noisy."
"text": "It's too noisy.",
"itemIds": [
"A1-U17-P04"
]
},
{
"text": "Can I change rooms?"
+18 -6
View File
@@ -455,11 +455,15 @@
"头疼和脖子疼",
"发烧和胃疼",
"牙疼"
]
],
"itemIds": []
},
"speaking": [
{
"text": "I don't feel well."
"text": "I don't feel well.",
"itemIds": [
"A1-U18-P01"
]
},
{
"text": "I have a headache.",
@@ -520,11 +524,15 @@
"一天三次,饭后",
"一天两次,饭前",
"一天一次,睡前"
]
],
"itemIds": []
},
"speaking": [
{
"text": "I need some medicine."
"text": "I need some medicine.",
"itemIds": [
"A1-U18-W02"
]
},
{
"text": "Is there a pharmacy near here?"
@@ -585,11 +593,15 @@
"好多了",
"还在发烧",
"要去看医生"
]
],
"itemIds": []
},
"speaking": [
{
"text": "I feel better now."
"text": "I feel better now.",
"itemIds": [
"A1-U18-P10"
]
},
{
"text": "Take care."
+18 -6
View File
@@ -440,11 +440,15 @@
"钱包,也找不到护照",
"手机和包",
"酒店钥匙"
]
],
"itemIds": []
},
"speaking": [
{
"text": "What happened?"
"text": "What happened?",
"itemIds": [
"A1-U19-P06"
]
},
{
"text": "I lost my wallet."
@@ -504,11 +508,15 @@
"银行旁边",
"公交车站旁边",
"酒店对面"
]
],
"itemIds": []
},
"speaking": [
{
"text": "Someone took my bag."
"text": "Someone took my bag.",
"itemIds": [
"A1-U19-P02"
]
},
{
"text": "Call the police!",
@@ -567,11 +575,15 @@
"都很安全",
"有人受伤",
"还在厨房里"
]
],
"itemIds": []
},
"speaking": [
{
"text": "Don't worry."
"text": "Don't worry.",
"itemIds": [
"A1-U19-P09"
]
},
{
"text": "Please come quickly!"
+18 -6
View File
@@ -395,11 +395,15 @@
"不在",
"在开会",
"马上来接电话"
]
],
"itemIds": []
},
"speaking": [
{
"text": "Hello, this is Chen."
"text": "Hello, this is Chen.",
"itemIds": [
"A1-U20-P01"
]
},
{
"text": "Can I speak to Mr Brown?"
@@ -459,11 +463,15 @@
"给他回电话",
"发邮件",
"去找他"
]
],
"itemIds": []
},
"speaking": [
{
"text": "Can I leave a message?"
"text": "Can I leave a message?",
"itemIds": [
"A1-U20-P06"
]
},
{
"text": "Can you call me back?"
@@ -520,11 +528,15 @@
"打错了",
"听不见",
"没人接"
]
],
"itemIds": []
},
"speaking": [
{
"text": "Sorry, I can't hear you."
"text": "Sorry, I can't hear you.",
"itemIds": [
"A1-U20-P09"
]
},
{
"text": "Sorry, wrong number."
+18 -6
View File
@@ -481,11 +481,15 @@
"山里",
"海滩",
"公园"
]
],
"itemIds": []
},
"speaking": [
{
"text": "What are you doing this weekend?"
"text": "What are you doing this weekend?",
"itemIds": [
"A1-U21-P01"
]
},
{
"text": "I'm going to the beach."
@@ -543,11 +547,15 @@
"他没空",
"他不喜欢音乐会",
"他生病了"
]
],
"itemIds": []
},
"speaking": [
{
"text": "Do you want to come?"
"text": "Do you want to come?",
"itemIds": [
"A1-U21-P03"
]
},
{
"text": "Would you like to join us?",
@@ -607,11 +615,15 @@
"打网球和野餐",
"去海滩",
"看音乐会"
]
],
"itemIds": []
},
"speaking": [
{
"text": "Let's go together."
"text": "Let's go together.",
"itemIds": [
"A1-U21-P09"
]
},
{
"text": "Let's play tennis."