就绪
成功: 0 失败: 0

# L1-S2-U14-L1 到你上学啦 (组件录入测试)

生成时间: 2026-04-30 12:52:41 模型: doubao-seed-2.0-pro Wiki: AEPJwf0DUiDkWska4SbceSAbnyc
21
总组件
17
成功
4
失败
0
跳过
1 核心看图说话 cId: 0000800 core_speaking_image
生成成功 ▶
taskInfo
{ "cType": "core_speaking_image", "cId": "0000800", "title": "回答Mr Rock的问题", "taskDesc": "回答 Mr Rock 的问题", "sceneDesc": "Mr Rock 要给我们煮东西吃，看着暖腾腾的热气，听着咕咚咚的水声，闻着香飘飘的味道，心里美滋滋。等待开饭的时间里，和 Mr Rock 聊聊天吧。", "key": [ { "desc": "", "keyList": [ { "type": "default", "content": "winter", "desc": "n. 冬天" }, { "type": "default", "content": "cold", "desc": "adj. 冷的" }, { "type": "default", "content": "snow", "desc": "n. 雪" } ] } ], "resourceMapping": { "Eva": 738, "Peter": 739 }, "cDesc": "NPC: What season is it?\nUser: Winter.\nNPC: Is it hot or cold?\nUser: Cold.\nNPC: What do you see in winter?\nUser: Snow." }
dialogConfig
{ "config": { "asrPrompt": "winter,cold,snow,season,hot", "promptInfo": { "user_scene": "Mr Rock 要给我们煮东西吃，看着暖腾腾的热气，听着咕咚咚的水声，闻着香飘飘的味道，心里美滋滋。等待开饭的时间里，和 Mr Rock 聊聊天吧。", "user_task": "回答 Mr Rock 的问题", "user_knowledge": "winter 冬天\ncold 冷的\nsnow 雪", "pass_condition": "用户说出：\n1. 冬天\n2. 冷的\n3. 雪", "reference_dialog": "NPC: What season is it?\nUser: Winter.\nNPC: Is it hot or cold?\nUser: Cold.\nNPC: What do you see in winter?\nUser: Snow.", "questionList": [ { "type": "npc", "npcName": "Rock", "content": "What season is it?", "index": 0, "answerText": "Winter." }, { "type": "npc", "npcName": "Rock", "content": "Is it hot or cold?", "index": 1, "answerText": "Cold." }, { "type": "npc", "npcName": "Rock", "content": "What do you see in winter?", "index": 2, "answerText": "Snow." } ] } } }
studyInfo
{ "learningPart": [ { "leadIn": { "type": "npc", "npcName": "Rock", "content": "What season is it?" }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "Rock 老师询问现在是什么季节，你需要告诉他当前所处的季节。", "index": 0 }, "optionList": [ { "option": "Winter.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太棒了！你正确说出了现在的季节是冬天。请大声朗读这个单词！" } }, { "option": "Cold.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这个单词的意思是“寒冷的”，是用来描述天气感受的，不是季节名称，和现在老师问的问题不符哦。请再仔细听清问题，告诉老师现在是什么季节。" } }, { "option": "Snow.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这个单词的意思是“雪”，是冬天会出现的事物，不是季节名称，和现在老师问的问题不符哦。请再仔细听清问题，告诉老师现在是什么季节。" } } ], "answer": [ 0 ], "read": { "type": "npc", "npcName": "User", "content": "Winter." } } ] }, { "leadIn": { "type": "npc", "npcName": "Rock", "content": "Is it hot or cold?" }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "Rock 老师现在询问你现在的天气是热还是冷，你需要告诉他冬天的气温感受。", "index": 1 }, "optionList": [ { "option": "Winter.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这个单词的意思是“冬天”，是季节名称，不是描述冷热感受的词汇，和现在老师问的问题不符哦。请再仔细听清问题，告诉老师现在天气是热还是冷。" } }, { "option": "Cold.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太棒了！你正确说出了冬天的天气是寒冷的。请大声朗读这个单词！" } }, { "option": "Snow.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这个单词的意思是“雪”，是冬天的事物，不是描述冷热感受的词汇，和现在老师问的问题不符哦。请再仔细听清问题，告诉老师现在天气是热还是冷。" } } ], "answer": [ 1 ], "read": { "type": "npc", "npcName": "User", "content": "Cold." } } ] }, { "leadIn": { "type": "npc", "npcName": "Rock", "content": "What do you see in winter?" }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "Rock 老师现在问你在冬天能看到什么，你需要告诉他冬天特有的事物。", "index": 2 }, "optionList": [ { "option": "Winter.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这个单词的意思是“冬天”，是当前的季节，不是冬天能看到的具体事物，和现在老师问的问题不符哦。请再仔细听清问题，告诉老师你在冬天能看到什么。" } }, { "option": "Cold.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这个单词的意思是“寒冷的”，是冬天的体感感受，不是能看到的具体事物，和现在老师问的问题不符哦。请再仔细听清问题，告诉老师你在冬天能看到什么。" } }, { "option": "Snow.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太棒了！你正确说出了冬天能看到的事物是雪。请大声朗读这个单词！" } } ], "answer": [ 2 ], "read": { "type": "npc", "npcName": "User", "content": "Snow." }, "feedback": { "type": "npc", "npcName": "Rock", "content": "Great! You know a lot about winter." } } ] } ], "closing": { "type": "npc", "npcName": "Brainy", "content": "你已经顺利掌握了冬天相关的英文表达，不仅能正确回答季节相关的问题，还能描述冬天的天气和特有事物，本次学习任务完成得非常棒！" } }
imageInfo
{ "questionImg": "0000800_question.png" }
questionList
[{'type': 'npc', 'npcName': 'Rock', 'content': 'What season is it?', 'index': 0, 'answerText': 'Winter.'}, {'type': 'npc', 'npcName': 'Rock', 'content': 'Is it hot or cold?', 'index': 1, 'answerText': 'Cold.'}, {'type': 'npc', 'npcName': 'Rock', 'content': 'What do you see in winter?', 'index': 2, 'answerText': 'Snow.'}]
optionList
[{'option': '0000800_option_00.png'}, {'option': '0000800_option_01.png'}, {'option': '0000800_option_02.png'}]
kpInfo (3个知识点)

# | kpId | kpType | kpTitle | kpSkill | kpSkillName
--- | --- | --- | --- | --- | ---
[0] |  |  | winter 冬天 |  |
[1] |  |  | cold 冷的 |  |
[2] |  |  | snow 雪 |  |

