refactor(stage-2): extract hardcoded curriculum datasets into data/seeds/*.json (-3100 lines)
This commit is contained in:
1 parent
20eef2c684
commit
9072fc365a
8 files changed
+5718
-3132
No files matched your search
+24
-912
@@ -17,923 +17,35 @@ import random
|
||||
from typing import Dict, Any, List, Optional
|
||||
from datetime import datetime
|
||||
|
||||
# Curated High-Yield Murphy Units (15 Units covering A1-B2 core grammar)
|
||||
CURATED_MURPHY_UNITS: List[Dict[str, Any]] = [
|
||||
# -------------------------------------------------------------------------
|
||||
# Unit 1: Present Continuous (I am doing)
|
||||
# -------------------------------------------------------------------------
|
||||
{
|
||||
"unit_num": 1,
|
||||
"level": "A1-A2",
|
||||
"category": "Present Tenses",
|
||||
"title": "Present Continuous (I am doing)",
|
||||
"subtitle": "Действие в процессе прямо сейчас или временная ситуация",
|
||||
"golden_formula": "S + am / is / are + V-ing\n(I am working / He is sleeping / They are playing)",
|
||||
"contrast_explanation": [
|
||||
{
|
||||
"situation_a": "Действие происходит в момент речи (Now / at the moment)",
|
||||
"example_a": "Please be quiet. I am trying to concentrate.",
|
||||
"trans_a": "Пожалуйста, потише. Я пытаюсь сосредоточиться (прямо сейчас).",
|
||||
"situation_b": "Временная ситуация в текущий период жизни (Around now / temporarily)",
|
||||
"example_b": "She is studying computer science at university this year.",
|
||||
"trans_b": "В этом году она изучает информатику в университете (временный процесс).",
|
||||
"key_difference": "Present Continuous всегда показывает незавершённое действие — мы находимся внутри процесса."
|
||||
}
|
||||
],
|
||||
"journaling_prompt": "Запишите в тетрадь золотую формулу маркером. Напишите от руки 2-3 предложения о том, что происходит прямо сейчас вокруг вас или какой временный проект вы делаете на этой неделе (например: 'I am reading an English book right now').",
|
||||
"exercises": [
|
||||
{
|
||||
"sentence": "Listen to those birds! They ___ so beautifully.",
|
||||
"target": "are singing",
|
||||
"clue": "поют (прямо сейчас)",
|
||||
"options": ["are singing", "sing", "is singing", "sang"],
|
||||
"explanation": "Слово-маркер 'Listen!' указывает, что действие происходит прямо сейчас, подлежащее 'They' требует форму 'are singing'."
|
||||
},
|
||||
{
|
||||
"sentence": "Why ___ you wearing a heavy coat in July?",
|
||||
"target": "are",
|
||||
"clue": "почему ты одет (в этот момент)",
|
||||
"options": ["are", "do", "have", "did"],
|
||||
"explanation": "Перед формой глагола с окончанием -ing ('wearing') в вопросе Present Continuous ставится вспомогательный глагол 'are'."
|
||||
},
|
||||
{
|
||||
"sentence": "The water is boiling, so please ___ the stove.",
|
||||
"target": "turn off",
|
||||
"clue": "выключи (действие-команда)",
|
||||
"options": ["turn off", "turning off", "is turning", "turned"],
|
||||
"explanation": "Вода кипит прямо сейчас (is boiling), поэтому обращение-просьба к собеседнику строится в повелительном наклонении: 'turn off'."
|
||||
},
|
||||
{
|
||||
"sentence": "Look! The bus is coming, we ___ run to catch it.",
|
||||
"target": "must",
|
||||
"clue": "должны (нужно поторопиться)",
|
||||
"options": ["must", "are", "do", "have"],
|
||||
"explanation": "'The bus is coming' — автобус подъезжает прямо сейчас, модальный глагол 'must' выражает необходимость действовать немедленно."
|
||||
},
|
||||
{
|
||||
"sentence": "I ___ for a software company while my friend looks for a job.",
|
||||
"target": "am currently working",
|
||||
"clue": "в настоящее время работаю (временная ситуация)",
|
||||
"options": ["am currently working", "works", "have worked", "worked"],
|
||||
"explanation": "Для временного текущего периода занятости используется форма Present Continuous: 'am currently working'."
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
# Unit 2: Present Simple (I do)
|
||||
# -------------------------------------------------------------------------
|
||||
{
|
||||
"unit_num": 2,
|
||||
"level": "A1-A2",
|
||||
"category": "Present Tenses",
|
||||
"title": "Present Simple (I do)",
|
||||
"subtitle": "Регулярные привычки, факты, законы природы и расписания",
|
||||
"golden_formula": "S + V1 (he/she/it + V-s/es)\n(I work / She works / Do you work? / He does not work)",
|
||||
"contrast_explanation": [
|
||||
{
|
||||
"situation_a": "Регулярное повторяющееся действие или привычка (Habit / Routine)",
|
||||
"example_a": "I drink a cup of black coffee every morning at 8:00.",
|
||||
"trans_a": "Я пью чашку чёрного кофе каждое утро в 8:00.",
|
||||
"situation_b": "Непреложный факт или закон природы (General truth / Fact)",
|
||||
"example_b": "The Earth moves around the Sun.",
|
||||
"trans_b": "Земля вращается вокруг Солнца (постоянный факт).",
|
||||
"key_difference": "Present Simple говорит о том, что верно вообще, регулярно или по расписанию, а не только в данную секунду."
|
||||
}
|
||||
],
|
||||
"journaling_prompt": "Запишите в тетрадь формулу с окончанием -s для he/she/it. Напишите от руки 2-3 ваших реальных привычки с маркерами частоты: always, usually, every day (например: 'I usually drink green tea after lunch').",
|
||||
"exercises": [
|
||||
{
|
||||
"sentence": "My brother ___ in a bank in the city center.",
|
||||
"target": "works",
|
||||
"clue": "работает (постоянно, факт)",
|
||||
"options": ["works", "work", "is working", "working"],
|
||||
"explanation": "Подлежащее 'My brother' (он) требует глагола с окончанием -s в Present Simple: 'works'."
|
||||
},
|
||||
{
|
||||
"sentence": "How often ___ you go to the gym during the week?",
|
||||
"target": "do",
|
||||
"clue": "вспомогательный глагол вопроса",
|
||||
"options": ["do", "does", "are", "have"],
|
||||
"explanation": "С местоимением 'you' вопрос в Present Simple образуется с помощью вспомогательного глагола 'do'."
|
||||
},
|
||||
{
|
||||
"sentence": "Water ___ at zero degrees Celsius.",
|
||||
"target": "freezes",
|
||||
"clue": "замерзает (закон природы)",
|
||||
"options": ["freezes", "freeze", "is freezing", "froze"],
|
||||
"explanation": "Физические факты и свойства веществ выражаются в Present Simple: неисчисляемое 'Water' требует 'freezes'."
|
||||
},
|
||||
{
|
||||
"sentence": "She ___ meat because she is a strict vegetarian.",
|
||||
"target": "does not eat",
|
||||
"clue": "не ест (постоянная привычка)",
|
||||
"options": ["does not eat", "do not eat", "is not eating", "not eats"],
|
||||
"explanation": "Отрицание для третьего лица единственного числа (she) образуется через 'does not' + начальная форма глагола 'eat'."
|
||||
},
|
||||
{
|
||||
"sentence": "The train to London ___ at 9:30 every morning.",
|
||||
"target": "departs",
|
||||
"clue": "отправляется (по расписанию)",
|
||||
"options": ["departs", "departing", "is departing", "depart"],
|
||||
"explanation": "Общественный транспорт и расписания в английском языке всегда передаются через Present Simple: 'departs'."
|
||||
}
|
||||
]
|
||||
},
|
||||
from pathlib import Path
|
||||
from app import config
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
# Unit 3: Present Continuous vs Present Simple (I am doing vs I do)
|
||||
# -------------------------------------------------------------------------
|
||||
{
|
||||
"unit_num": 3,
|
||||
"level": "A1-A2",
|
||||
"category": "Present Tenses",
|
||||
"title": "Present Continuous vs Present Simple (I am doing vs I do)",
|
||||
"subtitle": "Главный контраст: процесс сейчас vs факт вообще + глаголы состояния (Stative Verbs)",
|
||||
"golden_formula": "NOW: am/is/are + V-ing | ALWAYS/HABIT: V1(s)\nStative Verbs (NO -ing): know, like, want, understand, remember, believe",
|
||||
"contrast_explanation": [
|
||||
{
|
||||
"situation_a": "I am doing (Прямо сейчас / процесс в развитии)",
|
||||
"example_a": "Listen! What language are those tourists speaking?",
|
||||
"trans_a": "Послушай! На каком языке говорят эти туристы (сейчас)?",
|
||||
"situation_b": "I do (Вообще / способность / факт)",
|
||||
"example_b": "My colleague speaks three foreign languages fluently.",
|
||||
"trans_b": "Мой коллега свободно говорит на трёх иностранных языках (вообще).",
|
||||
"key_difference": "Глаголы чувств и мыслей (know, understand, want, believe, like) практически никогда не используются в форме -ing!"
|
||||
}
|
||||
],
|
||||
"journaling_prompt": "Запишите в тетрадь список глаголов состояния (Stative Verbs), которые нельзя ставить в -ing. Составьте от руки 2 контрастных предложения о себе (например: 'I live in Moscow, but this month I am staying with my parents').",
|
||||
"exercises": [
|
||||
{
|
||||
"sentence": "I ___ what you mean, could you explain it again?",
|
||||
"target": "do not understand",
|
||||
"clue": "не понимаю (глагол состояния understand)",
|
||||
"options": ["do not understand", "am not understanding", "not understand", "did not understood"],
|
||||
"explanation": "Глагол 'understand' является глаголом ментального состояния (stative verb) и не употребляется во времени Continuous."
|
||||
},
|
||||
{
|
||||
"sentence": "Look outside! It ___ heavily, take an umbrella.",
|
||||
"target": "is raining",
|
||||
"clue": "идёт дождь (прямо сейчас)",
|
||||
"options": ["is raining", "rains", "rained", "rain"],
|
||||
"explanation": "Призыв 'Look outside!' сигнализирует о действии, разворачивающемся на глазах прямо сейчас: 'is raining'."
|
||||
},
|
||||
{
|
||||
"sentence": "It seldom ___ in this dry desert region.",
|
||||
"target": "rains",
|
||||
"clue": "идёт дождь (редко, постоянное свойство)",
|
||||
"options": ["rains", "is raining", "was raining", "rain"],
|
||||
"explanation": "Наречие частотности 'seldom' (редко) описывает общее климатическое свойство местности $\rightarrow$ Present Simple: 'rains'."
|
||||
},
|
||||
{
|
||||
"sentence": "Do you ___ this beautiful song?",
|
||||
"target": "know",
|
||||
"clue": "знаешь (глагол состояния know)",
|
||||
"options": ["know", "knowing", "are knowing", "knew"],
|
||||
"explanation": "Глагол 'know' — стативный глагол, вопрос строится в Present Simple: 'Do you know?'"
|
||||
},
|
||||
{
|
||||
"sentence": "Normally I drink tea, but today I ___ coffee.",
|
||||
"target": "am drinking",
|
||||
"clue": "пью (сегодня, исключение из привычки)",
|
||||
"options": ["am drinking", "drink", "drinks", "drank"],
|
||||
"explanation": "Контраст: 'Normally I drink' (привычка в Simple), но 'today I am drinking' (временное отклонение от нормы в Continuous)."
|
||||
}
|
||||
]
|
||||
},
|
||||
_CURATED_MURPHY_UNITS_CACHE = None
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
# Unit 4: Past Simple (I did)
|
||||
# -------------------------------------------------------------------------
|
||||
{
|
||||
"unit_num": 4,
|
||||
"level": "A1-A2",
|
||||
"category": "Past Tenses",
|
||||
"title": "Past Simple (I did)",
|
||||
"subtitle": "Завершённое действие в прошлом с точной привязкой ко времени",
|
||||
"golden_formula": "S + V2 / V-ed | Did + S + V1? | S + did not + V1\n(yesterday, last night, two years ago, in 2021, when I was a child)",
|
||||
"contrast_explanation": [
|
||||
{
|
||||
"situation_a": "Действие полностью завершилось в прошлом (Finished past time)",
|
||||
"example_a": "We arrived in London yesterday afternoon.",
|
||||
"trans_a": "Мы прибыли в Лондон вчера днём (период 'вчера' завершён).",
|
||||
"situation_b": "Последовательность действий в прошлом (Story sequence)",
|
||||
"example_b": "He woke up, brushed his teeth, and left the house.",
|
||||
"trans_b": "Он проснулся, почистил зубы и вышел из дома (цепочка фактов).",
|
||||
"key_difference": "Past Simple отвечает на вопрос 'Когда это произошло?' и разрывает связь с настоящим моментом."
|
||||
}
|
||||
],
|
||||
"journaling_prompt": "Нарисуйте в тетради линию времени со стрелкой в прошлое. Напишите от руки 3 реальных вещи, которые вы сделали вчера с точным временем или маркерами (например: 'Yesterday I finished my work at 7 PM and cooked dinner').",
|
||||
"exercises": [
|
||||
{
|
||||
"sentence": "Mozart ___ more than six hundred pieces of music.",
|
||||
"target": "wrote",
|
||||
"clue": "написал (исторический факт в прошлом)",
|
||||
"options": ["wrote", "has written", "writes", "was writing"],
|
||||
"explanation": "Моцарт жил в прошлом, период его жизни завершён $\rightarrow$ употребляется Past Simple: 'wrote'."
|
||||
},
|
||||
{
|
||||
"sentence": "Where ___ you go on your last summer vacation?",
|
||||
"target": "did",
|
||||
"clue": "вспомогательный глагол для прошедшего времени",
|
||||
"options": ["did", "do", "were", "have"],
|
||||
"explanation": "Вопрос о завершённом периоде в прошлом ('last summer') строится с помощью вспомогательного глагола 'did'."
|
||||
},
|
||||
{
|
||||
"sentence": "I ___ buy the phone because it was ridiculously expensive.",
|
||||
"target": "did not",
|
||||
"clue": "не (отрицание в прошедшем времени)",
|
||||
"options": ["did not", "do not", "was not", "have not"],
|
||||
"explanation": "Отрицание смыслового глагола 'buy' в Past Simple требует вспомогательного 'did not' ('didn't')."
|
||||
},
|
||||
{
|
||||
"sentence": "She ___ her keys in the office two days ago.",
|
||||
"target": "lost",
|
||||
"clue": "потеряла (неправильный глагол lose $\rightarrow$ lost)",
|
||||
"options": ["lost", "losing", "has lost", "loses"],
|
||||
"explanation": "Маркер завершённого времени 'two days ago' строго требует формы Past Simple: 'lost'."
|
||||
},
|
||||
{
|
||||
"sentence": "When the meeting ___, everyone went to have lunch.",
|
||||
"target": "ended",
|
||||
"clue": "закончилась (последовательность событий)",
|
||||
"options": ["ended", "ends", "has ended", "is ending"],
|
||||
"explanation": "Последовательность завершённых действий в прошлом передаётся в Past Simple: 'ended ... went'."
|
||||
}
|
||||
]
|
||||
},
|
||||
def get_curated_murphy_units():
|
||||
global _CURATED_MURPHY_UNITS_CACHE
|
||||
if _CURATED_MURPHY_UNITS_CACHE is None:
|
||||
seeds_file = config.BASE_DIR / 'data' / 'seeds' / 'grammar_units.json'
|
||||
if seeds_file.is_file():
|
||||
try:
|
||||
with open(seeds_file, 'r', encoding='utf-8') as f:
|
||||
_CURATED_MURPHY_UNITS_CACHE = json.load(f)
|
||||
except Exception:
|
||||
_CURATED_MURPHY_UNITS_CACHE = []
|
||||
else:
|
||||
_CURATED_MURPHY_UNITS_CACHE = []
|
||||
return _CURATED_MURPHY_UNITS_CACHE
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
# Unit 5: Past Continuous (I was doing)
|
||||
# -------------------------------------------------------------------------
|
||||
{
|
||||
"unit_num": 5,
|
||||
"level": "A1-A2",
|
||||
"category": "Past Tenses",
|
||||
"title": "Past Continuous (I was doing)",
|
||||
"subtitle": "Процесс в конкретный момент в прошлом или фоновое действие",
|
||||
"golden_formula": "S + was / were + V-ing\n(At 4 PM yesterday I was driving home / They were sleeping)",
|
||||
"contrast_explanation": [
|
||||
{
|
||||
"situation_a": "Действие в процессе в конкретный момент времени в прошлом",
|
||||
"example_a": "At 10:30 last night, I was watching a documentary.",
|
||||
"trans_a": "В 10:30 вчера вечером я смотрел документальный фильм (был в процессе).",
|
||||
"situation_b": "Фоновое действие, во время которого произошло короткое событие",
|
||||
"example_b": "It was raining when we stepped outside.",
|
||||
"trans_b": "Шёл дождь (фон в процессе), когда мы вышли на улицу (короткий факт).",
|
||||
"key_difference": "Past Continuous показывает длительность и незавершённость действия в определённый момент прошлого."
|
||||
}
|
||||
],
|
||||
"journaling_prompt": "Запишите в тетрадь: 'was' для I/he/she/it, 'were' для you/we/they. Напишите от руки 2 предложения о том, чем именно вы занимались в 8 часов вечера вчера (например: 'At 8 PM yesterday I was walking my dog in the park').",
|
||||
"exercises": [
|
||||
{
|
||||
"sentence": "This time yesterday, we ___ over the Atlantic ocean.",
|
||||
"target": "were flying",
|
||||
"clue": "летели (были в процессе в этот момент)",
|
||||
"options": ["were flying", "flew", "are flying", "have flown"],
|
||||
"explanation": "'This time yesterday' указывает на точный момент в прошлом, когда действие находилось в развитии: 'were flying'."
|
||||
},
|
||||
{
|
||||
"sentence": "What ___ you doing when the fire alarm sounded?",
|
||||
"target": "were",
|
||||
"clue": "вспомогательный глагол для you в Past Continuous",
|
||||
"options": ["were", "was", "did", "are"],
|
||||
"explanation": "Для местоимения 'you' во времени Past Continuous используется вспомогательный глагол 'were'."
|
||||
},
|
||||
{
|
||||
"sentence": "He burned his hand while he ___ cooking dinner.",
|
||||
"target": "was",
|
||||
"clue": "был в процессе готовки",
|
||||
"options": ["was", "is", "did", "were"],
|
||||
"explanation": "Придаточное предложение времени с союзом 'while' описывает длительный процесс: 'while he was cooking'."
|
||||
},
|
||||
{
|
||||
"sentence": "The sun ___ brightly when I woke up this morning.",
|
||||
"target": "was shining",
|
||||
"clue": "светило (фон на момент пробуждения)",
|
||||
"options": ["was shining", "shone", "has shone", "shines"],
|
||||
"explanation": "Солнце уже светило (длительный фон), когда произошло единичное пробуждение: 'was shining'."
|
||||
},
|
||||
{
|
||||
"sentence": "They didn't hear the doorbell because they ___ to loud music.",
|
||||
"target": "were listening",
|
||||
"clue": "слушали (процесс, объясняющий причину)",
|
||||
"options": ["were listening", "listened", "are listening", "listen"],
|
||||
"explanation": "Они не услышали звонок, потому что в этот самый момент находились в процессе прослушивания: 'were listening'."
|
||||
}
|
||||
]
|
||||
},
|
||||
class _LazyUnitsList(list):
|
||||
def __iter__(self):
|
||||
return iter(get_curated_murphy_units())
|
||||
def __len__(self):
|
||||
return len(get_curated_murphy_units())
|
||||
def __getitem__(self, idx):
|
||||
return get_curated_murphy_units()[idx]
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
# Unit 6: Past Simple vs Past Continuous (I did vs I was doing)
|
||||
# -------------------------------------------------------------------------
|
||||
{
|
||||
"unit_num": 6,
|
||||
"level": "A1-A2",
|
||||
"category": "Past Tenses",
|
||||
"title": "Past Simple vs Past Continuous (I did vs I was doing)",
|
||||
"subtitle": "Короткий факт vs Длительный фон: пересечение двух событий",
|
||||
"golden_formula": "Background (Long): was/were + V-ing\nInterruption (Short): V2 / V-ed\n(While I was walking, I met my friend)",
|
||||
"contrast_explanation": [
|
||||
{
|
||||
"situation_a": "Длительное фоновое действие прерывается коротким фактом",
|
||||
"example_a": "I was taking a shower when the courier knocked on the door.",
|
||||
"trans_a": "Я принимал душ (фон), когда курьер постучал в дверь (факт).",
|
||||
"situation_b": "Два завершённых последовательных действия (Одно за другим)",
|
||||
"example_b": "I heard the knock and opened the door immediately.",
|
||||
"trans_b": "Я услышал стук и сразу открыл дверь (действие за действием).",
|
||||
"key_difference": "Was doing = действие уже шло. Did = действие произошло, началось или закончилось."
|
||||
}
|
||||
],
|
||||
"journaling_prompt": "Запишите в тетрадь формулу: 'While + Past Continuous, Past Simple'. Напишите 2 ситуации из вашей жизни, когда одно прервало другое (например: 'While I was writing code, my laptop ran out of battery').",
|
||||
"exercises": [
|
||||
{
|
||||
"sentence": "While I was walking in the park, I ___ a rare bird.",
|
||||
"target": "saw",
|
||||
"clue": "увидел (короткое событие во время прогулки)",
|
||||
"options": ["saw", "was seeing", "have seen", "see"],
|
||||
"explanation": "Прогулка была длительным фоном (was walking), а наблюдение птицы — мгновенным событием в Past Simple: 'saw'."
|
||||
},
|
||||
{
|
||||
"sentence": "She ___ her leg while she was skiing in the Alps.",
|
||||
"target": "broke",
|
||||
"clue": "сломала (краткое прерывающее событие)",
|
||||
"options": ["broke", "was breaking", "breaks", "has broken"],
|
||||
"explanation": "Травма произошла одномоментно внутри процесса катания на лыжах: 'broke'."
|
||||
},
|
||||
{
|
||||
"sentence": "When I arrived at the cafe, my colleagues ___ for me.",
|
||||
"target": "were waiting",
|
||||
"clue": "ждали (уже находились в процессе ожидания)",
|
||||
"options": ["were waiting", "waited", "have waited", "are waiting"],
|
||||
"explanation": "В момент моего прихода коллеги уже сидели и ждали: фоновый процесс требует 'were waiting'."
|
||||
},
|
||||
{
|
||||
"sentence": "We ___ television when suddenly the power went out.",
|
||||
"target": "were watching",
|
||||
"clue": "смотрели (процесс перед отключением света)",
|
||||
"options": ["were watching", "watched", "have watched", "watch"],
|
||||
"explanation": "Смотрели телевизор (длительное действие), которое было прервано внезапным отключением: 'were watching'."
|
||||
},
|
||||
{
|
||||
"sentence": "He picked up the phone, ___ the number, and waited.",
|
||||
"target": "dialed",
|
||||
"clue": "набрал (цепочка последовательных действий)",
|
||||
"options": ["dialed", "was dialing", "has dialed", "dials"],
|
||||
"explanation": "Цепочка последовательных действий в прошлом передаётся через Past Simple: 'picked up, dialed, and waited'."
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
# Unit 7: Present Perfect (I have done)
|
||||
# -------------------------------------------------------------------------
|
||||
{
|
||||
"unit_num": 7,
|
||||
"level": "B1-B2",
|
||||
"category": "Present Perfect",
|
||||
"title": "Present Perfect (I have done)",
|
||||
"subtitle": "Связь прошлого с настоящим: результат налицо, жизненный опыт и маркеры just / already / yet",
|
||||
"golden_formula": "S + have / has + V3 (Past Participle)\nResult NOW / Life experience / just, already, yet, ever, never",
|
||||
"contrast_explanation": [
|
||||
{
|
||||
"situation_a": "Результат действия имеет прямое значение прямо сейчас (Result NOW)",
|
||||
"example_a": "I have lost my key. (I don't have it now and can't get in)",
|
||||
"trans_a": "Я потерял ключ (результат сейчас: ключа нет, не могу войти).",
|
||||
"situation_b": "Жизненный опыт к настоящему моменту (Life experience: ever/never)",
|
||||
"example_b": "Have you ever visited Japan?",
|
||||
"trans_b": "Ты когда-нибудь в своей жизни бывал в Японии?",
|
||||
"key_difference": "Present Perfect — это форма НАСТОЯЩЕГО времени о результатах прошлого. Если время названо (yesterday) — Present Perfect запрещён!"
|
||||
}
|
||||
],
|
||||
"journaling_prompt": "Запишите в тетрадь маркеры: just (только что), already (уже), yet (ещё нет в отрицаниях и вопросах). Напишите 2 вещи, которые вы УЖЕ сделали сегодня, и 1 вещь, которую ЕЩЁ НЕ сделали (например: 'I have already drunk coffee, but I have not had lunch yet').",
|
||||
"exercises": [
|
||||
{
|
||||
"sentence": "Would you like something to eat? — No thanks, I ___ lunch.",
|
||||
"target": "have just had",
|
||||
"clue": "только что пообедал (сыт прямо сейчас)",
|
||||
"options": ["have just had", "just had", "had just", "am having just"],
|
||||
"explanation": "Маркер 'just' (только что) указывает на свежий результат в настоящем: 'have just had'."
|
||||
},
|
||||
{
|
||||
"sentence": "Don't forget to pay the electric bill. — I have ___ paid it online.",
|
||||
"target": "already",
|
||||
"clue": "уже (действие сделано раньше ожидаемого)",
|
||||
"options": ["already", "yet", "still", "ever"],
|
||||
"explanation": "В утвердительных предложениях для значения 'уже сделано' ставится маркер 'already'."
|
||||
},
|
||||
{
|
||||
"sentence": "Has the postman delivered the morning letters ___?",
|
||||
"target": "yet",
|
||||
"clue": "уже / к этому моменту (в вопросах в конце)",
|
||||
"options": ["yet", "already", "just", "never"],
|
||||
"explanation": "В вопросительных предложениях для проверки свершения действия к данному моменту на конце ставится 'yet'."
|
||||
},
|
||||
{
|
||||
"sentence": "She has ___ tried sushi in her entire life.",
|
||||
"target": "never",
|
||||
"clue": "никогда (жизненный опыт)",
|
||||
"options": ["never", "ever", "yet", "already"],
|
||||
"explanation": "Для выражения отсутствия жизненного опыта в утвердительной грамматической конструкции используется 'never'."
|
||||
},
|
||||
{
|
||||
"sentence": "Look! Somebody ___ the window, cold air is coming in.",
|
||||
"target": "has broken",
|
||||
"clue": "разбил (результат виден прямо сейчас)",
|
||||
"options": ["has broken", "broke", "was breaking", "breaks"],
|
||||
"explanation": "Результат виден прямо сейчас (идёт холодный воздух), важно последствие, а не когда именно разбили $\rightarrow$ 'has broken'."
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
# Unit 8: Present Perfect vs Past Simple (I have done vs I did)
|
||||
# -------------------------------------------------------------------------
|
||||
{
|
||||
"unit_num": 8,
|
||||
"level": "B1-B2",
|
||||
"category": "Present Perfect",
|
||||
"title": "Present Perfect vs Past Simple (I have done vs I did)",
|
||||
"subtitle": "Главная дилемма: результат в настоящем vs факт в завершённом времени",
|
||||
"golden_formula": "PRESENT PERFECT: No exact finished time | Connection to NOW\nPAST SIMPLE: Exact finished time (yesterday, in 2018, when, at 5 PM)",
|
||||
"contrast_explanation": [
|
||||
{
|
||||
"situation_a": "Present Perfect (Период времени ещё НЕ закончился: today, this week)",
|
||||
"example_a": "I have drunk two cups of tea this morning. (It is still morning)",
|
||||
"trans_a": "Я выпил две чашки чая этим утром (утро ещё продолжается).",
|
||||
"situation_b": "Past Simple (Период времени полностью завершён: yesterday, this morning - said at night)",
|
||||
"example_b": "I drank two cups of tea this morning. (Said in the afternoon/evening)",
|
||||
"trans_b": "Я выпил две чашки чая этим утром (сказано днём или вечером, утро прошло).",
|
||||
"key_difference": "Если есть слова yesterday, last year, ago, in 1999, when I was... — ВСЕГДА используем Past Simple!"
|
||||
}
|
||||
],
|
||||
"journaling_prompt": "Разделите страницу тетради на две колонки: 'Present Perfect' и 'Past Simple'. Запишите контрастную пару: 1) факт из прошлого с точным годом, 2) факт с результатом на сейчас (например: 'I visited Italy in 2019' vs 'I have visited Italy twice').",
|
||||
"exercises": [
|
||||
{
|
||||
"sentence": "Did you know that Shakespeare ___ in 1616?",
|
||||
"target": "died",
|
||||
"clue": "умер (точная дата в завершённом прошлом)",
|
||||
"options": ["died", "has died", "had died", "dies"],
|
||||
"explanation": "Точная дата в прошлом ('in 1616') строго запрещает Present Perfect и требует Past Simple: 'died'."
|
||||
},
|
||||
{
|
||||
"sentence": "I ___ my phone! Can you call my number to find it?",
|
||||
"target": "have lost",
|
||||
"clue": "потерял (результат актуален сейчас: ищу телефон)",
|
||||
"options": ["have lost", "lost", "was losing", "lose"],
|
||||
"explanation": "Актуальный результат в настоящем: телефон нужен прямо сейчас, связь с моментом речи $\rightarrow$ 'have lost'."
|
||||
},
|
||||
{
|
||||
"sentence": "I ___ my phone yesterday, but fortunately found it in my bag.",
|
||||
"target": "lost",
|
||||
"clue": "потерял (вчера, период завершён)",
|
||||
"options": ["lost", "have lost", "was lost", "losing"],
|
||||
"explanation": "Слово-маркер 'yesterday' отсекает связь с настоящим и требует Past Simple: 'lost'."
|
||||
},
|
||||
{
|
||||
"sentence": "___ you ever eaten fresh oysters?",
|
||||
"target": "Have",
|
||||
"clue": "вопрос о жизненном опыте к текущему моменту",
|
||||
"options": ["Have", "Did", "Were", "Do"],
|
||||
"explanation": "Вопрос о жизненном опыте к настоящему моменту ('ever') строится в Present Perfect: 'Have you ever eaten...?'"
|
||||
},
|
||||
{
|
||||
"sentence": "When ___ you buy that stylish leather jacket?",
|
||||
"target": "did",
|
||||
"clue": "вопрос со словом When всегда требует Past Simple",
|
||||
"options": ["did", "have", "do", "were"],
|
||||
"explanation": "Вопрос со словом 'When' всегда нацелен на конкретный момент в прошлом и строится ТОЛЬКО в Past Simple: 'When did you buy...?'"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
# Unit 9: Used to (I used to do)
|
||||
# -------------------------------------------------------------------------
|
||||
{
|
||||
"unit_num": 9,
|
||||
"level": "A1-A2",
|
||||
"category": "Past Tenses",
|
||||
"title": "Used to (I used to do)",
|
||||
"subtitle": "Раньше делал регулярно, но сейчас больше так не делаю",
|
||||
"golden_formula": "S + used to + V1\nNegative: did not use to + V1 | Question: Did you use to + V1?\n(I used to play tennis a lot, but now I prefer swimming)",
|
||||
"contrast_explanation": [
|
||||
{
|
||||
"situation_a": "Регулярная привычка в прошлом, которой больше нет (Past habit that stopped)",
|
||||
"example_a": "I used to smoke twenty cigarettes a day, but I quit five years ago.",
|
||||
"trans_a": "Я раньше выкуривал по 20 сигарет в день, но бросил 5 лет назад.",
|
||||
"situation_b": "Состояние или факт в прошлом, изменившийся сейчас (Past state that changed)",
|
||||
"example_b": "There used to be a movie theater here, but it closed down.",
|
||||
"trans_b": "Здесь раньше был кинотеатр, но он закрылся.",
|
||||
"key_difference": "Used to существует ТОЛЬКО в прошедшем времени. Для настоящих привычек используется Present Simple с usually."
|
||||
}
|
||||
],
|
||||
"journaling_prompt": "Запишите формулу в тетрадь. Напишите 2 предложения о том, чем вы регулярно занимались в детстве или юности, но больше не занимаетесь (например: 'I used to play video games all night, but now I sleep early').",
|
||||
"exercises": [
|
||||
{
|
||||
"sentence": "She ___ long curly hair when she was a teenager.",
|
||||
"target": "used to have",
|
||||
"clue": "раньше имела (сейчас причёска другая)",
|
||||
"options": ["used to have", "uses to have", "is used to have", "use to have"],
|
||||
"explanation": "Конструкция 'used to have' выражает постоянное состояние в прошлом, которое изменилось в настоящем."
|
||||
},
|
||||
{
|
||||
"sentence": "We ___ live in a small village before moving to the capital.",
|
||||
"target": "used to",
|
||||
"clue": "раньше жили (прошлое состояние)",
|
||||
"options": ["used to", "use to", "are used to", "used"],
|
||||
"explanation": "Для описания прежнего места жительства, которое сменилось, используется 'used to'."
|
||||
},
|
||||
{
|
||||
"sentence": "Did you ___ play the piano when you were younger?",
|
||||
"target": "use to",
|
||||
"clue": "форма инфинитива после вспомогательного did",
|
||||
"options": ["use to", "used to", "using to", "used"],
|
||||
"explanation": "После вспомогательного глагола 'Did' в вопросительном предложении пишется форма без окончания -d: 'Did you use to...?'"
|
||||
},
|
||||
{
|
||||
"sentence": "I didn't ___ like spicy Indian food, but now I love it.",
|
||||
"target": "use to",
|
||||
"clue": "раньше не любил (отрицание после didn't)",
|
||||
"options": ["use to", "used to", "uses to", "using"],
|
||||
"explanation": "После 'didn't' используется начальная форма 'use to': 'didn't use to like'."
|
||||
},
|
||||
{
|
||||
"sentence": "He ___ play football every Sunday, but now he is too busy.",
|
||||
"target": "used to",
|
||||
"clue": "раньше играл (привычка прекратилась)",
|
||||
"options": ["used to", "uses to", "was used to", "is used to"],
|
||||
"explanation": "Регулярная прошлая привычка, уступившая место занятости в настоящем $\rightarrow$ 'used to'."
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
# Unit 10: Future Forms (Will vs Going to vs Present Continuous)
|
||||
# -------------------------------------------------------------------------
|
||||
{
|
||||
"unit_num": 10,
|
||||
"level": "B1-B2",
|
||||
"category": "Future",
|
||||
"title": "Future: Will vs Going to vs Present Continuous",
|
||||
"subtitle": "Спонтанное решение (Will) vs Намерение (Going to) vs 100% договоренность (Present Continuous)",
|
||||
"golden_formula": "WILL: Spontaneous decision NOW ('I'll help you')\nGOING TO: Prior intention / Evidence ('I am going to buy a car')\nPRESENT CONT: Fixed arrangement with date/people ('I am flying to Rome on Friday')",
|
||||
"contrast_explanation": [
|
||||
{
|
||||
"situation_a": "Will (Спонтанное решение в момент речи / обещание / прогноз)",
|
||||
"example_a": "The phone is ringing. — I'll answer it!",
|
||||
"trans_a": "Телефон звонит. — Я отвечу (решил сию секунду)!",
|
||||
"situation_b": "Going to (Заранее обдуманное намерение / очевидность по фактам)",
|
||||
"example_b": "Look at those black clouds! It is going to rain.",
|
||||
"trans_b": "Посмотри на эти чёрные тучи! Сейчас пойдёт дождь (налицо очевидные признаки).",
|
||||
"key_difference": "Present Continuous для будущего требует подтверждённой договорённости: куплены билеты, назначена встреча в календаре."
|
||||
}
|
||||
],
|
||||
"journaling_prompt": "Нарисуйте 3 колонки: Will (спонтанно), Going to (намерение), Pres. Cont. (куплены билеты/запланировано). Напишите по 1 предложению в каждую колонку о своих реальных планах.",
|
||||
"exercises": [
|
||||
{
|
||||
"sentence": "Have you decided what to drink? — Yes, I ___ a glass of orange juice, please.",
|
||||
"target": "will have",
|
||||
"clue": "возьму (спонтанное решение в момент заказа)",
|
||||
"options": ["will have", "am having", "am going to have", "have"],
|
||||
"explanation": "Заказ в кафе или спонтанное решение в момент речи выражается через 'will': 'I'll have...'."
|
||||
},
|
||||
{
|
||||
"sentence": "Why are you turning on the television? — I ___ watch the evening news.",
|
||||
"target": "am going to",
|
||||
"clue": "собираюсь (намерение было сформировано заранее)",
|
||||
"options": ["am going to", "will", "am", "would"],
|
||||
"explanation": "Человек включил телевизор, потому что уже заранее намеревался посмотреть новости: 'am going to watch'."
|
||||
},
|
||||
{
|
||||
"sentence": "I can't meet you on Friday afternoon because I ___ to the dentist at 3 PM.",
|
||||
"target": "am going",
|
||||
"clue": "иду (записан на конкретное время в расписании)",
|
||||
"options": ["am going", "will go", "go", "shall go"],
|
||||
"explanation": "Договорённость с точным временем в расписании передаётся через Present Continuous: 'I am going to the dentist'."
|
||||
},
|
||||
{
|
||||
"sentence": "Watch out! That unstable stack of boxes ___ fall!",
|
||||
"target": "is going to",
|
||||
"clue": "сейчас упадёт (очевидные физические признаки)",
|
||||
"options": ["is going to", "will", "is falling", "shall"],
|
||||
"explanation": "Прогноз на основе видимых прямо сейчас признаков (коробки уже качаются) выражается через 'is going to'."
|
||||
},
|
||||
{
|
||||
"sentence": "Don't worry about carrying that heavy bag alone. I ___ help you.",
|
||||
"target": "will",
|
||||
"clue": "помогу (спонтанное предложение помощи)",
|
||||
"options": ["will", "am going to", "am helping", "help"],
|
||||
"explanation": "Предложение помощи в момент разговора выражается формой 'I will help you'."
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
# Unit 11: Modals: Must, Have to, Should
|
||||
# -------------------------------------------------------------------------
|
||||
{
|
||||
"unit_num": 11,
|
||||
"level": "B1-B2",
|
||||
"category": "Modals",
|
||||
"title": "Modal Verbs: Must, Have to, Should",
|
||||
"subtitle": "Внутреннее решение (Must) vs Внешнее правило (Have to) vs Совет (Should)",
|
||||
"golden_formula": "MUST: Speaker's personal feeling ('I must call my mom')\nHAVE TO: External law / rule / obligation ('I have to wear a helmet at work')\nSHOULD: Good idea / friendly advice ('You should sleep more')",
|
||||
"contrast_explanation": [
|
||||
{
|
||||
"situation_a": "Must (Личное внутреннее убеждение говорящего)",
|
||||
"example_a": "I must get up earlier tomorrow; I want to do morning exercises.",
|
||||
"trans_a": "Я должен встать пораньше завтра; я сам этого хочу (моё решение).",
|
||||
"situation_b": "Have to (Внешнее правило, закон, обстоятельства)",
|
||||
"example_b": "In the UK, drivers have to drive on the left side of the road.",
|
||||
"trans_b": "В Великобритании водители обязаны ехать по левой стороне (закон государства).",
|
||||
"key_difference": "Mustn't = СТРОГО ЗАПРЕЩЕНО. Don't have to = НЕ ОБЯЗАТЕЛЬНО (но можно, если хочешь)."
|
||||
}
|
||||
],
|
||||
"journaling_prompt": "Запишите в тетрадь контраст: Mustn't (запрет) vs Don't have to (нет необходимости). Напишите 1 вещь, которую вы обязаны делать по работе (have to), и 1 совет самому себе (should).",
|
||||
"exercises": [
|
||||
{
|
||||
"sentence": "You ___ touch that high-voltage electrical cable! It is lethal.",
|
||||
"target": "must not",
|
||||
"clue": "нельзя, строго запрещено",
|
||||
"options": ["must not", "do not have to", "should", "might not"],
|
||||
"explanation": "Категорический запрет опасного действия выражается модальным глаголом 'must not' ('mustn't')."
|
||||
},
|
||||
{
|
||||
"sentence": "Tomorrow is Sunday, so I ___ wake up early for work.",
|
||||
"target": "do not have to",
|
||||
"clue": "нет необходимости, не обязан",
|
||||
"options": ["do not have to", "must not", "should", "cannot"],
|
||||
"explanation": "Отсутствие необходимости ('не нужно вставать, но можно, если захочешь') передаётся через 'do not have to'."
|
||||
},
|
||||
{
|
||||
"sentence": "You have been coughing for a week; you ___ see a doctor.",
|
||||
"target": "should",
|
||||
"clue": "следует (дружеский совет)",
|
||||
"options": ["should", "have to", "must", "shall"],
|
||||
"explanation": "Рекомендация или разумный совет выражается через 'should'."
|
||||
},
|
||||
{
|
||||
"sentence": "All passengers ___ show a valid boarding pass before boarding.",
|
||||
"target": "have to",
|
||||
"clue": "обязаны (официальное правило авиакомпании)",
|
||||
"options": ["have to", "should", "might", "would"],
|
||||
"explanation": "Официальные правила, законы и инструкции третьей стороны передаются через 'have to'."
|
||||
},
|
||||
{
|
||||
"sentence": "I ___ remember to send birthday flowers to my grandmother.",
|
||||
"target": "must",
|
||||
"clue": "должен (личное внутреннее побуждение)",
|
||||
"options": ["must", "may", "can", "ought"],
|
||||
"explanation": "Внутренний моральный долг и личное решение говорящего выражаются через 'must'."
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
# Unit 12: Conditionals: First vs Second (If I do vs If I did)
|
||||
# -------------------------------------------------------------------------
|
||||
{
|
||||
"unit_num": 12,
|
||||
"level": "B1-B2",
|
||||
"category": "Conditionals",
|
||||
"title": "First vs Second Conditional (If I do vs If I did)",
|
||||
"subtitle": "Реальное условие на будущее vs Воображаемая / маловероятная ситуация",
|
||||
"golden_formula": "1st COND (Real Future): If + Present Simple, will + V1\n(If it rains tomorrow, we will stay home)\n2nd COND (Unreal / Imaginary): If + Past Simple, would + V1\n(If I had a million dollars, I would travel the world)",
|
||||
"contrast_explanation": [
|
||||
{
|
||||
"situation_a": "First Conditional (Вполне реальная ситуация в будущем)",
|
||||
"example_a": "If you study hard, you will pass the exam easily.",
|
||||
"trans_a": "Если ты будешь усердно учиться, ты легко сдашь экзамен (реальная вероятность).",
|
||||
"situation_b": "Second Conditional (Воображаемая или маловероятная ситуация в настоящем/будущем)",
|
||||
"example_b": "If I knew his phone number, I would call him right now.",
|
||||
"trans_b": "Если бы я знал его номер (но я не знаю!), я бы позвонил ему прямо сейчас.",
|
||||
"key_difference": "В части с IF никогда не ставится will или would! (Никаких 'If I will' или 'If I would')."
|
||||
}
|
||||
],
|
||||
"journaling_prompt": "Запишите формулы 1st и 2nd Conditionals цветными маркерами. Напишите 1 реальное условие на завтра (If...) и 1 мечту/воображаемую ситуацию (If I had / If I were...).",
|
||||
"exercises": [
|
||||
{
|
||||
"sentence": "If the weather ___ sunny tomorrow, we will go for a picnic.",
|
||||
"target": "is",
|
||||
"clue": "будет (в части If ставится Present Simple)",
|
||||
"options": ["is", "will be", "was", "would be"],
|
||||
"explanation": "В 1st Conditional в придаточном с 'if' используется Present Simple ('is'), а не 'will be'."
|
||||
},
|
||||
{
|
||||
"sentence": "If I ___ more free time, I would learn how to play guitar.",
|
||||
"target": "had",
|
||||
"clue": "было бы (нереальное условие в настоящем)",
|
||||
"options": ["had", "have", "will have", "would have"],
|
||||
"explanation": "Во 2nd Conditional для воображаемой ситуации в части 'if' ставится Past Simple: 'had'."
|
||||
},
|
||||
{
|
||||
"sentence": "What ___ you do if you won the lottery tomorrow?",
|
||||
"target": "would",
|
||||
"clue": "сделал бы (гипотетический результат)",
|
||||
"options": ["would", "will", "did", "can"],
|
||||
"explanation": "Маловероятная гипотетическая ситуация (2nd Conditional: 'if you won') требует в главной части 'would you do'."
|
||||
},
|
||||
{
|
||||
"sentence": "If you don't leave now, you ___ miss your flight.",
|
||||
"target": "will",
|
||||
"clue": "опоздаешь (реальное последствие)",
|
||||
"options": ["will", "would", "did", "are"],
|
||||
"explanation": "Реальное предупреждение на ближайшее будущее (1st Conditional): 'If you don't leave ... you will miss'."
|
||||
},
|
||||
{
|
||||
"sentence": "If I ___ in your position, I would accept the job offer.",
|
||||
"target": "were",
|
||||
"clue": "был бы (традиционная сослагательная форма were)",
|
||||
"options": ["were", "am", "will be", "would be"],
|
||||
"explanation": "В условных предложениях 2-го типа для всех лиц часто используется форма 'were' ('If I were you...')."
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
# Unit 13: Passive Voice (Present & Past: It is done / It was done)
|
||||
# -------------------------------------------------------------------------
|
||||
{
|
||||
"unit_num": 13,
|
||||
"level": "B1-B2",
|
||||
"category": "Passive Voice",
|
||||
"title": "Passive Voice (It is done / It was done)",
|
||||
"subtitle": "Пассивный залог: фокус на объекте или результате, а не на исполнителе",
|
||||
"golden_formula": "Present Passive: am / is / are + V3 (Past Participle)\nPast Passive: was / were + V3\nBy + agent: used only when the doer is important ('painted by Da Vinci')",
|
||||
"contrast_explanation": [
|
||||
{
|
||||
"situation_a": "Active Voice (Фокус на том, КТО совершает действие)",
|
||||
"example_a": "Alexander Bell invented the telephone in 1876.",
|
||||
"trans_a": "Александр Белл изобрёл телефон в 1876 году.",
|
||||
"situation_b": "Passive Voice (Фокус на том, ЧТО произошло с объектом)",
|
||||
"example_b": "The telephone was invented in 1876.",
|
||||
"trans_b": "Телефон был изобретён в 1876 году (важен телефон и дата, а не персона).",
|
||||
"key_difference": "Пассив используется, когда исполнитель неизвестен, очевиден или не имеет решающего значения."
|
||||
}
|
||||
],
|
||||
"journaling_prompt": "Запишите формулу пассивного залога: be + V3. Напишите от руки 2 примера из сферы технологий (например: 'Python was created in 1991', 'My data is backed up daily').",
|
||||
"exercises": [
|
||||
{
|
||||
"sentence": "Millions of emails ___ sent around the globe every single minute.",
|
||||
"target": "are",
|
||||
"clue": "отправляются (Present Passive с множественным числом)",
|
||||
"options": ["are", "is", "were", "have"],
|
||||
"explanation": "Подлежащее 'Millions of emails' во множественном числе в настоящем времени требует: 'are sent'."
|
||||
},
|
||||
{
|
||||
"sentence": "This ancient castle ___ built in the fourteenth century.",
|
||||
"target": "was",
|
||||
"clue": "был построен (Past Passive в единственном числе)",
|
||||
"options": ["was", "is", "were", "has"],
|
||||
"explanation": "Замок один ('castle'), постройка завершена в XIV веке $\rightarrow$ 'was built'."
|
||||
},
|
||||
{
|
||||
"sentence": "The Mona Lisa was painted ___ Leonardo da Vinci.",
|
||||
"target": "by",
|
||||
"clue": "предлог исполнителя действия в пассиве",
|
||||
"options": ["by", "with", "from", "of"],
|
||||
"explanation": "Исполнитель действия в пассивном залоге вводится предлогом 'by'."
|
||||
},
|
||||
{
|
||||
"sentence": "The new operating system ___ tested by engineers right now.",
|
||||
"target": "is being",
|
||||
"clue": "тестируется прямо сейчас (Present Continuous Passive)",
|
||||
"options": ["is being", "is", "was", "has been"],
|
||||
"explanation": "Пассивное действие в процессе прямо в момент речи требует формы 'is being tested'."
|
||||
},
|
||||
{
|
||||
"sentence": "All rooms in the hotel ___ cleaned thoroughly every morning.",
|
||||
"target": "are",
|
||||
"clue": "убираются (регулярный Present Passive)",
|
||||
"options": ["are", "is", "were", "being"],
|
||||
"explanation": "Регулярное повторяющееся пассивное действие во множественном числе ('rooms') $\rightarrow$ 'are cleaned'."
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
# Unit 14: Articles (A/An vs The vs Zero Article)
|
||||
# -------------------------------------------------------------------------
|
||||
{
|
||||
"unit_num": 14,
|
||||
"level": "A1-A2",
|
||||
"category": "Articles",
|
||||
"title": "Articles: A/An vs The vs Zero Article",
|
||||
"subtitle": "Один из многих (A/An) vs Конкретный / единственный (The) vs Обобщение (Zero)",
|
||||
"golden_formula": "A / AN: Any one non-specific item ('Can I have an apple?')\nTHE: Specific item known to listener / Unique ('Look at the Moon')\nZERO (No article): Plurals & Uncountable in general ('Cats love milk')",
|
||||
"contrast_explanation": [
|
||||
{
|
||||
"situation_a": "A/An (Первое упоминание / любой один представитель класса)",
|
||||
"example_a": "I bought a jacket yesterday.",
|
||||
"trans_a": "Я купил какую-то куртку вчера (собеседник слышит о ней впервые).",
|
||||
"situation_b": "The (Конкретный предмет, уже известный обоим собеседникам)",
|
||||
"example_b": "The jacket fits me perfectly.",
|
||||
"trans_b": "Эта (та самая) куртка сидит на мне идеально.",
|
||||
"key_difference": "Не используйте артикль со множественным числом или неисчисляемыми существительными, когда говорите о явлении вообще!"
|
||||
}
|
||||
],
|
||||
"journaling_prompt": "Нарисуйте в тетради 3 колонки: A/An, The, Ø (без артикля). Напишите цепочку из 2 предложений: первое с 'a', второе с 'the' (например: 'I adopted a cat. The cat is black').",
|
||||
"exercises": [
|
||||
{
|
||||
"sentence": "She wants to buy ___ electric car next month.",
|
||||
"target": "an",
|
||||
"clue": "электромобиль (слово начинается с гласного звука)",
|
||||
"options": ["an", "a", "the", "—"],
|
||||
"explanation": "Перед исчисляемым существительным в единственном числе, начинающимся с гласного звука [e], ставится артикль 'an'."
|
||||
},
|
||||
{
|
||||
"sentence": "Could you please close ___ window? It is getting chilly.",
|
||||
"target": "the",
|
||||
"clue": "окно (конкретное окно в этой комнате)",
|
||||
"options": ["the", "a", "an", "—"],
|
||||
"explanation": "Собеседникам понятно, о каком именно окне в комнате идёт речь $\rightarrow$ определённый артикль 'the'."
|
||||
},
|
||||
{
|
||||
"sentence": "___ apples are good for your health.",
|
||||
"target": "—",
|
||||
"clue": "яблоки вообще (без артикля)",
|
||||
"options": ["—", "The", "An", "A"],
|
||||
"explanation": "Когда мы говорим о яблоках в целом как о классе продуктов во множественном числе, артикль отсутствует ('Zero Article')."
|
||||
},
|
||||
{
|
||||
"sentence": "___ Moon orbits around our planet.",
|
||||
"target": "The",
|
||||
"clue": "Луна (уникальный единственный в природе объект)",
|
||||
"options": ["The", "A", "An", "—"],
|
||||
"explanation": "Уникальные астрономические объекты, единственные в своём роде, всегда требуют артикля 'The': 'The Moon'."
|
||||
},
|
||||
{
|
||||
"sentence": "He ordered a soup and a salad; ___ soup was delicious.",
|
||||
"target": "the",
|
||||
"clue": "суп (второе упоминание того же самого супа)",
|
||||
"options": ["the", "a", "an", "—"],
|
||||
"explanation": "При повторном упоминании объекта ('a soup' $\rightarrow$ 'the soup') используется определённый артикль 'the'."
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
# Unit 15: Gerund vs Infinitive (doing vs to do)
|
||||
# -------------------------------------------------------------------------
|
||||
{
|
||||
"unit_num": 15,
|
||||
"level": "B1-B2",
|
||||
"category": "Gerund & Infinitive",
|
||||
"title": "Gerund vs Infinitive (doing vs to do)",
|
||||
"subtitle": "Герундий (-ing) vs Инфинитив (to do) после глаголов и предлогов",
|
||||
"golden_formula": "VERB + ING: enjoy, avoid, mind, finish, suggest, look forward to\nVERB + TO DO: decide, hope, promise, refuse, manage, want, afford\nAFTER PREPOSITIONS: ALWAYS -ING (good at coding, interested in learning)",
|
||||
"contrast_explanation": [
|
||||
{
|
||||
"situation_a": "Глаголы, требующие только герундия (-ing)",
|
||||
"example_a": "I really enjoy reading books in the evening.",
|
||||
"trans_a": "Мне очень нравится читать книги по вечерам (enjoy + V-ing).",
|
||||
"situation_b": "Глаголы, требующие только инфинитива (to do)",
|
||||
"example_b": "We decided to stay at home because of the storm.",
|
||||
"trans_b": "Мы решили остаться дома из-за шторма (decide + to do).",
|
||||
"key_difference": "После любых предлогов (in, at, about, without, before, after) ВСЕГДА используется форма -ing!"
|
||||
}
|
||||
],
|
||||
"journaling_prompt": "Запишите в тетрадь 2 списка: 1) Глаголы + -ing (enjoy, avoid), 2) Глаголы + to (decide, hope). Напишите 2 предложения: одно с тем, чем вы наслаждаетесь (enjoy doing), другое с тем, что решили сделать (decided to do).",
|
||||
"exercises": [
|
||||
{
|
||||
"sentence": "I am looking forward to ___ you at the conference.",
|
||||
"target": "meeting",
|
||||
"clue": "встретить (после предлога to в устойчивой связке look forward to)",
|
||||
"options": ["meeting", "meet", "to meet", "met"],
|
||||
"explanation": "В выражении 'look forward to' частица 'to' является предлогом, поэтому после неё обязательно используется герундий: 'meeting'."
|
||||
},
|
||||
{
|
||||
"sentence": "She decided ___ for the scholarship.",
|
||||
"target": "to apply",
|
||||
"clue": "подать заявку (после глагола decide)",
|
||||
"options": ["to apply", "applying", "apply", "applied"],
|
||||
"explanation": "Глагол 'decide' требует после себя инфинитива с частицей to: 'decided to apply'."
|
||||
},
|
||||
{
|
||||
"sentence": "You should avoid ___ heavily right before bedtime.",
|
||||
"target": "eating",
|
||||
"clue": "есть (после глагола avoid)",
|
||||
"options": ["eating", "to eat", "eat", "eaten"],
|
||||
"explanation": "Глагол 'avoid' (избегать) управляет исключительно формой герундия: 'avoid eating'."
|
||||
},
|
||||
{
|
||||
"sentence": "He is very good at ___ complex algorithmic problems.",
|
||||
"target": "solving",
|
||||
"clue": "решать (после предлога at)",
|
||||
"options": ["solving", "to solve", "solve", "solved"],
|
||||
"explanation": "После любых английских предлогов (здесь: предлог 'at') глагол принимает форму герундия: 'good at solving'."
|
||||
},
|
||||
{
|
||||
"sentence": "We can't afford ___ on a luxury cruise this summer.",
|
||||
"target": "to go",
|
||||
"clue": "поехать (после глагола afford)",
|
||||
"options": ["to go", "going", "go", "gone"],
|
||||
"explanation": "Глагол 'afford' (позволить себе финансово) требует инфинитива с частицей to: 'afford to go'."
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
CURATED_MURPHY_UNITS = _LazyUnitsList()
|
||||
|
||||
|
||||
def seed_grammar_units(conn: sqlite3.Connection) -> int:
|
||||
|
||||
Reference in new issue
Block a user