中间结果: 学习流程配置

    ```
    # 中间回合1
    Rock: What season is it?
    Brainy: Rock 老师询问现在是什么季节，你需要告诉他当前所处的季节。
    用户选项:
    （选项 A）Winter. [正确]
      Brainy: 太棒了！你正确说出了现在的季节是冬天。请大声朗读这个单词！
    （选项 B）Cold.
      Brainy: 这个单词的意思是“寒冷的”，是用来描述天气感受的，不是季节名称，和现在老师问的问题不符哦。请再仔细听清问题，告诉老师现在是什么季节。
    （选项 C）Snow.
      Brainy: 这个单词的意思是“雪”，是冬天会出现的事物，不是季节名称，和现在老师问的问题不符哦。请再仔细听清问题，告诉老师现在是什么季节。

    # 中间回合2
    Rock: Is it hot or cold?
    Brainy: Rock 老师现在询问你现在的天气是热还是冷，你需要告诉他冬天的气温感受。
    用户选项:
    （选项 A）Winter.
      Brainy: 这个单词的意思是“冬天”，是季节名称，不是描述冷热感受的词汇，和现在老师问的问题不符哦。请再仔细听清问题，告诉老师现在天气是热还是冷。
    （选项 B）Cold. [正确]
      Brainy: 太棒了！你正确说出了冬天的天气是寒冷的。请大声朗读这个单词！
    （选项 C）Snow.
      Brainy: 这个单词的意思是“雪”，是冬天的事物，不是描述冷热感受的词汇，和现在老师问的问题不符哦。请再仔细听清问题，告诉老师现在天气是热还是冷。

    # 中间回合3
    Rock: What do you see in winter?
    Brainy: Rock 老师现在问你在冬天能看到什么，你需要告诉他冬天特有的事物。
    用户选项:
    （选项 A）Winter.
      Brainy: 这个单词的意思是“冬天”，是当前的季节，不是冬天能看到的具体事物，和现在老师问的问题不符哦。请再仔细听清问题，告诉老师你在冬天能看到什么。
    （选项 B）Cold.
      Brainy: 这个单词的意思是“寒冷的”，是冬天的体感感受，不是能看到的具体事物，和现在老师问的问题不符哦。请再仔细听清问题，告诉老师你在冬天能看到什么。
    （选项 C）Snow. [正确]
      Brainy: 太棒了！你正确说出了冬天能看到的事物是雪。请大声朗读这个单词！

    # 结尾回合
    Brainy: 你已经顺利回答了 Rock 老师的所有问题，本次对话任务圆满完成啦！
    ```

中间结果: 语音识别热词

    winter,cold,snow,season,hot

2 核心合作听力 cId: 0000800 core_listening_order
生成成功 ▶
taskInfo
{ "cType": "core_listening_order", "cId": "0000800", "title": "帮助Shark学习健康的健身知识。", "sceneDesc": "Shark 的生活方式实在不健康，为了变强壮，居然把自己饿晕了！你想起健身达人 Max，曾经分享过一些专业健身指南，快让 Shark 听听看。", "img": "", "key": [ { "desc": "", "keyList": [ { "type": "default", "content": "bake", "desc": "v. 烘焙；烤制" }, { "type": "default", "content": "healthy", "desc": "adj. 健康的" }, { "type": "default", "content": "money", "desc": "n. 钱" }, { "type": "default", "content": "cake", "desc": "n. 蛋糕" }, { "type": "default", "content": "alcohol", "desc": "n. 含酒精饮料" } ] } ], "resourceMapping": { "Eva": 738, "Peter": 739 } }
materialInfo
{ "audio": [ { "audioType": "File", "audioTitle": "How to live a healthy life?", "audioSource": "0330116_01", "audioText": "Second, live a healthy life.\nGo to bed on time and get up early. Try to stay away from bad things, like smoking and alcohol. These things are not good for your body.\nThird, you do not need much money.\n Keeping a healthy body is not about money. You do not need expensive things. Good habits are the most important." } ], "question": [ { "type": "npc", "npcName": "Shark", "content": "When I want sweet food, what should I do?", "optionList": [ { "option": "Buy cake at a shop", "feedback": { "type": "npc", "npcName": "Medic", "content": "You do not need to buy it." } }, { "option": "Bake at home with healthy food.", "feedback": { "type": "npc", "npcName": "Medic", "content": "Yes! Baking at home is a good choice." } }, { "option": "Eat sweet food all the time.", "feedback": { "type": "npc", "npcName": "Medic", "content": "Too much sweet food is not healthy." } } ], "answer": [ 1 ], "meaning": "" }, { "type": "npc", "npcName": "Shark", "content": "What should I do to live a healthy life?", "optionList": [ { "option": "Go to bed late and get up late.", "feedback": { "type": "npc", "npcName": "Medic", "content": "This is not a healthy routine." } }, { "option": "Go to bed on time and get up early.", "feedback": { "type": "npc", "npcName": "Medic", "content": "Yes! A good routine is important." } }, { "option": "Smoke and drink alcohol.", "feedback": { "type": "npc", "npcName": "Medic", "content": "These things are bad for your body." } } ], "answer": [ 1 ], "meaning": "" }, { "type": "npc", "npcName": "Shark", "content": "What do I need to keep healthy?", "optionList": [ { "option": "A lot of money.", "feedback": { "type": "npc", "npcName": "Medic", "content": "I don't think so." } }, { "option": "Expensive things.", "feedback": { "type": "npc", "npcName": "Medic", "content": "You do not need expensive things." } }, { "option": "Good habits.", "feedback": { "type": "npc", "npcName": "Medic", "content": "Right! Good habits are the most important." } } ], "answer": [ 2 ], "meaning": "" }, { "type": "npc", "npcName": "Shark", "content": "What is a healthy life NOT about?", "optionList": [ { "option": "Money.", "feedback": { "type": "npc", "npcName": "Medic", "content": "Right! A healthy life is not about money." } }, { "option": "Good habits.", "feedback": { "type": "npc", "npcName": "Medic", "content": "Good habits are very important." } }, { "option": "Healthy food.", "feedback": { "type": "npc", "npcName": "Medic", "content": "Healthy food helps your body feel better." } } ], "answer": [ 0 ], "meaning": "" } ] }
flowInfo
{ "sequence": [ { "audio": [ 0 ] }, { "question": [ 0 ] }, { "audio": [ 1 ] }, { "question": [ 1, 2, 3 ] } ] }
studyInfo
{ "closing": { "type": "npc", "content": "很好！你已经回答完了全部问题，相信你已经听懂了这个任务中所有的重点句子。现在让我们来查看结果吧!", "npcName": "Brainy" }, "learningPart": [ { "leadIn": { "type": "npc", "content": "When you really want sweet food, like biscuits or cake, you can bake at home.", "npcName": "Brainy" }, "content": "刚刚听到的音频中，包含了一个关键短语 bake at home，意思是在家烘焙。正确的发音是 /beɪk æt həʊm/。", "type": "npc", "npcName": "Brainy", "learning": [ { "answer": [ 0 ], "meaning": "听音选句", "optionList": [ { "feedback": { "type": "npc", "content": "太厉害啦！你准确听出了句子里的重点短语 bake at home！", "npcName": "Brainy" }, "option": "When you really want sweet food, like biscuits or cake, you can bake at home." }, { "feedback": { "type": "npc", "content": "不对哦，这句话说的是 buy at the shop，不是 bake at home，再仔细听一遍音频试试吧！", "npcName": "Brainy" }, "option": "When you really want sweet food, like biscuits or cake, you can buy at the shop." } ], "question": { "type": "npc", "npcName": "Brainy", "content": "仔细听音频内容，选出你听到的句子吧。" } }, { "answer": [ 0 ], "meaning": "听音选意", "optionList": [ { "feedback": { "type": "npc", "content": "完全正确！你不仅理解了整句话的意思，还掌握了 bake at home 这个实用短语哦，太棒啦！", "npcName": "Brainy" }, "option": "当你很想吃甜食，比如饼干或蛋糕时，你可以在家烘焙。" }, { "feedback": { "type": "npc", "content": "不对哦，句子里说的不是去商店买的意思，再好好想一想呀。", "npcName": "Brainy" }, "option": "当你很想吃甜食，比如饼干或蛋糕时，你可以去商店买。" } ], "question": { "type": "npc", "npcName": "Brainy", "content": "现在来看看这句话是什么意思，选出正确的翻译吧。" } } ] } ] }
kpInfo (5个知识点)

# | kpId | kpType | kpTitle | kpSkill | kpSkillName
--- | --- | --- | --- | --- | ---
[0] |  |  | bake v. 烘焙；烤制 |  |
[1] |  |  | healthy adj. 健康的 |  |
[2] |  |  | money n. 钱 |  |
[3] |  |  | cake n. 蛋糕 |  |
[4] |  |  | alcohol n. 含酒精饮料 |  |

中间结果: 学习过程配置

    ```
    # 重点句子 1
    音频文本：When you really want sweet food, like biscuits or cake, you can bake at home.
    讲解文本：刚刚听到的音频中，包含了一个关键短语 bake at home，意思是在家烘焙。正确的发音是 /beɪk æt həʊm/。
    1. 听音选句
    Brainy：仔细听音频内容，选出你听到的句子吧。
    - When you really want sweet food, like biscuits or cake, you can bake at home. [正确]
      - Brainy：太厉害啦！你准确听出了句子里的重点短语 bake at home！
    - When you really want sweet food, like biscuits or cake, you can buy at the shop.
      - Brainy：不对哦，这句话说的是 buy at the shop，不是 bake at home，再仔细听一遍音频试试吧！

    2. 听音选意
    Brainy：现在来看看这句话是什么意思，选出正确的翻译吧。
    - 当你很想吃甜食，比如饼干或蛋糕时，你可以在家烘焙。[正确]
      - Brainy：完全正确！你不仅理解了整句话的意思，还掌握了 bake at home 这个实用短语哦，太棒啦！
    - 当你很想吃甜食，比如饼干或蛋糕时，你可以去商店买。
      - Brainy：不对哦，句子里说的不是去商店买的意思，再好好想一想呀。
    ---
    # 完成反馈
    Brainy：很好！你已经回答完了全部问题，相信你已经听懂了这个任务中所有的重点句子。现在让我们来查看结果吧!
    ```

中间结果: 互动描述

    You listened to the audio about how to live a healthy life, learning that you should go to bed on time and get up early, stay away from smoking and alcohol. (你听了关于如何健康生活的音频，了解到应该按时睡觉早起，远离烟酒。)
    You also learned that keeping healthy doesn't need much money or expensive things, and good habits are the most important for a healthy body. (你还了解到保持健康不需要很多钱或昂贵的东西，好习惯对健康的身体来说最重要。)

3 听力拖拽 cId: 0000800 ? 失败 ▶
错误: LLM返回内容不是合法JSON: Expecting value: line 1 column 1 (char 0) 内容: 无
4 核心听力选择 cId: 0000800 core_listening_choose
生成成功 ▶
taskInfo
{ "cType": "core_listening_choose", "cId": "0000800", "title": "", "sceneDesc": "心心念念的短裤原来卡在石头间了，快抓紧时间请钓鱼叔叔帮忙钓上来吧！", "key": [ { "desc": "", "keyList": [ { "type": "default", "content": "summer", "desc": "n. 夏天" }, { "type": "default", "content": "hot", "desc": "adj. 热的" }, { "type": "default", "content": "trousers", "desc": "n. 长裤" }, { "type": "default", "content": "shorts", "desc": "n. 短裤" }, { "type": "default", "content": "It feels...", "desc": "感觉......" }, { "type": "default", "content": "Could you...", "desc": "可以请你......吗？" } ] } ], "resourceMapping": { "Vicky": 658 }, "cDesc": "请提供具体的任务名称、题目材料以及对应的正确答案等详细输入信息，我会按照要求为你生成符合规范的叙事化描述。" }
questionGroup
无
studyInfo
{ "learningPart": [ { "type": "npc", "npcName": "Brainy", "content": "This summer!", "learning": [ { "question": { "content": "刚刚听到的音频中，包含了关键短语 summer，意思是夏天，是一年中天气最热的季节哦。", "type": "npc", "npcName": "Brainy" }, "extendQuestion": { "content": "仔细听音频，选一选你听到的句子是哪一个吧。", "type": "npc", "npcName": "Brainy" }, "optionList": [ { "option": "This winter!", "feedback": { "type": "npc", "content": "不对哦，这句话说的是winter（冬天），不是我们听到的内容，再试试看呀。", "npcName": "Brainy" } }, { "option": "This summer!", "feedback": { "type": "npc", "content": "太棒啦！你准确听出了重点单词summer，太厉害了！", "npcName": "Brainy" } } ], "answer": [ 1 ] }, { "question": { "content": "This summer!", "type": "npc", "npcName": "Brainy" }, "extendQuestion": { "content": "“这个冬天！”这句话的意思和你听到的英文一致吗？", "type": "npc", "npcName": "Brainy" }, "optionList": [ { "option": "对 / Yes", "feedback": { "type": "npc", "content": "不对哦，summer是夏天的意思，再仔细想想呀。", "npcName": "Brainy" } }, { "option": "错 / No", "feedback": { "type": "npc", "content": "完全正确！你已经掌握了summer这个单词的意思，太棒啦！", "npcName": "Brainy" } } ], "answer": [ 1 ] } ] } ], "closing": { "type": "npc", "content": "很好！你已经回答完了全部问题，相信你已经听懂了这个任务中所有的重点句子。现在让我们来查看结果吧!", "npcName": "Brainy" } }
kpInfo (6个知识点)

# | kpId | kpType | kpTitle | kpSkill | kpSkillName
--- | --- | --- | --- | --- | ---
[0] |  |  | summer n. 夏天 |  |
[1] |  |  | hot adj. 热的 |  |
[2] |  |  | trousers n. 长裤 |  |
[3] |  |  | shorts n. 短裤 |  |
[4] |  |  | It feels... 感觉...... |  |
[5] |  |  | Could you... 可以请你......吗？ |  |

中间结果: 学习过程配置

    ```
    # 重点句子 1
    音频文本：This summer!
    讲解文本：刚刚听到的音频中，包含了关键短语 summer，意思是夏天，是一年中天气最热的季节哦。
    1. 听音选句
    Brainy：仔细听音频，选一选你听到的句子是哪一个吧。
    - This winter!
      - Brainy：不对哦，这句话说的是winter（冬天），不是我们听到的内容，再试试看呀。
    - This summer! [正确]
      - Brainy：太棒啦！你准确听出了重点单词summer，太厉害了！

    2. 听音选意
    Brainy：“这个冬天！”这句话的意思和你听到的英文一致吗？
    - 对 / Yes
      - Brainy：不对哦，summer是夏天的意思，再仔细想想呀。
    - 错 / No [正确]
      - Brainy：完全正确！你已经掌握了summer这个单词的意思，太棒啦！
    ---
    # 完成反馈
    Brainy：很好！你已经回答完了全部问题，相信你已经听懂了这个任务中所有的重点句子。现在让我们来查看结果吧!
    ```

中间结果: 互动描述

    请提供具体的任务名称、题目材料以及对应的正确答案等详细输入信息，我会按照要求为你生成符合规范的叙事化描述。

5 看图组句 cId: 0000800 ? 失败 ▶
错误: LLM返回内容不是合法JSON: Expecting value: line 1 column 1 (char 0) 内容: 无
6 看图撰写 cId: 0000800 ? 失败 ▶
错误: LLM返回内容不是合法JSON: Expecting value: line 1 column 1 (char 0) 内容: 无
7 邮件组句 cId: 0000800 ? 失败 ▶
错误: LLM返回内容不是合法JSON: Expecting ',' delimiter: line 1 column 219 (char 218) 内容: {"learningPart":[{"leadIn":{"desc":"What is your opinion on the job?"},"learning":[{"question":{"type":"npc","npcName":"Brainy","content":"你在邮件里向Rebecca解释留下的原因，提到“这份工作对我们来说很重要”，现在需要补全句子“The ___ is important for us.”},"optionList":[{"option":"job","feedback":{"type":"npc","npcName":"Brainy","content"
8 核心邮件撰写 cId: 0000800 core_writing_questionWrite
生成成功 ▶
taskInfo
{ "cId": "0000800", "cType": "core_writing_questionWrite", "title": "编写给 Rebecca 的邮件", "taskDesc": "请根据提示问题，用英文组句完成这封邮件。", "sceneDesc": "Rebecca听上去十分担心你们的安全，你们刚刚做出了决定，要继续留在 Wander Port 进行学院的探索任务，你需要回一封邮件给她，告诉她你们的决定以及原因，顺便询问她何时会来。", "img": "", "plotSummary": "", "stemDesc": [ "Tell her your decision and why.", "Ask her when she will arrive." ], "key": [ { "keyList": [ { "type": "default", "content": "The job is...", "desc": "这份工作......" }, { "type": "default", "content": "That's why we have to...", "desc": "这就是为什么我们必须……" }, { "type": "default", "content": "When will you arrive?", "desc": "你什么时候会到？" } ] } ], "cDesc": "Dear Rebecca, I know you are worried. But this is our best chance to explore Wander Port. The job is important for us. That's why we have to stay. Will you come to Wander Port some day? If so, when will you arrive?\n（亲爱的丽贝卡：我知道你很担心。但这是我们探索漫游港的最佳机会。这项工作对我们来说很重要。这就是我们必须留下来的原因。你会不会有一天来漫游港呢？如果会的话，你什么时候会到？）" }
textInfo
{ "inputType": "write", "passCondition": "1. 这份工作很重要 2. 这就是我们为什么要留下 3. 你什么时候将会到达？", "textList": [ { "mode": "preset", "desc": "Dear Rebecca,", "answerText": "" }, { "mode": "preset", "desc": "I know you are worried. But this is our best chance to explore Wander Port.", "answerText": "" }, { "mode": "fillingInput", "desc": "The ____ is important for us.", "answerText": "job", "hint": "这份工作（job）对我们来说很重要。" }, { "mode": "fillingInput", "desc": "That's ____ we have to stay.", "answerText": "why", "hint": "这就是为什么（why）我们必须留下。" }, { "mode": "preset", "desc": "Will you come to Wander Port some day?", "answerText": "" }, { "mode": "fillingInput", "desc": "If so, _________ you arrive?", "answerText": "when will", "hint": "如果是这样的话，你什么时候会（when will）到达？" } ] }
studyInfo
{ "learningPart": [ { "leadIn": { "desc": "Tell her your decision and why." }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "你打算给Rebecca写邮件，开头需要正确称呼她，下列哪个选项是合适的邮件开头？" }, "optionList": [ { "option": "Dear Rebecca,", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太棒了！这是英文邮件中称呼对方的标准正确表达，很适合用在邮件开头哦。" } }, { "option": "Hello Rebecca!", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这个表达虽然也能打招呼，但正式邮件的开头称呼通常用\"Dear + 姓名\"的格式，更符合给师长/长辈写邮件的语境，再试试哦。" } }, { "option": "Hey Rebecca,", "feedback": { "type": "npc", "npcName": "Brainy", "content": "\"Hey\"是非常口语化的打招呼方式，适合熟悉的朋友日常聊天，用在正式邮件里不够礼貌哦，再选一下吧。" } } ], "answer": [ 0 ], "write": { "desc": "Dear Rebecca,", "trans": "亲爱的丽贝卡：" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } }, { "question": { "type": "npc", "npcName": "Brainy", "content": "你需要先回应Rebecca的担心，同时说明留在Wander Port的意义，下列哪句话最符合这个语境？" }, "optionList": [ { "option": "I know you are worried. But this is our best chance to explore Wander Port.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "回答正确！这句话既回应了Rebecca的担忧，也清晰说明了留下探索Wander Port的重要性，非常贴合语境。" } }, { "option": "I know you are worried. But we don't care about the danger.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这个表达太生硬啦，而且没有说明留下的原因，反而会让Rebecca更担心，不符合写邮件安抚对方的目的哦。" } }, { "option": "I know you are worried. But we will come back right now.", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这句话说你们现在就要回来，和你们要留在当地探索的决定完全相反啦，再想想哦。" } } ], "answer": [ 0 ], "write": { "desc": "I know you are worried. But this is our best chance to explore Wander Port.", "trans": "我知道你很担心。但这是我们探索漫游港的最佳机会。" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } }, { "question": { "type": "npc", "npcName": "Brainy", "content": "你想要解释这项探索工作对你们很重要，句子\"The ____ is important for us.\"的空格处应该填什么？" }, "optionList": [ { "option": "job", "feedback": { "type": "npc", "npcName": "Brainy", "content": "答对啦！\"job\"是可数名词单数，和句子里的be动词\"is\"搭配 perfectly，准确表达了“这项工作对我们很重要”的意思。" } }, { "option": "jobs", "feedback": { "type": "npc", "npcName": "Brainy", "content": "\"jobs\"是可数名词复数，对应的be动词应该是\"are\"，和句中的\"is\"不匹配哦，再试一下。" } }, { "option": "projects", "feedback": { "type": "npc", "npcName": "Brainy", "content": "\"projects\"也是可数名词复数，同样和句中的单数be动词\"is\"不搭配，而且也不符合原文要表达的“这一项工作”的含义哦。" } } ], "answer": [ 0 ], "write": { "desc": "The job is important for us.", "trans": "这项工作对我们来说很重要。" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } }, { "question": { "type": "npc", "npcName": "Brainy", "content": "你现在要说明这就是你们必须留下的原因，句子\"That's ____ we have to stay.\"的空格处应该填哪个词？" }, "optionList": [ { "option": "why", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太厉害啦！\"That's why...\"是固定表达，意思是“这就是……的原因”，正好对应你要解释留下原因的语境。" } }, { "option": "how", "feedback": { "type": "npc", "npcName": "Brainy", "content": "填入\"how\"的话句子意思就变成了“这就是我们必须留下的方式”，和你要表达的“留下的原因”语义不符哦，再想想。" } }, { "option": "which", "feedback": { "type": "npc", "npcName": "Brainy", "content": "\"which\"的意思是“哪一个”，放在这里句子逻辑不通顺哦，不符合解释原因的语境。" } } ], "answer": [ 0 ], "write": { "desc": "That's why we have to stay.", "trans": "这就是为什么我们必须留下来。" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } } ] }, { "leadIn": { "desc": "Ask her when she will arrive." }, "learning": [ { "question": { "type": "npc", "npcName": "Brainy", "content": "你想要询问Rebecca未来是否会来Wander Port，下列哪个表达是正确的？" }, "optionList": [ { "option": "Will you come to Wander Port some day?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "完全正确！这个句子用一般将来时询问对方未来是否会来，非常符合你想询问Rebecca行程的语境。" } }, { "option": "Do you come to Wander Port some day?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "一般现在时通常用来描述经常性、习惯性的动作，这里询问的是未来的计划，时态使用不正确哦。" } }, { "option": "Are you come to Wander Port some day?", "feedback": { "type": "npc", "npcName": "Brainy", "content": "这个句子语法有错误哦，be动词\"are\"不能直接和动词原形\"come\"搭配使用，再选一下吧。" } } ], "answer": [ 0 ], "write": { "desc": "Will you come to Wander Port some day?", "trans": "你会不会有一天来漫游港呢？" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } }, { "question": { "type": "npc", "npcName": "Brainy", "content": "你接着想问Rebecca如果来的话会什么时候抵达，句子\"If so, _________ you arrive?\"的空格处应该填什么？" }, "optionList": [ { "option": "when will", "feedback": { "type": "npc", "npcName": "Brainy", "content": "太棒啦！询问将来的时间要用一般将来时\"when will + 主语 + 动词原形\"的结构，这句话的意思就是“如果是这样的话，你什么时候会到？”，完全符合语境。" } }, { "option": "when is", "feedback": { "type": "npc", "npcName": "Brainy", "content": "句中已经有实义动词\"arrive\"了，不能再用be动词\"is\"哦，语法上是错误的，再试试。" } }, { "option": "how is", "feedback": { "type": "npc", "npcName": "Brainy", "content": "\"how\"是询问方式的疑问词，这里你想问的是抵达的时间，疑问词不对，同时也不能和动词\"arrive\"搭配哦。" } } ], "answer": [ 0 ], "write": { "desc": "If so, when will you arrive?", "trans": "如果会的话，你什么时候会到？" }, "feedback": { "type": "npc", "npcName": "Brainy", "content": "你写的很好！" } } ] } ], "closing": { "type": "npc", "npcName": "Brainy", "content": "恭喜你，你已经掌握了正式邮件的称呼表达、回应他人担忧并说明原因的句式、主谓一致的用法、That's why固定句型、一般将来时询问未来计划的表达以及询问时间的疑问词结构，成功完成了给Rebecca的邮件编写！" } }
evalInfo
{ "title": "编写给 Rebecca 的邮件", "taskDesc": "请根据提示问题，用英文组句完成这封邮件。", "sceneDesc": "Rebecca听上去十分担心你们的安全，你们刚刚做出了决定，要继续留在 Wander Port 进行学院的探索任务，你需要回一封邮件给她，告诉她你们的决定以及原因，顺便询问她何时会来。", "knowledge": "The job is... 这份工作......That's why we have to... 这就是为什么我们必须……When will you arrive? 你什么时候会到？", "passCondition": "1. 这份工作很重要 2. 这就是我们为什么要留下 3. 你什么时候将会到达？", "textList": [ { "mode": "preset", "desc": "Dear Rebecca,", "answerText": "" }, { "mode": "preset", "desc": "I know you are worried. But this is our best chance to explore Wander Port.", "answerText": "" }, { "mode": "fillingInput", "desc": "The ____ is important for us.", "answerText": "job", "hint": "这份工作（job）对我们来说很重要。" }, { "mode": "fillingInput", "desc": "That's ____ we have to stay.", "answerText": "why", "hint": "这就是为什么（why）我们必须留下。" }, { "mode": "preset", "desc": "Will you come to Wander Port some day?", "answerText": "" }, { "mode": "fillingInput", "desc": "If so, _________ you arrive?", "answerText": "when will", "hint": "如果是这样的话，你什么时候会（when will）到达？" } ] }
kpInfo (1个知识点)

# | kpId | kpType | kpTitle | kpSkill | kpSkillName
--- | --- | --- | --- | --- | ---
[0] |  |  | The job is... 这份工作......That's why we have to... 这就是为什么我们必须……When will you arrive? 你什么时候会到？ |  |

中间结果: 学习流程配置

    ```
    # 问题1：
    Brainy: 你打算给Rebecca写邮件，开头需要正确称呼她，下列哪个选项是合适的邮件开头？
    用户选项:
    （选项 A）Dear Rebecca, [正确]
      Brainy: 太棒了！这是英文邮件中称呼对方的标准正确表达，很适合用在邮件开头哦。
    （选项 B）Hello Rebecca!
      Brainy: 这个表达虽然也能打招呼，但正式邮件的开头称呼通常用"Dear + 姓名"的格式，更符合给师长/长辈写邮件的语境，再试试哦。
    （选项 C）Hey Rebecca,
      Brainy: "Hey"是非常口语化的打招呼方式，适合熟悉的朋友日常聊天，用在正式邮件里不够礼貌哦，再选一下吧。

    # 问题2：
    Brainy: 你需要先回应Rebecca的担心，同时说明留在Wander Port的意义，下列哪句话最符合这个语境？
    用户选项:
    （选项 A）I know you are worried. But this is our best chance to explore Wander Port. [正确]
      Brainy: 回答正确！这句话既回应了Rebecca的担忧，也清晰说明了留下探索Wander Port的重要性，非常贴合语境。
    （选项 B）I know you are worried. But we don't care about the danger.
      Brainy: 这个表达太生硬啦，而且没有说明留下的原因，反而会让Rebecca更担心，不符合写邮件安抚对方的目的哦。
    （选项 C）I know you are worried. But we will come back right now.
      Brainy: 这句话说你们现在就要回来，和你们要留在当地探索的决定完全相反啦，再想想哦。

    # 问题3：
    Brainy: 你想要解释这项探索工作对你们很重要，句子"The ____ is important for us."的空格处应该填什么？
    用户选项:
    （选项 A）job [正确]
      Brainy: 答对啦！"job"是可数名词单数，和句子里的be动词"is"搭配 perfectly，准确表达了“这项工作对我们很重要”的意思。
    （选项 B）jobs
      Brainy: "jobs"是可数名词复数，对应的be动词应该是"are"，和句中的"is"不匹配哦，再试一下。
    （选项 C）projects
      Brainy: "projects"也是可数名词复数，同样和句中的单数be动词"is"不搭配，而且也不符合原文要表达的“这一项工作”的含义哦。

    # 问题4：
    Brainy: 你现在要说明这就是你们必须留下的原因，句子"That's ____ we have to stay."的空格处应该填哪个词？
    用户选项:
    （选项 A）why [正确]
      Brainy: 太厉害啦！"That's why..."是固定表达，意思是“这就是……的原因”，正好对应你要解释留下原因的语境。
    （选项 B）how
      Brainy: 填入"how"的话句子意思就变成了“这就是我们必须留下的方式”，和你要表达的“留下的原因”语义不符哦，再想想。
    （选项 C）which
      Brainy: "which"的意思是“哪一个”，放在这里句子逻辑不通顺哦，不符合解释原因的语境。

    # 问题5：
    Brainy: 你想要询问Rebecca未来是否会来Wander Port，下列哪个表达是正确的？
    用户选项:
    （选项 A）Will you come to Wander Port some day? [正确]
      Brainy: 完全正确！这个句子用一般将来时询问对方未来是否会来，非常符合你想询问Rebecca行程的语境。
    （选项 B）Do you come to Wander Port some day?
      Brainy: 一般现在时通常用来描述经常性、习惯性的动作，这里询问的是未来的计划，时态使用不正确哦。
    （选项 C）Are you come to Wander Port some day?
      Brainy: 这个句子语法有错误哦，be动词"are"不能直接和动词原形"come"搭配使用，再选一下吧。

    # 问题6：
    Brainy: 你接着想问Rebecca如果来的话会什么时候抵达，句子"If so, _________ you arrive?"的空格处应该填什么？
    用户选项:
    （选项 A）when will [正确]
      Brainy: 太棒啦！询问将来的时间要用一般将来时"when will + 主语 + 动词原形"的结构，这句话的意思就是“如果是这样的话，你什么时候会到？”，完全符合语境。
    （选项 B）when is
      Brainy: 句中已经有实义动词"arrive"了，不能再用be动词"is"哦，语法上是错误的，再试试。
    （选项 C）how is
      Brainy: "how"是询问方式的疑问词，这里你想问的是抵达的时间，疑问词不对，同时也不能和动词"arrive"搭配哦。
    ```

中间结果: 互动描述

    Dear Rebecca, I know you are worried. But this is our best chance to explore Wander Port. The job is important for us. That's why we have to stay. Will you come to Wander Port some day? If so, when will you arrive?
    （亲爱的丽贝卡：我知道你很担心。但这是我们探索漫游港的最佳机会。这项工作对我们来说很重要。这就是我们必须留下来的原因。你会不会有一天来漫游港呢？如果会的话，你什么时候会到？）

9 对话表达 cId: 0000800 mid_dialog_express
生成成功 ▶
jsonData
{ "cType": "mid_dialog_express", "cId": "0000800", "title": "回答养蜂人的问题", "asrPrompt": "养蜂人，蜂蜜，spring，春天", "resourceMapping": { "Vicky": 658 }, "preDialog": [], "imgShowTimingList": [ "content", "feedback" ], "img": "0000800.png", "tip": "春天会收获最多的蜂蜜哦~", "corFeedback": { "type": "npc", "npcName": "Sunny", "content": "You are so clever!" }, "errFeedback": { "type": "npc", "npcName": "Beekeeper", "content": "Try again." }, "question": { "desc": "回答养蜂人的问题。" }, "example": { "type": "user", "content": "Spring!" }, "postDialog": [] }
kpInfo (1个知识点)

# | kpId | kpType | kpTitle | kpSkill | kpSkillName
--- | --- | --- | --- | --- | ---
[0] |  |  | spring |  |

10 对话选择 cId: 0000800 mid_dialog_choose
生成成功 ▶
jsonData
{ "cType": "mid_dialog_choose", "cId": "0000800", "title": "房屋主人是谁", "resourceMapping": { "Vicky": 658 }, "preDialog": [ { "type": "npc", "npcName": "Dad", "content": "Is it for a cat?" } ], "imgShowTimingList": [ "content", "feedback" ], "img": "0000800.png", "optionList": [ { "option": "This is Mr Rabbit's home.", "needAudio": true }, { "option": "This is a cat's home.", "needAudio": true } ], "answer": [ 0 ], "corFeedback": { "type": "npc", "npcName": "Dad", "content": "Oh, I see." }, "errFeedback": { "type": "npc", "npcName": "Dad", "content": "It is too small for a cat." }, "postDialog": [] }
kpInfo (1个知识点)

# | kpId | kpType | kpTitle | kpSkill | kpSkillName
--- | --- | --- | --- | --- | ---
[0] |  |  | home |  |

11 对话选读 cId: 0000800 mid_dialog_select
生成成功 ▶
jsonData
{ "cType": "mid_dialog_select", "cId": "0000800", "title": "评价随地睡觉的习惯", "resourceMapping": { "Vicky": 658 }, "preDialog": [], "imgShowTimingList": [], "optionList": [ { "option": "It sounds healthy.", "needAudio": false, "feedback": { "type": "npc", "npcName": "Medic", "content": "Really? Medic wants more sleep too!" } }, { "option": "It isn't healthy.", "needAudio": false, "feedback": { "type": "npc", "npcName": "Medic", "content": "Really? But Medic likes sleeping..." } } ], "postDialog": [ { "type": "user", "content": "Going to bed early and getting up early is healthy." }, { "type": "user", "content": "Sleeping too much is not healthy." }, { "type": "npc", "npcName": "Medic", "content": "Medic remembers it now!" } ] }
kpInfo (1个知识点)

# | kpId | kpType | kpTitle | kpSkill | kpSkillName
--- | --- | --- | --- | --- | ---
[0] |  |  | healthy(词义) |  |

12 信息描写 cId: 0000800 mid_message_trace
生成成功 ▶
jsonData
{ "cType": "mid_message_trace", "cId": "0000800", "title": "购买葡萄", "resourceMapping": { "Vicky": 658 }, "cDesc": "You bought the grape as your needed fruit. (你购买了需要的水果葡萄。)", "question": { "desc": "请描写你需要的水果" }, "trace": "grape", "img": "0000800.png", "inputSet": [] }
kpInfo (1个知识点)

# | kpId | kpType | kpTitle | kpSkill | kpSkillName
--- | --- | --- | --- | --- | ---
[0] |  |  | Grape (词形 - 拼写规律) |  |

13 信息拼词 cId: 0000800 mid_message_spell
生成成功 ▶
jsonData
{ "cType": "mid_message_spell", "cId": "0000800", "title": "购买葡萄", "resourceMapping": { "Vicky": 658 }, "cDesc": "You bought a bunch of fresh grapes. (你购买了一串新鲜的葡萄。)", "question": { "desc": "请填入“葡萄”的正确的英文拼写" }, "tip": "葡萄的英文是 grape / 第二个字母是 r 哦，再想想最后一个空应该填什么吧", "inputConfig": [ { "stem": "G（2）pe", "value": "ra" } ], "stemList": [ "h", "a", "r", "l", "e", "w" ], "img": "0000800.png", "inputSet": [] }
kpInfo (1个知识点)

# | kpId | kpType | kpTitle | kpSkill | kpSkillName
--- | --- | --- | --- | --- | ---
[0] |  |  | Grape (词形 - 拼写规律) |  |

14 信息组句 cId: 0000800 mid_message_combine
生成成功 ▶
jsonData
{ "cType": "mid_message_combine", "cId": "0000800", "title": "填写信息表", "resourceMapping": { "Vicky": 658 }, "cDesc": "You filled in the form with \"Is Maeve the visitor you invited?\".（你在信息表中填入了“梅芙是你邀请的访客吗？”。）", "question": { "desc": "请在空白处填入正确的单词，组成句子" }, "tip": "可以用 is 引导的一般疑问句询问；you invited 是 visitor 的后置定语", "optionList": [ { "option": "is" }, { "option": "the visitor" }, { "option": "you invited" }, { "option": "Maeve" } ], "answer": [ 0, 3, 1, 2 ], "img": "0000800.png", "inputSet": [] }
kpInfo (1个知识点)

# | kpId | kpType | kpTitle | kpSkill | kpSkillName
--- | --- | --- | --- | --- | ---
[0] |  |  | Grape (词形 - 拼写规律) |  |

15 信息补词 cId: 0000800 mid_message_fillin
生成成功 ▶
jsonData
{ "cType": "mid_message_fillin", "cId": "0000800", "title": "填写信息表", "resourceMapping": { "Vicky": 658 }, "cDesc": "You filled in \"now\" to form \"knowledge\".（你填入“now”组成了单词“knowledge”，意为知识。）", "question": { "desc": "请在空白处填入正确的字母，组成完整单词" }, "tip": "需要填入的单词的中文释义是“知识”", "inputConfig": [ { "stem": "K(3)ledge", "value": "now" } ], "img": "0000800.png", "inputSet": [] }
kpInfo (1个知识点)

# | kpId | kpType | kpTitle | kpSkill | kpSkillName
--- | --- | --- | --- | --- | ---
[0] |  |  | Grape (词形 - 拼写规律) |  |

16 信息填词 cId: 0000800 mid_message_word
生成成功 ▶
jsonData
{ "cType": "mid_message_word", "cId": "0000800", "title": "填写信息表", "resourceMapping": { "Vicky": 658 }, "cDesc": "You filled in \"knowledge\" and \"information\" correctly. (你正确填写了“知识”对应的英文单词。)", "question": { "desc": "请在空白处填入合适的单词，使句意完整" }, "tip": "需要填入的单词的中文释义是“知识”", "answer": [ "knowledge", "information" ], "img": "0000800.png", "inputSet": [] }
kpInfo (1个知识点)

# | kpId | kpType | kpTitle | kpSkill | kpSkillName
--- | --- | --- | --- | --- | ---
[0] |  |  | Grape (词形 - 拼写规律) |  |

17 信息填句 cId: 0000800 mid_message_sentence
生成成功 ▶
jsonData
{ "cType": "mid_message_sentence", "cId": "0000800", "title": "填写信息表", "resourceMapping": { "Vicky": 658 }, "cDesc": "You completed the information form with the correct sentence. (你填好了信息表。)", "question": { "desc": "请填入正确的内容，使句意完整" }, "tip": "你可以使用 The main purpose of this tour is...", "answerHint": "The main purpose of this tour is to learn knowledge about local traditional crafts.", "img": "0000800.png", "inputSet": [] }
kpInfo (1个知识点)

# | kpId | kpType | kpTitle | kpSkill | kpSkillName
--- | --- | --- | --- | --- | ---
[0] |  |  | Grape (词形 - 拼写规律) |  |

18 图片单选 cId: 0000800 mid_image_choose
生成成功 ▶
jsonData
{ "cType": "mid_image_choose", "cId": "0000800", "title": "选择合适的河段取水", "meaning": "", "resourceMapping": { "Vicky": 658 }, "question": { "desc": "Find $warm$ water.", "content": "Find $warm$ water." }, "imageInfo": { "questionImg": "0000800_question.png", "answerImg": "0000800_answer.png" }, "optionList": [ { "option": "0000800_option_00.png" }, { "option": "0000800_option_01.png" }, { "option": "0000800_option_02.png" } ], "answer": [ 2 ], "preDialog": [ { "type": "user", "content": "Look!" } ], "tip": "warm 指“温暖的”。", "corFeedback": { "type": "npc", "npcName": "User", "content": "Warm water here!" }, "errFeedback": { "type": "npc", "npcName": "User", "content": "It doesn't seem like there's warm water." }, "postDialog": [], "cDesc": "You found the warm water to get. (你找到了可以取用的温暖的水。)" }
kpInfo (1个知识点)

# | kpId | kpType | kpTitle | kpSkill | kpSkillName
--- | --- | --- | --- | --- | ---
[0] |  |  | warm |  |

19 图片多选 cId: 0000800 mid_image_multiple
生成成功 ▶
jsonData
{ "cType": "mid_image_multiple", "cId": "0000800", "title": "选出需要修复的部分", "meaning": "", "resourceMapping": { "Vicky": 658 }, "question": { "desc": "Find parts of the $house$.", "content": "Find parts of the $house$." }, "imageInfo": { "questionImg": "0000800_question.png", "answerImg": "0000800_answer.png" }, "optionList": [ { "option": "0000800_option_00.png" }, { "option": "0000800_option_01.png" }, { "option": "0000800_option_02.png" }, { "option": "0000800_option_03.png" }, { "option": "0000800_option_04.png" } ], "answer": [ 2, 3, 4 ], "preDialog": [ { "type": "npc", "npcName": "Peter", "content": "Let's fix the house!" }, { "type": "user", "content": "Okay." } ], "tip": "house 指“房子”。", "corFeedback": { "type": "user", "content": "These are all parts of the house." }, "errFeedback": { "type": "user", "content": "Let's check again." }, "postDialog": [], "cDesc": "You found the broken parts of the house. (你找到了房子需要修复的部分。)" }
kpInfo (1个知识点)

# | kpId | kpType | kpTitle | kpSkill | kpSkillName
--- | --- | --- | --- | --- | ---
[0] |  |  | house |  |

20 图片有序 cId: 0000800 mid_image_sequence
生成成功 ▶
jsonData
{ "cType": "mid_image_sequence", "cId": "0000800", "title": "排序跳格子顺序", "meaning": "", "resourceMapping": { "Vicky": 658 }, "question": { "desc": "We must go $one by one$." }, "imageInfo": { "questionImg": "0000800_question.png", "answerImg": "0000800_answer.png" }, "optionList": [ { "option": "0000800_option_00.png" }, { "option": "0000800_option_01.png" }, { "option": "0000800_option_02.png" }, { "option": "0000800_option_03.png" } ], "answer": [ 0, 1, 2, 3 ], "preDialog": [], "tip": "one by one指\"一个接一个\"", "corFeedback": {}, "errFeedback": { "type": "npc", "npcName": "Dan", "content": "We can't jump like that." }, "postDialog": [], "cDesc": "You arrange the hopscotch squares one by one. (你把跳格子的方块一个接一个排好顺序。)" }
kpInfo (1个知识点)

# | kpId | kpType | kpTitle | kpSkill | kpSkillName
--- | --- | --- | --- | --- | ---
[0] |  |  | ... one by one. |  |

21 图片拖拽 cId: 0000800 mid_image_drag
生成成功 ▶
jsonData
{ "cType": "mid_image_drag", "cId": "0000800", "title": "选出正确的物品", "meaning": "", "resourceMapping": {}, "question": { "desc": "Let's pick the $fish$, $crab$ and $octopus$ in order." }, "imageInfo": { "questionImg": "0000800_question.png", "answerImg": "0000800_answer.png" }, "optionList": [ { "option": "0000800_option_00.png" }, { "option": "0000800_option_01.png" }, { "option": "0000800_option_02.png" }, { "option": "0000800_option_03.png" } ], "answer": [ 0, 2, 1 ], "preDialog": [ { "type": "npc", "npcName": "Sarah", "content": "Look! So many gloves there!" } ], "tip": "fish 指“鱼”；crab 指“螃蟹”；octopus 指“章鱼”", "corFeedback": { "type": "npc", "npcName": "Daisy", "content": "Yes! You got it right!" }, "errFeedback": { "type": "npc", "npcName": "Daisy", "content": "This doesn't seem like a crab." }, "postDialog": [ { "type": "npc", "npcName": "Daisy", "content": "very good!" } ], "cDesc": "You found fish, crab and octopus in order. (你按顺序找到了鱼、螃蟹和章鱼。)" }
kpInfo (1个知识点)

# | kpId | kpType | kpTitle | kpSkill | kpSkillName
--- | --- | --- | --- | --- | ---
[0] |  |  | hammer （词义） |  |