1464 lines
121 KiB
Python
1464 lines
121 KiB
Python
#!/usr/bin/env python3
|
||
"""
|
||
Generates rich, detailed Murphy Grammar Units (FEAT-02).
|
||
Includes:
|
||
- Markdown Cheatsheet Tables (forms, markers, conjugations, common mistakes)
|
||
- Detailed Notes by Raymond Murphy (logic, signal words, pitfalls, authentic examples)
|
||
- Enhanced Contrasts & Journaling Framework
|
||
- Enhanced Exercise Clues & Explanations
|
||
"""
|
||
|
||
import json
|
||
from pathlib import Path
|
||
|
||
UNITS = [
|
||
# -------------------------------------------------------------------------
|
||
# Unit 1: Present Continuous
|
||
# -------------------------------------------------------------------------
|
||
{
|
||
"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\n(-) S + am/is/are + not + V-ing (She isn't listening)\n(?) Am/Is/Are + S + V-ing? (Are you working now?)",
|
||
"cheatsheet_table": (
|
||
"| Форма | Формула | Пример | Маркеры времени |\n"
|
||
"| :--- | :--- | :--- | :--- |\n"
|
||
"| **Утверждение (+)** | S + am/is/are + V-ing | *I am typing an email right now.* | now, right now |\n"
|
||
"| **Отрицание (-)** | S + am/is/are + not + V-ing | *He isn't sleeping, he's reading.* | at the moment, currently |\n"
|
||
"| **Вопрос (?)** | Am/Is/Are + S + V-ing? | *Are they coming to the meeting?* | Look!, Listen! |\n"
|
||
"| **Временный проект** | S + am/is/are + V-ing | *I am living with friends this month.* | this week, these days |\n"
|
||
"| **Изменения/Тренды** | S + am/is/are + getting/changing | *The climate is getting warmer.* | more and more, gradually |"
|
||
),
|
||
"detailed_notes": (
|
||
"### 🎯 Суть правила и логика носителя языка\n"
|
||
"Present Continuous передаёт идею **«я нахожусь внутри незавершённого действия»**. Действие уже началось, ещё не закончилось и разворачивается прямо в момент разговора или в текущий период жизни.\n\n"
|
||
"### ⏱️ Слова-маркеры (Signal Words)\n"
|
||
"- `now`, `right now` — прямо сейчас.\n"
|
||
"- `at the moment`, `currently` — в данный момент.\n"
|
||
"- `Look!`, `Listen!`, `Hurry up!` — маркеры привлечения внимания к происходящему процессу.\n"
|
||
"- `this week`, `these days`, `this year` — временные ситуации, не являющиеся постоянной рутиной.\n\n"
|
||
"### ⚠️ Частые ошибки (Common Pitfalls)\n"
|
||
"1. **Глаголы состояния (Stative Verbs)**: глаголы чувств, мыслей и обладания НЕ используются в -ing: *know, like, want, understand, believe, need, remember*. Нельзя сказать: *«I am understanding»*, правильно: *«I understand»*.\n"
|
||
"2. **Пропуск глагола to be**: нельзя сказать *«I working»*, обязательно *«I am working»*.\n"
|
||
"3. **Орфография при добавлении -ing**:\n"
|
||
" - `run` → `running`, `sit` → `sitting` (удвоение согласной после краткой ударной гласной);\n"
|
||
" - `write` → `writing`, `make` → `making` (конечная -e выпадает);\n"
|
||
" - `lie` → `lying`, `die` → `dying` (сочетание -ie меняется на -y).\n\n"
|
||
"### 💡 Живые примеры с переводом\n"
|
||
"- *Please don't make so much noise. I am trying to work.* — Пожалуйста, не шуми. Я пытаюсь работать (прямо сейчас).\n"
|
||
"- *Why are you wearing a coat? It's not cold.* — Почему на тебе пальто? На улице не холодно.\n"
|
||
"- *Are you enjoying your new project at work?* — Тебе нравится твой новый проект на работе (в этот период)?"
|
||
),
|
||
"journaling_prompt": (
|
||
"📓 ПЛАН ЗАПИСИ В БУМАЖНУЮ ТЕТРАДЬ:\n"
|
||
"1. Перечертите таблицу форм (+, -, ?) и выделите маркером вспомогательные глаголы am / is / are.\n"
|
||
"2. Запишите правило орфографии: удвоение согласных (run → running) и выпадение -e (write → writing).\n"
|
||
"3. Составьте от руки 3 личных примера по шаблону:\n"
|
||
" - [Прямо сейчас] Right now, I am [действие: sitting at my desk / drinking tea]...\n"
|
||
" - [Временный процесс] These days, I am [study/work project: learning English vocabulary]...\n"
|
||
" - [Что делают другие] My colleagues/family are [relaxing / working]..."
|
||
),
|
||
"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 всегда показывает незавершённый процесс — мы находимся в его середине."
|
||
},
|
||
{
|
||
"situation_a": "Постоянный факт или привычка (Present Simple)",
|
||
"example_a": "I live in Moscow. I work in an IT company.",
|
||
"trans_a": "Я живу в Москве (постоянно). Я работаю в IT-компании (постоянное место).",
|
||
"situation_b": "Временное отклонение от нормы (Present Continuous)",
|
||
"example_b": "I am living with my brother while my apartment is renovated.",
|
||
"trans_b": "Я временно живу у брата, пока в моей квартире идёт ремонт.",
|
||
"key_difference": "Continuous подчеркивает временность, Simple — постоянство и стабильность."
|
||
}
|
||
],
|
||
"exercises": [
|
||
{
|
||
"sentence": "Listen to those birds! They ___ so beautifully.",
|
||
"target": "are singing",
|
||
"clue": "Действие происходит прямо сейчас (маркер 'Listen!'), подлежащее 'They' (множественное число)",
|
||
"options": ["are singing", "sing", "is singing", "sang"],
|
||
"explanation": "Слово-маркер 'Listen!' указывает на процесс в секунду речи. Подлежащее 'They' требует форму множественного числа 'are singing' (не 'is singing', и не Present Simple 'sing')."
|
||
},
|
||
{
|
||
"sentence": "Why ___ you wearing a coat? It is warm outside today.",
|
||
"target": "are",
|
||
"clue": "Вопрос к действию прямо сейчас: форма глагола to be для местоимения 'you'",
|
||
"options": ["are", "do", "is", "have"],
|
||
"explanation": "В Present Continuous вопрос строится через вынос вспомогательного глагола to be перед подлежащим: 'Why are you wearing...' ('do' используется в Present Simple без -ing)."
|
||
},
|
||
{
|
||
"sentence": "I ___ for my keys. Have you seen them anywhere?",
|
||
"target": "am looking",
|
||
"clue": "Я ищу прямо сейчас: местоимение 'I' + глагол look с предлогом for",
|
||
"options": ["am looking", "look", "is looking", "looking"],
|
||
"explanation": "Поиск происходит в данный момент, для местоимения 'I' форма Present Continuous — 'am looking'."
|
||
},
|
||
{
|
||
"sentence": "The economic situation in the region ___ better every month.",
|
||
"target": "is getting",
|
||
"clue": "Постепенное изменение/тренд: подлежащее 'situation' (ед. число)",
|
||
"options": ["is getting", "gets", "are getting", "got"],
|
||
"explanation": "Для описания развивающихся процессов и изменений (get better, grow, change) используется Present Continuous: 'is getting better'."
|
||
},
|
||
{
|
||
"sentence": "Please don't disturb him right now. He ___ an important report.",
|
||
"target": "is preparing",
|
||
"clue": "Маркер 'right now' + просьба не беспокоить в этот момент",
|
||
"options": ["is preparing", "prepares", "prepare", "was preparing"],
|
||
"explanation": "Маркер 'right now' и контекст 'не беспокой его' однозначно требуют Present Continuous: 'is preparing'."
|
||
}
|
||
]
|
||
},
|
||
|
||
# -------------------------------------------------------------------------
|
||
# Unit 2: Present Simple
|
||
# -------------------------------------------------------------------------
|
||
{
|
||
"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 / He works\n(-) S + do not / does not + V1 (I don't work / He doesn't work)\n(?) Do / Does + S + V1? (Do you work? / Does she work?)",
|
||
"cheatsheet_table": (
|
||
"| Лицо | Утверждение (+) | Отрицание (-) | Вопрос (?) |\n"
|
||
"| :--- | :--- | :--- | :--- |\n"
|
||
"| **I / you / we / they** | *I work every day.* | *I don't work on Sundays.* | *Do you work remotely?* |\n"
|
||
"| **he / she / it** | *She works in a bank.* | *She doesn't work here.* | *Does he work full-time?* |\n"
|
||
"| **Глагол to be** | *He is an engineer.* | *He isn't at the office.* | *Is he ready?* |\n"
|
||
"| **Частотные наречия** | *always, usually, often* | ставятся перед основным глаголом | *I always check my email.* |\n"
|
||
"| **Окончания -s/-es** | watch → watch**es**, study → stud**ies** | go → go**es**, fix → fix**es** | kiss → kiss**es** |"
|
||
),
|
||
"detailed_notes": (
|
||
"### 🎯 Суть правила и логика носителя языка\n"
|
||
"Present Simple выражает **вещи вообще, регулярные привычки, законы природы и расписания**. Это не то, что происходит сию секунду, а постоянный порядок вещей.\n\n"
|
||
"### ⏱️ Слова-маркеры (Signal Words)\n"
|
||
"- Наречия частоты: `always` (всегда), `usually` (обычно), `often` (часто), `sometimes` (иногда), `rarely / seldom` (редко), `never` (никогда).\n"
|
||
" *Правило позиции: они ставятся ПЕРЕД смысловым глаголом, но ПОСЛЕ глагола to be (I always drink coffee / I am always on time).*\n"
|
||
"- Обстоятельства времени: `every day / week / year`, `on Mondays`, `in the morning`, `twice a month`.\n\n"
|
||
"### ⚠️ Частые ошибки (Common Pitfalls)\n"
|
||
"1. **Забытое окончание -s для he/she/it**: самая частая ошибка новичков. *He live in London* ❌ → *He lives in London* ✅.\n"
|
||
"2. **Двойное -s в отрицаниях и вопросах**: вспомогательный глагол `does / doesn't` уже забрал окончание -s себе, поэтому основной глагол остаётся в «голом» инфинитиве:\n"
|
||
" - *He doesn't works* ❌ → *He doesn't work* ✅.\n"
|
||
" - *Does she likes coffee?* ❌ → *Does she like coffee?* ✅.\n"
|
||
"3. **Правописание окончаний**:\n"
|
||
" - После шипящих (-s, -sh, -ch, -x, -z) и -o добавляется `-es`: *watches, washes, goes, does*.\n"
|
||
" - Согласная + -y меняется на `-ies`: *study → studies, fly → flies* (но гласная + y: *play → plays*).\n\n"
|
||
"### 💡 Живые примеры с переводом\n"
|
||
"- *The Earth goes around the Sun.* — Земля вращается вокруг Солнца (закон природы).\n"
|
||
"- *Nurses look after patients in hospitals.* — Медсёстры ухаживают за пациентами в больницах (профессия, факт).\n"
|
||
"- *What time do you usually finish work?* — Во сколько ты обычно заканчиваешь работу?"
|
||
),
|
||
"journaling_prompt": (
|
||
"📓 ПЛАН ЗАПИСИ В БУМАЖНУЮ ТЕТРАДЬ:\n"
|
||
"1. Запишите золотую формулу и обведите красным маркером окончание -s / -es для 3-го лица (he/she/it).\n"
|
||
"2. Выпишите правило: 'does/doesn't съедает -s у основного глагола'.\n"
|
||
"3. Составьте от руки 3 факта о вашей повседневной жизни:\n"
|
||
" - [Привычка с наречием] I usually [wake up at 7 AM / drink espresso]...\n"
|
||
" - [Отрицание] I don't [watch television / eat fast food]...\n"
|
||
" - [Факт о друге/коллеге] My friend works as [профессия] and lives in [город]..."
|
||
),
|
||
"contrast_explanation": [
|
||
{
|
||
"situation_a": "Регулярный факт и привычка (Present Simple)",
|
||
"example_a": "I play tennis every Saturday morning.",
|
||
"trans_a": "Я играю в теннис каждое утро субботы (постоянное хобби).",
|
||
"situation_b": "Действие в момент речи (Present Continuous)",
|
||
"example_b": "I am playing tennis right now with Mark.",
|
||
"trans_b": "Я играю в теннис прямо сейчас с Марком (на корте в эту секунду).",
|
||
"key_difference": "Present Simple = регулярность и расписание; Present Continuous = процесс прямо сейчас."
|
||
},
|
||
{
|
||
"situation_a": "Утверждение для 3-го лица (he/she/it)",
|
||
"example_a": "Alex speaks three languages fluently.",
|
||
"trans_a": "Алекс свободно говорит на трёх языках (постоянный навык, окончание -s).",
|
||
"situation_b": "Отрицание с doesn't (глагол теряет -s)",
|
||
"example_b": "He doesn't speak Japanese.",
|
||
"trans_b": "Он не говорит по-японски (doesn't забирает окончание, speak без -s).",
|
||
"key_difference": "В отрицаниях и вопросах с does окончание -s с основного глагола ВСЕГДА исчезает."
|
||
}
|
||
],
|
||
"exercises": [
|
||
{
|
||
"sentence": "My brother ___ in a bank in the city center.",
|
||
"target": "works",
|
||
"clue": "Постоянная работа (факт), подлежащее 'My brother' (он, 3-е лицо ед. ч.)",
|
||
"options": ["works", "work", "is working", "working"],
|
||
"explanation": "Для 'My brother' (he) в Present Simple глагол обязательно получает окончание -s: 'works'."
|
||
},
|
||
{
|
||
"sentence": "What time ___ the train arrive in Chicago?",
|
||
"target": "does",
|
||
"clue": "Вопрос о расписании поезда ('the train' = it)",
|
||
"options": ["does", "do", "is", "are"],
|
||
"explanation": "Для подлежащего 'the train' (it) в вопросах Present Simple используется вспомогательный глагол 'does'."
|
||
},
|
||
{
|
||
"sentence": "She ___ like spicy food, so she always orders salad.",
|
||
"target": "doesn't",
|
||
"clue": "Отрицание для местоимения 'She' в Present Simple",
|
||
"options": ["doesn't", "don't", "isn't", "not"],
|
||
"explanation": "Отрицание для he/she/it строится с помощью 'doesn't + инфинитив без to': 'doesn't like'."
|
||
},
|
||
{
|
||
"sentence": "We ___ go abroad on vacation, usually twice a year.",
|
||
"target": "often",
|
||
"clue": "Наречие частоты: ставится перед смысловым глаголом 'go'",
|
||
"options": ["often", "always", "never", "rarely"],
|
||
"explanation": "Контекст 'usually twice a year' (обычно дважды в год) сочетается по смыслу с наречием 'often' (часто)."
|
||
},
|
||
{
|
||
"sentence": "My parents ___ in a small house near the seaside.",
|
||
"target": "live",
|
||
"clue": "Подлежащее во множественном числе ('My parents' = they)",
|
||
"options": ["live", "lives", "are living", "living"],
|
||
"explanation": "Для множественного числа 'My parents' (they) используется базовая форма глагола без -s: 'live'."
|
||
}
|
||
]
|
||
},
|
||
|
||
# -------------------------------------------------------------------------
|
||
# Unit 3: Present Continuous vs Present Simple
|
||
# -------------------------------------------------------------------------
|
||
{
|
||
"unit_num": 3,
|
||
"level": "A1-A2",
|
||
"category": "Present Tenses",
|
||
"title": "Present Continuous vs Present Simple (I am doing vs I do)",
|
||
"subtitle": "Битва времен: процесс в моменте против постоянного порядка вещей и Stative Verbs",
|
||
"golden_formula": "NOW / TEMPORARY: am / is / are + V-ing\nHABIT / PERMANENT: V1 (he/she/it + s)\nSTATIVE VERBS (NO -ING): like, love, hate, want, need, prefer, know, realize, suppose, mean, understand, believe, remember, belong, fit, contain, consist, seem",
|
||
"cheatsheet_table": (
|
||
"| Критерий | Present Continuous (I am doing) | Present Simple (I do) |\n"
|
||
"| :--- | :--- | :--- |\n"
|
||
"| **Суть** | Действие незавершено, мы в середине | Постоянный факт, рутина, закон природы |\n"
|
||
"| **Время** | Прямо сейчас или в текущий период | Всегда, регулярно, по расписанию |\n"
|
||
"| **Маркеры** | *now, at the moment, this week, Look!* | *always, usually, often, every day, twice a week* |\n"
|
||
"| **Глаголы мышления** | НЕ употребляются в -ing (*know, believe*) | *I know the answer. (NOT I am knowing)* |\n"
|
||
"| **Глаголы чувств** | НЕ употребляются в -ing (*like, love, want*) | *I want a cup of coffee. (NOT I am wanting)* |\n"
|
||
"| **Особый: THINK** | *I am thinking* = размышляю прямо сейчас | *I think* = у меня есть мнение (I think it's good) |\n"
|
||
"| **Особый: HAVE** | *I am having lunch / a shower* = действие | *I have a car* = владение (NOT I am having a car) |"
|
||
),
|
||
"detailed_notes": (
|
||
"### 🎯 Суть правила и логика носителя языка\n"
|
||
"Главный вопрос носителя: **«Это процесс в развитии или стабильный факт?»**\n"
|
||
"- *Water is boiling. Can you turn it off?* — Вода кипит прямо сейчас (бурлит в чайнике).\n"
|
||
"- *Water boils at 100 degrees Celsius.* — Вода кипит при 100 градусах (физический закон всегда).\n\n"
|
||
"### 🧠 Глаголы состояния (Stative Verbs) — Золотой список\n"
|
||
"Эти глаголы описывают состояние ума, чувства или отношение, а не физическое действие. Они **никогда не используются в Present Continuous** (даже если ситуация происходит прямо сейчас!):\n"
|
||
"1. **Эмоции и желания**: `like`, `love`, `hate`, `want`, `need`, `prefer`.\n"
|
||
"2. **Мышление и знание**: `know`, `understand`, `recognize`, `believe`, `remember`, `forget`, `mean`.\n"
|
||
"3. **Владение**: `have` (в значении обладать), `belong`, `own`, `possess`.\n"
|
||
"4. **Восприятие**: `see`, `hear`, `smell`, `taste`, `seem`.\n\n"
|
||
"### ⚡ Двойные глаголы (Dual-meaning Verbs)\n"
|
||
"- **THINK**:\n"
|
||
" - *What do you think of this idea?* (Каково твоё мнение? — Simple)\n"
|
||
" - *Be quiet, I am thinking.* (Идёт активный процесс размышления — Continuous)\n"
|
||
"- **HAVE**:\n"
|
||
" - *I have two laptops.* (Владение — Simple)\n"
|
||
" - *I am having lunch / having a break.* (Устойчивое действие — Continuous)\n\n"
|
||
"### 💡 Живые примеры с переводом\n"
|
||
"- *Do you understand what I mean?* — Ты понимаешь, что я имею в виду? (Оба глагола stative!)\n"
|
||
"- *I am living with my parents until I find an apartment.* — Я временно живу с родителями (Continuous), хотя обычно люди говорят *I live in Madrid* (Simple)."
|
||
),
|
||
"journaling_prompt": (
|
||
"📓 ПЛАН ЗАПИСИ В БУМАЖНУЮ ТЕТРАДЬ:\n"
|
||
"1. Нарисуйте таблицу из двух колонок: 'Present Continuous (сейчас/временно)' и 'Present Simple (всегда/факт)'.\n"
|
||
"2. Запишите в рамку 8 главных глаголов-запретов для -ing: know, want, like, understand, need, believe, remember, belong.\n"
|
||
"3. Запишите контраст двойного глагола think:\n"
|
||
" - 'I think it's a good plan' (мнение) vs 'I'm thinking about it' (процесс мысли).\n"
|
||
"4. Составьте от руки контрастную пару о себе: 'I usually [привычка: drink tea], but today I am [процесс: drinking coffee]'."
|
||
),
|
||
"contrast_explanation": [
|
||
{
|
||
"situation_a": "Глагол состояния (Stative Verb) — только Simple",
|
||
"example_a": "I understand the grammar rule clearly now.",
|
||
"trans_a": "Я понимаю грамматическое правило сейчас (слово 'now', но глагол stative — только Simple!).",
|
||
"situation_b": "Динамическое действие (Action Verb) — Continuous",
|
||
"example_b": "I am studying the grammar rule right now.",
|
||
"trans_b": "Я изучаю правило прямо сейчас (физический процесс — Continuous).",
|
||
"key_difference": "Даже при слове 'now' глаголы understand, know, want не ставятся в -ing."
|
||
},
|
||
{
|
||
"situation_a": "Глагол HAVE как владение (Simple)",
|
||
"example_a": "We have a big house in the countryside.",
|
||
"trans_a": "У нас есть большой дом за городом (владение имуществом).",
|
||
"situation_b": "Глагол HAVE во фразовом значении (Continuous)",
|
||
"example_b": "We are having dinner together right now.",
|
||
"trans_b": "Мы сейчас ужинаем вместе (идиома have dinner = процесс еды).",
|
||
"key_difference": "В значении обладания have не имеет -ing. В значении процесса (have breakfast/shower) -ing разрешён."
|
||
}
|
||
],
|
||
"exercises": [
|
||
{
|
||
"sentence": "I ___ what you mean, but I don't agree with your conclusion.",
|
||
"target": "understand",
|
||
"clue": "Глагол ментального состояния (Stative Verb) — не используется в -ing",
|
||
"options": ["understand", "am understanding", "understands", "understanding"],
|
||
"explanation": "Глагол 'understand' выражает состояние понимания (Stative Verb) и не употребляется в Continuous форме, правильный ответ: 'understand'."
|
||
},
|
||
{
|
||
"sentence": "Hurry up! The taxi ___ outside for us.",
|
||
"target": "is waiting",
|
||
"clue": "Призыв 'Hurry up!' указывает на процесс, происходящий прямо в эту секунду",
|
||
"options": ["is waiting", "waits", "wait", "are waiting"],
|
||
"explanation": "Контекст 'Hurry up!' (Поторопись!) указывает на разворачивающееся действие прямо сейчас. Для 'taxi' (it) форма: 'is waiting'."
|
||
},
|
||
{
|
||
"sentence": "What ___ of my new presentation design?",
|
||
"target": "do you think",
|
||
"clue": "Вопрос о мнении/оценке (Think как точка зрения = Present Simple)",
|
||
"options": ["do you think", "are you thinking", "you think", "does you think"],
|
||
"explanation": "Когда мы спрашиваем мнение ('Что ты думаешь / как тебе?'), глагол think используется в Present Simple: 'What do you think?'."
|
||
},
|
||
{
|
||
"sentence": "Usually I ___ by bus, but this week I am walking because the weather is sunny.",
|
||
"target": "go",
|
||
"clue": "Маркер 'Usually' показывает регулярную привычку",
|
||
"options": ["go", "am going", "goes", "went"],
|
||
"explanation": "Первая часть предложения описывает привычную рутину (маркер 'Usually'), поэтому нужен Present Simple: 'I go'."
|
||
},
|
||
{
|
||
"sentence": "This luxury watch ___ to my grandfather.",
|
||
"target": "belongs",
|
||
"clue": "Глагол принадлежности (Belong = Stative Verb, подлежащее 'watch' = it)",
|
||
"options": ["belongs", "is belonging", "belong", "belonged"],
|
||
"explanation": "Глагол 'belong' (принадлежать) — глагол состояния, не имеет Continuous формы. Для 'watch' (it) требуется форма с -s: 'belongs'."
|
||
}
|
||
]
|
||
},
|
||
|
||
# -------------------------------------------------------------------------
|
||
# Unit 4: Past Simple
|
||
# -------------------------------------------------------------------------
|
||
{
|
||
"unit_num": 4,
|
||
"level": "A1-A2",
|
||
"category": "Past Tenses",
|
||
"title": "Past Simple (I did)",
|
||
"subtitle": "Завершённые действия в прошлом с конкретной привязкой ко времени",
|
||
"golden_formula": "Regular verbs: V + -ed (worked, watched, stopped, studied)\nIrregular verbs: 2nd form (went, came, saw, bought, took, wrote)\n(-) S + did not (didn't) + V1 (I didn't see him)\n(?) Did + S + V1? (Did you go to London?)",
|
||
"cheatsheet_table": (
|
||
"| Тип предложения | Формула | Пример | Маркеры завершённого прошлого |\n"
|
||
"| :--- | :--- | :--- | :--- |\n"
|
||
"| **Утверждение (+) прав.** | S + V-ed | *We played tennis yesterday.* | yesterday, yesterday morning |\n"
|
||
"| **Утверждение (+) неправ.** | S + V2 (2-я колонка) | *I bought a new laptop last week.* | last night, last week, last month |\n"
|
||
"| **Отрицание (-)** | S + did not (didn't) + V1 | *They didn't arrive on time.* | 2 days ago, a year ago |\n"
|
||
"| **Вопрос (?)** | Did + S + V1? | *Did you watch the match?* | in 2018, in the 1990s |\n"
|
||
"| **Глагол to be (was/were)** | S + was/were (БЕЗ did!) | *I was tired. They were happy.* | when I was a child, at 3 PM |"
|
||
),
|
||
"detailed_notes": (
|
||
"### 🎯 Суть правила и логика носителя языка\n"
|
||
"Past Simple используется, когда действие **полностью началось и завершилось в прошлом**, и время действия известно или названо. Это базовое время для любых исторических хроник, историй и перечисления событий.\n\n"
|
||
"### ⏱️ Слова-маркеры (Signal Words)\n"
|
||
"- `yesterday`, `yesterday evening` — вчера.\n"
|
||
"- `... ago` (three days ago, ten years ago) — тому назад.\n"
|
||
"- `last ...` (last week, last month, last summer, last night) — на прошлой...\n"
|
||
"- Точные даты и исторические вехи: `in 2015`, `in the 19th century`, `on Monday`.\n"
|
||
"- Придаточные предложения времени: `when I was a student`, `when she arrived`.\n\n"
|
||
"### ⚠️ Частые ошибки (Common Pitfalls)\n"
|
||
"1. **Двойное прошедшее время в отрицании и вопросе**:\n"
|
||
" - Вспомогательный `did / didn't` уже забрал прошедшее время себе! Основной глагол возвращается в первую форму:\n"
|
||
" - *I didn't went* ❌ → *I didn't go* ✅.\n"
|
||
" - *Did you bought it?* ❌ → *Did you buy it?* ✅.\n"
|
||
"2. **Путаница to be с did**:\n"
|
||
" - Для глагола to be в вопросах и отрицаниях `did` НЕ нужен:\n"
|
||
" - *Did you be at home?* ❌ → *Were you at home?* ✅.\n"
|
||
" - *I didn't be tired* ❌ → *I wasn't tired* ✅.\n"
|
||
"3. **Правописание окончаний -ed**:\n"
|
||
" - `stop` → `stopped` (удвоение согласной);\n"
|
||
" - `study` → `studied` (y меняется на i);\n"
|
||
" - `decide` → `decided` (только -d, если слово уже кончается на -e).\n\n"
|
||
"### 💡 Живые примеры с переводом\n"
|
||
"- *Mozart wrote more than 600 pieces of music.* — Моцарт написал более 600 музыкальных произведений (законченная историческая эпоха).\n"
|
||
"- *We didn't go out yesterday because it was raining heavily.* — Мы не пошли гулять вчера, потому что шёл сильный дождь."
|
||
),
|
||
"journaling_prompt": (
|
||
"📓 ПЛАН ЗАПИСИ В БУМАЖНУЮ ТЕТРАДЬ:\n"
|
||
"1. Нарисуйте линию времени со стрелкой в прошлое и точкой 'X' (действие завершено в прошлом).\n"
|
||
"2. Запишите формулы: (+) V2/ed, (-) didn't + V1, (?) Did + S + V1.\n"
|
||
"3. Выпишите 5 ключевых неправильных глаголов с переводом: go→went, see→saw, buy→bought, have→had, write→wrote.\n"
|
||
"4. Составьте от руки 3 реальных предложения о прошлых выходных:\n"
|
||
" - Last weekend, I [went / visited / cooked]...\n"
|
||
" - I didn't [have time to / buy]...\n"
|
||
" - Two years ago, I [started / moved to]..."
|
||
),
|
||
"contrast_explanation": [
|
||
{
|
||
"situation_a": "Утвердительное предложение (нужна 2-я форма)",
|
||
"example_a": "She bought an expensive coat yesterday.",
|
||
"trans_a": "Она купила дорогое пальто вчера (утверждение — глагол buy во 2-й форме bought).",
|
||
"situation_b": "Отрицательное предложение (нужна 1-я форма)",
|
||
"example_b": "She didn't buy any shoes.",
|
||
"trans_b": "Она не купила туфли (didn't забирает прошедшее время, глагол возвращается в buy).",
|
||
"key_difference": "Форма V2 используется ТОЛЬКО в утверждениях. В отрицаниях и вопросах всегда V1."
|
||
},
|
||
{
|
||
"situation_a": "Обычный смысловой глагол (через did)",
|
||
"example_a": "Did you see that movie yesterday?",
|
||
"trans_a": "Ты смотрел тот фильм вчера? (вопрос строится через Did + see).",
|
||
"situation_b": "Глагол состояния to be (без did)",
|
||
"example_b": "Were you at the cinema yesterday?",
|
||
"trans_b": "Ты был в кино вчера? (to be сам выходит вперёд: Were you, без did).",
|
||
"key_difference": "Глагол to be (was/were) никогда не используется со вспомогательным did."
|
||
}
|
||
],
|
||
"exercises": [
|
||
{
|
||
"sentence": "I ___ to the supermarket yesterday, but I forgot my wallet at home.",
|
||
"target": "went",
|
||
"clue": "Утверждение в Past Simple: 2-я форма неправильного глагола 'go'",
|
||
"options": ["went", "go", "gone", "was going"],
|
||
"explanation": "Маркер 'yesterday' и контекст завершённого действия требуют 2-й формы неправильного глагола go: 'went'."
|
||
},
|
||
{
|
||
"sentence": "We ___ enjoy the concert last night because the sound was terrible.",
|
||
"target": "didn't",
|
||
"clue": "Отрицание в Past Simple перед глаголом 'enjoy'",
|
||
"options": ["didn't", "don't", "weren't", "haven't"],
|
||
"explanation": "Отрицание смыслового глагола в прошлом строится с помощью 'didn't + V1': 'didn't enjoy'."
|
||
},
|
||
{
|
||
"sentence": "What time ___ you wake up this morning?",
|
||
"target": "did",
|
||
"clue": "Вспомогательный глагол вопроса в Past Simple",
|
||
"options": ["did", "do", "were", "have"],
|
||
"explanation": "Вопрос к действию в завершённый момент времени строится через 'Did + S + V1': 'What time did you wake up?'."
|
||
},
|
||
{
|
||
"sentence": "The train was delayed, so they ___ thirty minutes late.",
|
||
"target": "arrived",
|
||
"clue": "Правильный глагол arrive с окончанием -ed",
|
||
"options": ["arrived", "arrive", "were arrived", "arriving"],
|
||
"explanation": "Для регулярного глагола arrive в утверждении Past Simple добавляется окончание -d: 'arrived'."
|
||
},
|
||
{
|
||
"sentence": "Where ___ you at 8 o'clock yesterday evening?",
|
||
"target": "were",
|
||
"clue": "Форма глагола to be в прошедшем времени для местоимения 'you'",
|
||
"options": ["were", "was", "did", "are"],
|
||
"explanation": "Для местоимения 'you' глагол to be в прошлом имеет форму 'were'. Вспомогательный did с глаголом to be не используется."
|
||
}
|
||
]
|
||
},
|
||
|
||
# -------------------------------------------------------------------------
|
||
# Unit 5: Past Continuous
|
||
# -------------------------------------------------------------------------
|
||
{
|
||
"unit_num": 5,
|
||
"level": "A1-A2",
|
||
"category": "Past Tenses",
|
||
"title": "Past Continuous (I was doing)",
|
||
"subtitle": "Действие в процессе в определённый точный момент в прошлом",
|
||
"golden_formula": "S + was / were + V-ing\nwas: I, he, she, it (I was sleeping)\nwere: you, we, they (They were having dinner)\n(-) S + wasn't / weren't + V-ing\n(?) Was / Were + S + V-ing?",
|
||
"cheatsheet_table": (
|
||
"| Местоимение | Утверждение (+) | Отрицание (-) | Вопрос (?) |\n"
|
||
"| :--- | :--- | :--- | :--- |\n"
|
||
"| **I / he / she / it** | *He was driving at 4 PM.* | *He wasn't working.* | *Was he sleeping when you called?* |\n"
|
||
"| **you / we / they** | *They were playing games.* | *They weren't studying.* | *Were you waiting for me?* |\n"
|
||
"| **Маркеры точного часа** | at 5:30 yesterday | at midnight | at that exact moment |\n"
|
||
"| **Период процесса** | all day yesterday | all evening | from 3 to 6 PM yesterday |"
|
||
),
|
||
"detailed_notes": (
|
||
"### 🎯 Суть правила и логика носителя языка\n"
|
||
"Past Continuous показывает, что **в конкретную точку времени в прошлом человек находился в середине действия**. Действие уже началось до этого момента и продолжалось после него.\n\n"
|
||
"### ⏱️ Слова-маркеры (Signal Words)\n"
|
||
"- Точный момент в прошлом: `at 4:00 PM yesterday`, `at that moment`, `at midnight`.\n"
|
||
"- Непрерывный интервал: `all day yesterday`, `all night`, `from 6 to 8 PM`.\n"
|
||
"- Контекстное окружение: `when I arrived` (действие УЖЕ шло к моменту прихода).\n\n"
|
||
"### ⚠️ Частые ошибки (Common Pitfalls)\n"
|
||
"1. **Путаница Past Simple и Past Continuous**:\n"
|
||
" - *At 8:00 I had dinner* (В 8:00 я сел ужинать — точечное начало в Past Simple).\n"
|
||
" - *At 8:00 I was having dinner* (В 8:00 я уже сидел с вилкой в руках в процессе ужина).\n"
|
||
"2. **Выбор was vs were**: помните, что `you` (даже когда относится к одному человеку: «ты») ВСЕГДА требует `were` (*Were you listening?*).\n"
|
||
"3. **Stative Verbs**: глаголы состояния не используются и в Past Continuous (*I knew the answer*, а не *I was knowing*).\n\n"
|
||
"### 💡 Живые примеры с переводом\n"
|
||
"- *This time last year, I was living in Germany.* — В это же время в прошлом году я жил в Германии (находился в процессе проживания).\n"
|
||
"- *What were you doing when the phone rang?* — Что ты делал в тот момент, когда зазвонил телефон?"
|
||
),
|
||
"journaling_prompt": (
|
||
"📓 ПЛАН ЗАПИСИ В БУМАЖНУЮ ТЕТРАДЬ:\n"
|
||
"1. Запишите формулы: was (I/he/she/it) + V-ing и were (you/we/they) + V-ing.\n"
|
||
"2. Нарисуйте временную шкалу: длинная волнистая линия (Past Continuous) и стрелка в точку 'at 5 PM yesterday'.\n"
|
||
"3. Составьте от руки 2 примера о том, чем вы занимались в конкретные часы вчера:\n"
|
||
" - Yesterday at 3 PM, I was [working / driving / coding]...\n"
|
||
" - At 11 PM last night, I was [sleeping / reading a book]..."
|
||
),
|
||
"contrast_explanation": [
|
||
{
|
||
"situation_a": "Завершённое действие целиком (Past Simple)",
|
||
"example_a": "I read a book yesterday evening.",
|
||
"trans_a": "Я прочитал книгу вчера вечером (действие завершено от начала до конца).",
|
||
"situation_b": "Процесс в определённый момент (Past Continuous)",
|
||
"example_b": "At 9 PM yesterday, I was reading a book.",
|
||
"trans_b": "В 9 вечера я читал книгу (был в процессе чтения в конкретный час).",
|
||
"key_difference": "Past Simple подчеркивает факт завершения; Past Continuous показывает незавершённый процесс."
|
||
},
|
||
{
|
||
"situation_a": "Единственное число: I / he / she / it",
|
||
"example_a": "The computer was downloading an update.",
|
||
"trans_a": "Компьютер скачивал обновление (was для 3-го лица ед. числа it).",
|
||
"situation_b": "Множественное число и You: you / we / they",
|
||
"example_b": "The servers were processing data.",
|
||
"trans_b": "Серверы обрабатывали данные (were для множественного числа they).",
|
||
"key_difference": "Для I/he/she/it используется was, для you/we/they — were."
|
||
}
|
||
],
|
||
"exercises": [
|
||
{
|
||
"sentence": "At 10 o'clock yesterday morning, I ___ in a client meeting.",
|
||
"target": "was sitting",
|
||
"clue": "Процесс в точный момент времени в прошлом ('At 10 o'clock yesterday')",
|
||
"options": ["was sitting", "sat", "were sitting", "am sitting"],
|
||
"explanation": "Точное время в прошлом 'At 10 o'clock' и местоимение 'I' требуют форму Past Continuous: 'was sitting'."
|
||
},
|
||
{
|
||
"sentence": "What ___ you doing when the fire alarm went off?",
|
||
"target": "were",
|
||
"clue": "Форма вспомогательного глагола для местоимения 'you' в Past Continuous",
|
||
"options": ["were", "was", "did", "are"],
|
||
"explanation": "Для местоимения 'you' в Past Continuous используется вспомогательный глагол 'were': 'What were you doing?'."
|
||
},
|
||
{
|
||
"sentence": "It ___ heavily all day yesterday, so we stayed indoors.",
|
||
"target": "was raining",
|
||
"clue": "Длительный непрерывный процесс на протяжении всего дня ('all day yesterday')",
|
||
"options": ["was raining", "rained", "were raining", "rains"],
|
||
"explanation": "Маркер 'all day yesterday' указывает на продолжительный фоновый процесс: 'It was raining'."
|
||
},
|
||
{
|
||
"sentence": "I called you three times, but you ___ answer. What were you doing?",
|
||
"target": "didn't",
|
||
"clue": "Факт неответа на звонки в прошлом (Past Simple отрицание)",
|
||
"options": ["didn't", "weren't", "wasn't", "don't"],
|
||
"explanation": "Здесь выражается точечный факт: 'ты не ответил', поэтому нужен Past Simple: 'didn't answer'."
|
||
},
|
||
{
|
||
"sentence": "While Sarah was preparing dinner, the children ___ their homework.",
|
||
"target": "were doing",
|
||
"clue": "Параллельный процесс во множественном числе ('the children' = they)",
|
||
"options": ["were doing", "was doing", "did", "are doing"],
|
||
"explanation": "Два одновременных длительных процесса соединяются союзом While. Для 'the children' (they) форма: 'were doing'."
|
||
}
|
||
]
|
||
}
|
||
]
|
||
|
||
# We will complete units 6 through 15 below programmatically and merge with existing units
|
||
MORE_UNITS = [
|
||
# -------------------------------------------------------------------------
|
||
# Unit 6: Past Simple vs Past Continuous
|
||
# -------------------------------------------------------------------------
|
||
{
|
||
"unit_num": 6,
|
||
"level": "A1-A2",
|
||
"category": "Past Tenses",
|
||
"title": "Past Simple vs Past Continuous (I did vs I was doing)",
|
||
"subtitle": "Длинный фон против внезапного прерывания: формулы связок While и When",
|
||
"golden_formula": "Background action (LONG): was / were + V-ing\nInterruption action (SHORT): V2 / -ed\nPATTERN: While + Past Continuous, Past Simple\n(While I was walking home, it started to rain)\nPATTERN: Past Continuous + when + Past Simple\n(I was watching TV when the phone rang)",
|
||
"cheatsheet_table": (
|
||
"| Конструкция | Значение | Пример |\n"
|
||
"| :--- | :--- | :--- |\n"
|
||
"| **Длинное + Короткое** | Длинный фон прерывается коротким событием | *While I was cooking, I burned my finger.* |\n"
|
||
"| **Когда (When)** | Вводит внезапное точечное действие (V2) | *I was driving when a deer jumped out.* |\n"
|
||
"| **Пока (While / As)** | Вводит длительный фоновый процесс (-ing) | *While they were sleeping, someone knocked.* |\n"
|
||
"| **Два коротких подряд** | Последовательность событий (оба Past Simple) | *I heard a noise, got up and opened the door.* |\n"
|
||
"| **Два длинных параллельно** | Два одновременных процесса (оба Continuous) | *While I was reading, my brother was playing.* |"
|
||
),
|
||
"detailed_notes": (
|
||
"### 🎯 Суть правила и логика носителя языка\n"
|
||
"Представьте себе фильм: **Past Continuous — это видеоряд (фоновые декорации и длящееся действие)**, а **Past Simple — это резкий щелчок затвора или звук выстрела (событие, которое произошло)**.\n\n"
|
||
"### ⏱️ Ключевые союзы связки\n"
|
||
"- `When` + **Past Simple** (точечное действие): *...when the lights went out*.\n"
|
||
"- `While` / `As` + **Past Continuous** (длительный процесс): *While I was having a shower...*\n\n"
|
||
"### ⚠️ Частые ошибки (Common Pitfalls)\n"
|
||
"1. Не путайте последовательность действий и прерывание:\n"
|
||
" - *When the phone rang, I answered it.* (Сначала зазвонил, потом я снял трубку — оба Simple).\n"
|
||
" - *When the phone rang, I was having lunch.* (Звонок раздался прямо в середине моего обеда — Continuous + Simple).\n"
|
||
"2. Не ставьте два коротких действия в Continuous (*I was getting up and was opening the door* ❌)."
|
||
),
|
||
"journaling_prompt": (
|
||
"📓 ПЛАН ЗАПИСИ В БУМАЖНУЮ ТЕТРАДЬ:\n"
|
||
"1. Нарисуйте горизонтальную полосу (Длинное действие: was/were -ing) и вертикальную стрелку сквозь неё (Короткое действие: V2).\n"
|
||
"2. Выпишите золотые формулы: 'While + Past Continuous, Past Simple' и 'Past Continuous + when + Past Simple'.\n"
|
||
"3. Запишите от руки 2 реальные истории из жизни по шаблону:\n"
|
||
" - 'While I was [doing something: walking in the park], I [saw / found / met]...'\n"
|
||
" - 'I was [working on my laptop] when suddenly [my phone rang / the power went out]'."
|
||
),
|
||
"contrast_explanation": [
|
||
{
|
||
"situation_a": "Прерывание процесса (Continuous + Simple)",
|
||
"example_a": "I was walking to the station when I met John.",
|
||
"trans_a": "Я шёл на станцию (длинное действие), когда встретил Джона (короткая встреча).",
|
||
"situation_b": "Последовательность действий (Simple + Simple)",
|
||
"example_b": "I arrived at the station and bought a ticket.",
|
||
"trans_b": "Я пришёл на станцию и купил билет (одно действие завершилось, началось второе).",
|
||
"key_difference": "Прерывание объединяет фоновый процесс и точку; последовательность описывает цепочку завершенных фактов."
|
||
}
|
||
],
|
||
"exercises": [
|
||
{
|
||
"sentence": "While we ___ in the park, it suddenly started to rain.",
|
||
"target": "were walking",
|
||
"clue": "Длительное фоновое действие после союза 'While'",
|
||
"options": ["were walking", "walked", "are walking", "was walking"],
|
||
"explanation": "Союз 'While' вводит длительный процесс (Past Continuous). Для местоимения 'we' правильная форма: 'were walking'."
|
||
},
|
||
{
|
||
"sentence": "I ___ my finger while I was chopping vegetables for salad.",
|
||
"target": "cut",
|
||
"clue": "Внезапное короткое действие-прерывание (2-я форма глагола cut)",
|
||
"options": ["cut", "was cutting", "cutting", "have cut"],
|
||
"explanation": "Порез пальца — мгновенное точечное действие, прервавшее процесс нарезки, поэтому используется Past Simple: 'cut'."
|
||
},
|
||
{
|
||
"sentence": "When the teacher walked into the room, the students ___ noise.",
|
||
"target": "were making",
|
||
"clue": "Фоновый процесс, который уже шёл к моменту прихода учителя",
|
||
"options": ["were making", "made", "are making", "was making"],
|
||
"explanation": "К моменту прихода учителя (короткое действие) шум уже стоял в классе (длительный процесс): 'were making'."
|
||
},
|
||
{
|
||
"sentence": "He picked up his bag, ___ the door and left the house.",
|
||
"target": "locked",
|
||
"clue": "Цепочка последовательных завершённых действий (Past Simple)",
|
||
"options": ["locked", "was locking", "locks", "is locking"],
|
||
"explanation": "Перечисление последовательных действий в прошлом строится полностью в Past Simple: picked up, locked, left."
|
||
},
|
||
{
|
||
"sentence": "What were you doing when the power ___ out?",
|
||
"target": "went",
|
||
"clue": "Точечное событие-прерывание после слова 'when'",
|
||
"options": ["went", "was going", "goes", "has gone"],
|
||
"explanation": "После 'when' в конструкции прерывания используется Past Simple: 'went out'."
|
||
}
|
||
]
|
||
},
|
||
|
||
# -------------------------------------------------------------------------
|
||
# Unit 7: Present Perfect
|
||
# -------------------------------------------------------------------------
|
||
{
|
||
"unit_num": 7,
|
||
"level": "B1-B2",
|
||
"category": "Present Perfect",
|
||
"title": "Present Perfect (I have done)",
|
||
"subtitle": "Мост между прошлым и настоящим: результат виден сейчас и жизненный опыт",
|
||
"golden_formula": "S + have / has + V3 (Past Participle)\nhave: I, you, we, they | has: he, she, it\n(-) S + haven't / hasn't + V3\n(?) Have / Has + S + V3?\nMARKERS: just (только что), already (уже), yet (ещё не / уже в вопросах), ever, never, recently, so far, since, for",
|
||
"cheatsheet_table": (
|
||
"| Маркер | Позиция в предложении | Пример | Перевод |\n"
|
||
"| :--- | :--- | :--- | :--- |\n"
|
||
"| **just** | Между have и V3 | *I have just finished my work.* | Я только что закончил. |\n"
|
||
"| **already** | Между have и V3 (раньше ожидаемого) | *He has already left the office.* | Он уже ушёл из офиса. |\n"
|
||
"| **yet** | ВСЕГДА в самом конце (в - и ?) | *I haven't received the email yet.* | Я ещё не получил письмо. |\n"
|
||
"| **ever** | В вопросах о жизненном опыте | *Have you ever been to Japan?* | Ты когда-либо был в Японии? |\n"
|
||
"| **never** | Отрицательный опыт (глагол в +) | *She has never seen the ocean.* | Она никогда не видела океан. |\n"
|
||
"| **since** | С конкретной точки старта | *I have lived here since 2020.* | Я живу здесь с 2020 года. |\n"
|
||
"| **for** | На протяжении периода | *They have worked here for 5 years.* | Они работают здесь 5 лет. |"
|
||
),
|
||
"detailed_notes": (
|
||
"### 🎯 Суть правила и логика носителя языка\n"
|
||
"Present Perfect — это грамматическое настоящее время в английском языке! Для англичанина важно не то, КОГДА произошло действие, а **КАКОВ ЕГО РЕЗУЛЬТАТ В НАСТОЯЩЕМ**:\n"
|
||
"- *I have lost my keys.* = Я потерял ключи в прошлом, и **у меня нет их СЕЙЧАС**.\n"
|
||
"- *The road is closed. There has been an accident.* = Авария была в прошлом, но дорога перекрыта **ПРЯМО СЕЙЧАС**.\n\n"
|
||
"### 🚢 Разница: have been to vs have gone to\n"
|
||
"- *Mark has **gone** to Italy.* — Марк уехал в Италию (он сейчас ТАМ или в пути).\n"
|
||
"- *Mark has **been** to Italy.* — Марк побывал в Италии (он съездил туда и уже вернулся назад).\n\n"
|
||
"### ⚠️ Частые ошибки (Common Pitfalls)\n"
|
||
"1. **Использование с точным временем в прошлом — ЗАПРЕЩЕНО**:\n"
|
||
" - *I have seen him yesterday* ❌ → *I saw him yesterday* ✅ (yesterday = Past Simple).\n"
|
||
"2. **Yet ставится только в конце** предложения в отрицаниях и вопросах:\n"
|
||
" - *Have you finished yet?* / *I haven't eaten yet.*"
|
||
),
|
||
"journaling_prompt": (
|
||
"📓 ПЛАН ЗАПИСИ В БУМАЖНУЮ ТЕТРАДЬ:\n"
|
||
"1. Запишите формулу: have / has + V3. Обведите маркеры: just, already, yet, ever, never.\n"
|
||
"2. Выпишите контраст: 'gone to' (уехал и еще там) vs 'been to' (съездил и вернулся).\n"
|
||
"3. Запишите от руки 3 предложения о вашем реальном опыте:\n"
|
||
" - [Результат прямо сейчас] I have just [закончил проект / выпил кофе]...\n"
|
||
" - [Жизненный опыт] I have been to [страна/город], but I have never visited [место]...\n"
|
||
" - [Длительность со словом for/since] I have studied English for [срок] months."
|
||
),
|
||
"contrast_explanation": [
|
||
{
|
||
"situation_a": "Результат важен сейчас (Present Perfect)",
|
||
"example_a": "I have washed the car. It looks brand new.",
|
||
"trans_a": "Я помыл машину. Она выглядит как новая (результат прямо перед глазами).",
|
||
"situation_b": "Конкретный завершённый момент в прошлом (Past Simple)",
|
||
"example_b": "I washed the car two days ago.",
|
||
"trans_b": "Я помыл машину два дня назад (есть маркер ago — только Past Simple).",
|
||
"key_difference": "Если нет точной даты и важен результат сейчас — Present Perfect; при указании даты — Past Simple."
|
||
}
|
||
],
|
||
"exercises": [
|
||
{
|
||
"sentence": "I can't open the door because I ___ my keys.",
|
||
"target": "have lost",
|
||
"clue": "Результат в настоящем: я не могу войти прямо сейчас",
|
||
"options": ["have lost", "lost", "had lost", "am losing"],
|
||
"explanation": "Невозможность открыть дверь прямо сейчас — прямое последствие потери ключей, поэтому используется Present Perfect: 'have lost'."
|
||
},
|
||
{
|
||
"sentence": "Where is David? — He has ___ to Paris for a business conference and will return next week.",
|
||
"target": "gone",
|
||
"clue": "Он уехал и ещё находится там (вернулся бы — было бы been)",
|
||
"options": ["gone", "been", "went", "going"],
|
||
"explanation": "David ещё не вернулся (он всё ещё в Париже), поэтому используется 'has gone to'."
|
||
},
|
||
{
|
||
"sentence": "Have you ___ eaten raw seafood?",
|
||
"target": "ever",
|
||
"clue": "Вопрос о жизненном опыте ('когда-либо в жизни')",
|
||
"options": ["ever", "never", "already", "yet"],
|
||
"explanation": "В вопросах о личном жизненном опыте используется маркер 'ever' (когда-либо)."
|
||
},
|
||
{
|
||
"sentence": "We haven't received the confirmation email ___.",
|
||
"target": "yet",
|
||
"clue": "Маркер в конце отрицательного предложения ('ещё не')",
|
||
"options": ["yet", "already", "just", "never"],
|
||
"explanation": "В отрицательных предложениях слово 'yet' ставится в конец и переводится как 'ещё не'."
|
||
},
|
||
{
|
||
"sentence": "She has lived in this apartment ___ five years.",
|
||
"target": "for",
|
||
"clue": "Указание на длительность периода времени (на протяжении 5 лет)",
|
||
"options": ["for", "since", "during", "ago"],
|
||
"explanation": "Для указания протяжённости периода времени (five years) используется предлог 'for'."
|
||
}
|
||
]
|
||
},
|
||
|
||
# -------------------------------------------------------------------------
|
||
# Unit 8: Present Perfect vs Past Simple
|
||
# -------------------------------------------------------------------------
|
||
{
|
||
"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": "FINISHED TIME (Past Simple): yesterday, last year, in 2020, 2 days ago, when I arrived\nUNFINISHED / OPEN TIME (Present Perfect): today, this week, so far, recently, never, ever\nGOLDEN RULE: If you name WHEN in the past, NEVER use have done!",
|
||
"cheatsheet_table": (
|
||
"| Критерий | Present Perfect (I have done) | Past Simple (I did) |\n"
|
||
"| :--- | :--- | :--- |\n"
|
||
"| **Время** | Не закончено / открыто (*today, this week*) | Полностью закончено (*yesterday, last week*) |\n"
|
||
"| **Точная дата** | Запрещена (*NOT I have seen him yesterday*) | Обязательна или подразумевается (*yesterday, in 2019*) |\n"
|
||
"| **Вопрос «Когда?»** | НЕЛЬЗЯ спросить *When have you...?* | ТОЛЬКО *When did you buy it?* |\n"
|
||
"| **Фокус внимания** | Результат и новость сейчас (*I've won!*) | Детали и обстоятельства (*I won it in Madrid*) |\n"
|
||
"| **Период жизни** | Человек жив (*Shakespeare wrote / Rowling has written*) | Историческая эпоха завершена (*Mozart wrote*) |"
|
||
),
|
||
"detailed_notes": (
|
||
"### 🎯 Суть правила и логика носителя языка\n"
|
||
"Это самая важная тема английской грамматики. Задайте один проверочный вопрос:\n"
|
||
"**«Период времени закрыт или ещё продолжается?»**\n"
|
||
"- *I have drunk two cups of coffee today.* (День ещё идёт, могу выпить третью — Present Perfect).\n"
|
||
"- *I drank two cups of coffee yesterday.* (Вчерашний день закрыт навсегда — Past Simple).\n\n"
|
||
"### ⚠️ Табу носителей языка\n"
|
||
"Никогда не начинайте вопрос со слова **WHEN** в Present Perfect! Вопрос «Когда?» требует конкретного момента времени в прошлом, поэтому ВСЕГДА строится в Past Simple:\n"
|
||
"- *When have you arrived?* ❌ → *When did you arrive?* ✅.\n"
|
||
"- *What time has the train left?* ❌ → *What time did the train leave?* ✅."
|
||
),
|
||
"journaling_prompt": (
|
||
"📓 ПЛАН ЗАПИСИ В БУМАЖНУЮ ТЕТРАДЬ:\n"
|
||
"1. Нарисуйте две коробки: 'ЗАКРЫТОЕ ВРЕМЯ (Past Simple)' с датами (yesterday, 2021, ago) и 'ОТКРЫТОЕ ВРЕМЯ (Present Perfect)' (today, this week, ever).\n"
|
||
"2. Запишите жирным красным маркером: 'ВОПРОС С WHEN — ВСЕГДА В PAST SIMPLE!'.\n"
|
||
"3. Запишите контрастную пару предложений о сегодняшнем дне и вчерашнем:\n"
|
||
" - Today, I have [drink/done: drunk two cups of tea]...\n"
|
||
" - Yesterday, I [ate / saw / went]..."
|
||
),
|
||
"contrast_explanation": [
|
||
{
|
||
"situation_a": "Период времени ещё не завершился (this morning, до полудня)",
|
||
"example_a": "I have seen Tom this morning.",
|
||
"trans_a": "Я видел Тома сегодня утром (разговор происходит в 10:30 утра, утро ЕЩЁ ИДЁТ).",
|
||
"situation_b": "Период времени завершился (this morning, разговор днём/вечером)",
|
||
"example_b": "I saw Tom this morning.",
|
||
"trans_b": "Я видел Тома сегодня утром (разговор происходит в 16:00, утро УЖЕ ПРОШЛО).",
|
||
"key_difference": "Если временной отрезок ещё продолжается — Present Perfect; если закончился — Past Simple."
|
||
}
|
||
],
|
||
"exercises": [
|
||
{
|
||
"sentence": "When ___ you buy your new smartphone?",
|
||
"target": "did",
|
||
"clue": "Вопрос со словом 'When' требует строго Past Simple",
|
||
"options": ["did", "have", "were", "do"],
|
||
"explanation": "Вопрос с 'When' (Когда?) всегда строится в Past Simple со вспомогательным глаголом 'did'."
|
||
},
|
||
{
|
||
"sentence": "I ___ to the gym three times this week, and it's only Wednesday.",
|
||
"target": "have been",
|
||
"clue": "Период времени 'this week' ещё не закончился (открытое время)",
|
||
"options": ["have been", "went", "was", "had been"],
|
||
"explanation": "Неделя ещё продолжается ('this week'), поэтому используется Present Perfect: 'have been'."
|
||
},
|
||
{
|
||
"sentence": "William Shakespeare ___ many famous plays and sonnets.",
|
||
"target": "wrote",
|
||
"clue": "Историческая личность, завершённая эпоха прошлого",
|
||
"options": ["wrote", "has written", "writes", "was writing"],
|
||
"explanation": "Шекспир жил в прошлом и больше ничего написать не может (период закрыт), поэтому только Past Simple: 'wrote'."
|
||
},
|
||
{
|
||
"sentence": "She ___ her first novel in 2018.",
|
||
"target": "published",
|
||
"clue": "Точная завершённая дата в прошлом ('in 2018')",
|
||
"options": ["published", "has published", "publishes", "was published"],
|
||
"explanation": "При наличии точной даты 'in 2018' используется исключительно Past Simple: 'published'."
|
||
},
|
||
{
|
||
"sentence": "Look! Somebody ___ a glass on the kitchen floor.",
|
||
"target": "has broken",
|
||
"clue": "Слово 'Look!' привлекает внимание к свежему результату прямо сейчас",
|
||
"options": ["has broken", "broke", "break", "had broken"],
|
||
"explanation": "Осколки лежат на полу прямо сейчас (свежий результат), поэтому используется Present Perfect: 'has broken'."
|
||
}
|
||
]
|
||
}
|
||
]
|
||
|
||
# Units 9 through 15
|
||
REST_OF_UNITS = [
|
||
# -------------------------------------------------------------------------
|
||
# Unit 9: Used to
|
||
# -------------------------------------------------------------------------
|
||
{
|
||
"unit_num": 9,
|
||
"level": "A1-A2",
|
||
"category": "Past Tenses",
|
||
"title": "Used to (I used to do)",
|
||
"subtitle": "Привычки и состояния прошлого, которых больше нет в настоящем",
|
||
"golden_formula": "S + used to + V1\n(-) S + did not (didn't) use to + V1\n(?) Did + S + use to + V1?\n(I used to play tennis a lot, but now I prefer swimming)",
|
||
"cheatsheet_table": (
|
||
"| Тип | Формула | Пример |\n"
|
||
"| :--- | :--- | :--- |\n"
|
||
"| **Утверждение (+)** | S + used to + V1 | *I used to live in Paris, but now I live in London.* |\n"
|
||
"| **Отрицание (-)** | S + didn't use to + V1 | *She didn't use to like coffee.* |\n"
|
||
"| **Вопрос (?)** | Did + S + use to + V1? | *Did you use to have long hair?* |\n"
|
||
"| **Состояния** | be, have, live, believe | *This building used to be a cinema.* |\n"
|
||
"| **НЕ путать с:** | be used to + -ing (привык к) | *I am used to waking up early (я привык).* |"
|
||
),
|
||
"detailed_notes": (
|
||
"### 🎯 Суть правила и логика носителя языка\n"
|
||
"Конструкция `used to` выражает **прошлые привычки или постоянные состояния, которые сейчас изменились или прекратились**.\n\n"
|
||
"### ⚠️ Частые ошибки (Common Pitfalls)\n"
|
||
"1. В отрицаниях и вопросах `used` теряет букву -d из-за вспомогательного did: *didn't use to*, *did you use to*.\n"
|
||
"2. Для настоящего времени `used to` не существует! Если вы делаете что-то сейчас регулярно, используйте Present Simple с usually (*I usually play tennis*, а не *I use to play*)."
|
||
),
|
||
"journaling_prompt": (
|
||
"📓 ПЛАН ЗАПИСИ В БУМАЖНУЮ ТЕТРАДЬ:\n"
|
||
"1. Выпишите формулу 'used to + V1' и подчеркните: 'Только для прошлого, которого БОЛЬШЕ НЕТ'.\n"
|
||
"2. Запишите отрицательную форму: 'didn't use to' (без буквы d!).\n"
|
||
"3. Составьте от руки 2 контраста из вашей биографии:\n"
|
||
" - 'When I was younger, I used to [привычка детства], but now I [что делаете сейчас].'\n"
|
||
" - 'I didn't use to like [еда/занятие: olives / waking up early], but now I love it.'"
|
||
),
|
||
"contrast_explanation": [
|
||
{
|
||
"situation_a": "Прошлая привычка (Used to)",
|
||
"example_a": "I used to smoke 20 cigarettes a day, but I gave up 3 years ago.",
|
||
"trans_a": "Я раньше выкуривал по 20 сигарет в день, но бросил 3 года назад.",
|
||
"situation_b": "Привычка в настоящем (Present Simple + usually)",
|
||
"example_b": "I usually drink green tea in the morning.",
|
||
"trans_b": "Я обычно пью зелёный чай по утрам (настоящее время, used to применять нельзя!).",
|
||
"key_difference": "Used to существует ТОЛЬКО для прошлого. Для настоящего времени используется usually + V1."
|
||
}
|
||
],
|
||
"exercises": [
|
||
{
|
||
"sentence": "My grandfather ___ to work by bicycle, but now he takes the bus.",
|
||
"target": "used to go",
|
||
"clue": "Прошлая привычка, которая прекратилась ('but now he takes')",
|
||
"options": ["used to go", "uses to go", "was going", "is used to go"],
|
||
"explanation": "Для описания привычки в прошлом, сменившейся в настоящем, используется конструкция 'used to + V1': 'used to go'."
|
||
},
|
||
{
|
||
"sentence": "We ___ use to have a dishwasher when I was growing up.",
|
||
"target": "didn't",
|
||
"clue": "Отрицательная форма конструкции 'use to' в прошлом",
|
||
"options": ["didn't", "don't", "weren't", "haven't"],
|
||
"explanation": "Отрицание строится через 'didn't use to': 'We didn't use to have'."
|
||
},
|
||
{
|
||
"sentence": "Did you ___ to live in Montreal before moving here?",
|
||
"target": "use",
|
||
"clue": "Вопрос с Did: буква -d у слова used исчезает",
|
||
"options": ["use", "used", "using", "uses"],
|
||
"explanation": "После вспомогательного 'Did' форма глагола пишется без -d: 'Did you use to live...?'."
|
||
},
|
||
{
|
||
"sentence": "This street ___ to be much quieter before the shopping mall opened.",
|
||
"target": "used",
|
||
"clue": "Прошлое состояние (улица была тише)",
|
||
"options": ["used", "was used", "use", "is using"],
|
||
"explanation": "Утверждение о прошлом состоянии улицы: 'used to be quieter'."
|
||
},
|
||
{
|
||
"sentence": "Now I live in a quiet village, but I ___ in a crowded capital city.",
|
||
"target": "used to live",
|
||
"clue": "Контраст: сейчас в деревне, а раньше жил в столице",
|
||
"options": ["used to live", "use to live", "am living", "was lived"],
|
||
"explanation": "Контраст настоящего и прошлого: 'used to live in a crowded capital city'."
|
||
}
|
||
]
|
||
},
|
||
|
||
# -------------------------------------------------------------------------
|
||
# Unit 10: Future
|
||
# -------------------------------------------------------------------------
|
||
{
|
||
"unit_num": 10,
|
||
"level": "B1-B2",
|
||
"category": "Future",
|
||
"title": "Future: Will vs Going to vs Present Continuous",
|
||
"subtitle": "Три главных будущих времени: спонтанное решение, намерение и железобетонная договорённость",
|
||
"golden_formula": "1. WILL + V1: Spontaneous decision NOW ('I will answer the door') / Prediction\n2. BE GOING TO + V1: Prior intention / Obvious evidence ('Look at those black clouds, it is going to rain')\n3. PRESENT CONTINUOUS: Fixed arrangement with date & other people ('I am flying to Paris tomorrow')",
|
||
"cheatsheet_table": (
|
||
"| Конструкция | Значение | Триггер выбора | Пример |\n"
|
||
"| :--- | :--- | :--- | :--- |\n"
|
||
"| **WILL + V1** | Спонтанное решение в секунду речи | Решил прямо сейчас, обещание, предложение помощи | *The phone is ringing. I'll get it!* |\n"
|
||
"| **BE GOING TO + V1** | Заранее задуманное намерение | Решил ДО разговора, есть очевидные улики | *I am going to buy a new car next month.* |\n"
|
||
"| **BE GOING TO (улики)** | Неизбежный прогноз по фактам | Вижу глазами прямо сейчас | *Look at those clouds! It's going to rain.* |\n"
|
||
"| **PRESENT CONTINUOUS** | Железобетонная договоренность | Куплены билеты, назначена встреча с людьми | *I'm meeting Alice at 7 PM at the cafe.* |"
|
||
),
|
||
"detailed_notes": (
|
||
"### 🎯 Суть правила и логика носителя языка\n"
|
||
"В английском языке будущее время выбирается строго по степени готовности плана:\n"
|
||
"1. **Внезапная мысль сейчас**: *«I'll carry that heavy bag for you»* (никто не планировал заранее).\n"
|
||
"2. **Личное намерение**: *«I am going to sell my old bike»* (я уже решил для себя, но покупателя пока нет).\n"
|
||
"3. **Фиксированная договоренность**: *«I am having dinner with Sarah tonight»* (мы с Сарой уже договорились о времени и столике)."
|
||
),
|
||
"journaling_prompt": (
|
||
"📓 ПЛАН ЗАПИСИ В БУМАЖНУЮ ТЕТРАДЬ:\n"
|
||
"1. Нарисуйте 3 колонки: 'Will (в эту секунду)', 'Going to (задумал заранее)', 'Present Continuous (договорился с людьми/билеты)'.\n"
|
||
"2. Составьте от руки 3 предложения о вашем будущем:\n"
|
||
" - [Спонтанное решение/обещание] I will call you as soon as [действие]...\n"
|
||
" - [План-намерение] This weekend, I am going to [отдохнуть / убраться]...\n"
|
||
" - [Договоренность на этой неделе] On Friday, I am meeting [имя/коллеги] at [время]..."
|
||
),
|
||
"contrast_explanation": [
|
||
{
|
||
"situation_a": "Спонтанное решение в момент речи (Will)",
|
||
"example_a": "We don't have any milk. — Really? I'll go and get some.",
|
||
"trans_a": "У нас нет молока. — Правда? Я пойду куплю (узнал только что и решил сию секунду).",
|
||
"situation_b": "План был продуман заранее (Going to)",
|
||
"example_b": "We don't have any milk. — I know. I am going to buy some on my way home.",
|
||
"trans_b": "У нас нет молока. — Я знаю. Я как раз собираюсь купить его по пути домой.",
|
||
"key_difference": "Если решение принято только что в разговоре — Will; если о проблеме знали заранее — Going to."
|
||
}
|
||
],
|
||
"exercises": [
|
||
{
|
||
"sentence": "Have you decided what to do tonight? — Yes, I ___ dinner with my boss at 8 PM.",
|
||
"target": "am having",
|
||
"clue": "Зафиксированная договорённость со временем и конкретным человеком",
|
||
"options": ["am having", "will have", "have", "going to have"],
|
||
"explanation": "Назначенное время (at 8 PM) и договорённость с другим человеком выражаются через Present Continuous: 'am having'."
|
||
},
|
||
{
|
||
"sentence": "That box looks very heavy! I ___ you carry it upstairs.",
|
||
"target": "will help",
|
||
"clue": "Спонтанное предложение помощи в момент речи",
|
||
"options": ["will help", "am helping", "help", "going to help"],
|
||
"explanation": "Спонтанное решение помочь, принятое в секунду речи: 'I will help you'."
|
||
},
|
||
{
|
||
"sentence": "Look at that cyclist! He is not watching the road and he ___ crash.",
|
||
"target": "is going to",
|
||
"clue": "Прогноз на основе очевидных физических улик прямо перед глазами",
|
||
"options": ["is going to", "will", "is", "shall"],
|
||
"explanation": "Прогноз на основе явных внешних улик прямо сейчас строится через 'be going to': 'is going to crash'."
|
||
},
|
||
{
|
||
"sentence": "I have saved enough money. Next spring I ___ learn how to pilot a drone.",
|
||
"target": "am going to",
|
||
"clue": "Личное заранее обдуманное намерение",
|
||
"options": ["am going to", "will", "am", "would"],
|
||
"explanation": "Заранее продуманное решение и накопленные деньги указывают на намерение: 'am going to learn'."
|
||
},
|
||
{
|
||
"sentence": "I promise I ___ tell anyone your secret.",
|
||
"target": "won't",
|
||
"clue": "Обещание (Promise) выражается через will / won't",
|
||
"options": ["won't", "am not going to", "don't", "haven't"],
|
||
"explanation": "Обещания (I promise...) традиционно строятся со словом will / won't: 'I won't tell anyone'."
|
||
}
|
||
]
|
||
},
|
||
|
||
# -------------------------------------------------------------------------
|
||
# Unit 11: Modals
|
||
# -------------------------------------------------------------------------
|
||
{
|
||
"unit_num": 11,
|
||
"level": "B1-B2",
|
||
"category": "Modals",
|
||
"title": "Modal Verbs: Must, Have to, Should",
|
||
"subtitle": "Обязанность, закон, совет и критическая разница между Mustn't и Don't have to",
|
||
"golden_formula": "MUST: Personal feeling of obligation ('I must call my mom')\nHAVE TO: External rule, law or necessity ('I have to wear a safety helmet')\nSHOULD: Friendly recommendation / good idea ('You should get some sleep')\nCRITICAL CONTRAST:\nMustn't = FORBIDDEN! Do not do it! (Ты не должен / Запрещено!)\nDon't have to = NO NEED. You can do it if you want (Не обязательно / Нет нужды)",
|
||
"cheatsheet_table": (
|
||
"| Модальный глагол | Значение | Пример |\n"
|
||
"| :--- | :--- | :--- |\n"
|
||
"| **MUST** | Личное внутреннее убеждение говорящего | *I must finish this book today.* |\n"
|
||
"| **HAVE TO** | Внешний закон, приказ руководства | *Employees have to arrive by 9 AM.* |\n"
|
||
"| **SHOULD** | Совет, рекомендация | *You should see a doctor about that cough.* |\n"
|
||
"| **MUSTN'T** | ⛔ КАТЕГОРИЧЕСКИЙ ЗАПРЕТ | *You mustn't touch this wire. It's live!* |\n"
|
||
"| **DON'T HAVE TO** | 🟢 НЕТ НЕОБХОДИМОСТИ (можно, но не нужно) | *Tomorrow is Sunday. We don't have to get up early.* |\n"
|
||
"| **Прошедшее время** | В прошлом must превращается в HAD TO | *Yesterday I had to stay late at work.* |"
|
||
),
|
||
"detailed_notes": (
|
||
"### 🎯 Суть правила и логика носителя языка\n"
|
||
"Модальные глаголы показывают отношение говорящего к действию. Главная опасность здесь кроется в отрицаниях:\n"
|
||
"- `You mustn't do that!` = **ЭТО ЗАПРЕЩЕНО!** (Это опасно или незаконно).\n"
|
||
"- `You don't have to do that.` = **ЭТО НЕОБЯЗАТЕЛЬНО.** (Хочешь — делай, не хочешь — не делай, принуждения нет).\n\n"
|
||
"### ⏱️ Прошедшее время\n"
|
||
"У глагола `must` нет формы прошедшего времени! Если нужно сказать «я должен был сделать это вчера», используется форма **HAD TO**:\n"
|
||
"- *Yesterday I had to walk home because my car broke down.*"
|
||
),
|
||
"journaling_prompt": (
|
||
"📓 ПЛАН ЗАПИСИ В БУМАЖНУЮ ТЕТРАДЬ:\n"
|
||
"1. Нарисуйте знак 'STOP' рядом со словом 'MUSTN'T (ЗАПРЕЩЕНО)' и зеленую галочку рядом с 'DON'T HAVE TO (НЕ ОБЯЗАТЕЛЬНО)'.\n"
|
||
"2. Запишите правило: 'В прошедшем времени вместо must ВСЕГДА используется had to'.\n"
|
||
"3. Запишите от руки 3 правила вашей рабочей жизни:\n"
|
||
" - [Внешнее требование] At work, I have to [приходить вовремя / носить пропуск]...\n"
|
||
" - [Что необязательно] At the weekend, I don't have to [set an alarm / wear a suit]...\n"
|
||
" - [Совет себе] I should [drink more water / go to bed earlier]..."
|
||
),
|
||
"contrast_explanation": [
|
||
{
|
||
"situation_a": "Категорический запрет (Mustn't)",
|
||
"example_a": "You mustn't park here. It is an emergency exit.",
|
||
"trans_a": "Здесь нельзя парковаться. Это пожарный выход (строжайший запрет).",
|
||
"situation_b": "Отсутствие необходимости (Don't have to)",
|
||
"example_b": "Parking is free today. You don't have to pay.",
|
||
"trans_b": "Парковка сегодня бесплатная. Тебе не обязательно платить.",
|
||
"key_difference": "Mustn't означает запрет; Don't have to означает отсутствие необходимости."
|
||
}
|
||
],
|
||
"exercises": [
|
||
{
|
||
"sentence": "You ___ tell the password to anyone under any circumstances. It's confidential.",
|
||
"target": "mustn't",
|
||
"clue": "Категорический запрет на раскрытие пароля",
|
||
"options": ["mustn't", "don't have to", "shouldn't", "needn't"],
|
||
"explanation": "Строгий запрет разглашать конфиденциальный пароль: 'mustn't tell'."
|
||
},
|
||
{
|
||
"sentence": "The museum admission is free on Thursdays, so you ___ pay to enter.",
|
||
"target": "don't have to",
|
||
"clue": "Вход бесплатный, поэтому платить нет необходимости",
|
||
"options": ["don't have to", "mustn't", "can't", "shouldn't"],
|
||
"explanation": "Поскольку вход бесплатный, платить не требуется (нет необходимости): 'don't have to pay'."
|
||
},
|
||
{
|
||
"sentence": "Yesterday my computer crashed, so I ___ re-type the whole document.",
|
||
"target": "had to",
|
||
"clue": "Прошедшее время от глагола обязательства ('вчера пришлось')",
|
||
"options": ["had to", "must", "must have", "have to"],
|
||
"explanation": "У 'must' нет формы прошедшего времени; для прошедшего времени используется 'had to': 'I had to re-type'."
|
||
},
|
||
{
|
||
"sentence": "You look completely exhausted. I think you ___ take a couple of days off.",
|
||
"target": "should",
|
||
"clue": "Дружеский совет и рекомендация ('тебе следует')",
|
||
"options": ["should", "must", "have to", "had to"],
|
||
"explanation": "Совет и рекомендация выражаются через модальный глагол 'should': 'you should take a couple of days off'."
|
||
},
|
||
{
|
||
"sentence": "In most countries, passengers ___ wear seatbelts in the car by law.",
|
||
"target": "have to",
|
||
"clue": "Внешнее предписание закона государства",
|
||
"options": ["have to", "should", "might", "would"],
|
||
"explanation": "Обязательство, наложенное законом государства, выражается через 'have to': 'passengers have to wear seatbelts'."
|
||
}
|
||
]
|
||
},
|
||
|
||
# -------------------------------------------------------------------------
|
||
# Unit 12: Conditionals
|
||
# -------------------------------------------------------------------------
|
||
{
|
||
"unit_num": 12,
|
||
"level": "B1-B2",
|
||
"category": "Conditionals",
|
||
"title": "First vs Second Conditional (If I do vs If I did)",
|
||
"subtitle": "Реальное будущее против воображаемых фантазий и конструкция If I were you",
|
||
"golden_formula": "1st CONDITIONAL (Real Future):\nIf + Present Simple, will + V1\n(If it rains tomorrow, we will stay at home)\n\n2nd CONDITIONAL (Unreal / Imaginary Present or Future):\nIf + Past Simple, would + V1\n(If I had a million dollars, I would travel around the world)\nNOTE: If I were you, I would... (быть на твоем месте)",
|
||
"cheatsheet_table": (
|
||
"| Тип условия | Часть с IF (Условие) | Главная часть (Результат) | Реальность ситуации |\n"
|
||
"| :--- | :--- | :--- | :--- |\n"
|
||
"| **First (1-й)** | **If + Present Simple** | **will + V1** | Реальная возможность в будущем (вероятность 70-90%) |\n"
|
||
"| *Пример 1-го* | *If I pass the exam...* | *...I will celebrate with friends.* | Вполне реально сдать экзамен. |\n"
|
||
"| **Second (2-й)** | **If + Past Simple** | **would + V1** | Воображаемая / маловероятная фантазия (вероятность 1-5%) |\n"
|
||
"| *Пример 2-го* | *If I won the lottery...* | *...I would buy an island.* | Мечты и фантазии. |\n"
|
||
"| **Совет** | *If I were you...* | *...I would accept the offer.* | «На твоём месте я бы...» |"
|
||
),
|
||
"detailed_notes": (
|
||
"### 🎯 Суть правила и логика носителя языка\n"
|
||
"Вся разница — в **степени веры говорящего в реальность события**:\n"
|
||
"- *If I find her number, I will call her.* (У меня есть надежда найти её записную книжку — реальный 1st Cond).\n"
|
||
"- *If I found a wallet in the street, I would take it to the police.* (Я прямо сейчас фантазирую о гипотетической ситуации — 2nd Cond).\n\n"
|
||
"### ⚠️ Табу условных предложений\n"
|
||
"**НИКОГДА не ставьте will или would сразу после слова IF**:\n"
|
||
"- *If it will rain tomorrow...* ❌ → *If it rains tomorrow...* ✅.\n"
|
||
"- *If I would have money...* ❌ → *If I had money...* ✅.\n\n"
|
||
"### 🎩 Исключение: Were вместо Was\n"
|
||
"В формальном английском и для советов во 2-м условном глагол to be для всех лиц принимает форму `were`:\n"
|
||
"- *If I were you, I would take that job.* (На твоём месте я бы согласился на эту работу)."
|
||
),
|
||
"journaling_prompt": (
|
||
"📓 ПЛАН ЗАПИСИ В БУМАЖНУЮ ТЕТРАДЬ:\n"
|
||
"1. Запишите формулы: 1st (If + V1, will + V1) и 2nd (If + V2, would + V1).\n"
|
||
"2. Обведите красным маркером: 'ПОСЛЕ IF СЛОВА WILL И WOULD НЕ СТАВЯТСЯ!'.\n"
|
||
"3. Составьте от руки два предложения:\n"
|
||
" - [Реальный план на завтра] If the weather is good tomorrow, I will [прогуляться / поехать за город]...\n"
|
||
" - [Воображаемая мечта] If I had [много денег / свободного времени], I would [купить дом / объехать мир]..."
|
||
),
|
||
"contrast_explanation": [
|
||
{
|
||
"situation_a": "Реальное будущее (1st Conditional)",
|
||
"example_a": "If you study hard, you will pass the exam.",
|
||
"trans_a": "Если ты будешь усердно учиться, ты сдашь экзамен (реальный прогноз на будущее).",
|
||
"situation_b": "Нереальная фантазия (2nd Conditional)",
|
||
"example_b": "If I knew Spanish, I would move to Barcelona.",
|
||
"trans_b": "Если бы я знал испанский, я бы переехал в Барселону (но я его не знаю прямо сейчас).",
|
||
"key_difference": "1st = реальное будущее; 2nd = гипотетическое предположение, противоположное фактам."
|
||
}
|
||
],
|
||
"exercises": [
|
||
{
|
||
"sentence": "If the flight ___ delayed, we will call you immediately.",
|
||
"target": "is",
|
||
"clue": "В части с 'If' в 1-м условном используется Present Simple (НЕ will!)",
|
||
"options": ["is", "will be", "would be", "was"],
|
||
"explanation": "В условной придаточной части 1-го типа (после 'If') используется Present Simple: 'If the flight is delayed'."
|
||
},
|
||
{
|
||
"sentence": "If I had enough free time, I ___ learn how to play the piano.",
|
||
"target": "would",
|
||
"clue": "В главной части 2-го типа условных используется would + V1",
|
||
"options": ["would", "will", "can", "am"],
|
||
"explanation": "Придаточная часть с 'If I had' указывает на 2-й условный тип, в главной части требуется 'would'."
|
||
},
|
||
{
|
||
"sentence": "If I ___ you, I wouldn't invest in that risky startup.",
|
||
"target": "were",
|
||
"clue": "Устойчивая конструкция совета: 'If I were you'",
|
||
"options": ["were", "am", "was", "would be"],
|
||
"explanation": "Для выражения совета 'На твоём месте' традиционно используется форма 'If I were you'."
|
||
},
|
||
{
|
||
"sentence": "If you don't wear a warm coat today, you ___ catch a cold.",
|
||
"target": "will",
|
||
"clue": "Реальное предупреждение о последствиях в будущем (1st Conditional)",
|
||
"options": ["will", "would", "did", "are"],
|
||
"explanation": "Реальное последствие в будущем выражается через 'will + V1': 'you will catch a cold'."
|
||
},
|
||
{
|
||
"sentence": "What ___ you do if you found a wallet on the street with $500 inside?",
|
||
"target": "would",
|
||
"clue": "Вопрос о гипотетической ситуации (If you found...)",
|
||
"options": ["would", "will", "did", "do"],
|
||
"explanation": "Воображаемая гипотетическая ситуация (If you found = 2nd Conditional) требует в вопросе 'would you do?'."
|
||
}
|
||
]
|
||
},
|
||
|
||
# -------------------------------------------------------------------------
|
||
# Unit 13: Passive Voice
|
||
# -------------------------------------------------------------------------
|
||
{
|
||
"unit_num": 13,
|
||
"level": "B1-B2",
|
||
"category": "Passive Voice",
|
||
"title": "Passive Voice (It is done / It was done)",
|
||
"subtitle": "Когда результат важнее исполнителя: пассивные конструкции и предлог By",
|
||
"golden_formula": "GENERAL FORMULA: S + BE (в нужном времени) + V3 (Past Participle)\nPresent Simple Passive: am / is / are + V3 (The office is cleaned every day)\nPast Simple Passive: was / were + V3 (The bridge was built in 1905)\nFuture Simple Passive: will be + V3 (The report will be sent tomorrow)\nPresent Continuous Passive: is / are being + V3 (My car is being repaired)\nBY + AGENT: используется только если важно указать автора ('written by Shakespeare')",
|
||
"cheatsheet_table": (
|
||
"| Время | Активный залог (Active) | Пассивный залог (Passive) |\n"
|
||
"| :--- | :--- | :--- |\n"
|
||
"| **Present Simple** | *Somebody cleans the room.* | *The room **is cleaned** every day.* |\n"
|
||
"| **Past Simple** | *Somebody built the bridge.* | *The bridge **was built** in 2010.* |\n"
|
||
"| **Present Continuous** | *They are repairing the road.* | *The road **is being repaired** right now.* |\n"
|
||
"| **Present Perfect** | *Someone has stolen my bike.* | *My bike **has been stolen**.* |\n"
|
||
"| **Future Simple** | *We will deliver the package.* | *The package **will be delivered** tomorrow.* |\n"
|
||
"| **Модальные глаголы** | *You must sign the contract.* | *The contract **must be signed**.* |"
|
||
),
|
||
"detailed_notes": (
|
||
"### 🎯 Суть правила и логика носителя языка\n"
|
||
"Пассивный залог применяется в трёх ключевых ситуациях:\n"
|
||
"1. **Исполнитель неизвестен**: *My bicycle has been stolen.* (Кто украл — мы не знаем).\n"
|
||
"2. **Исполнитель очевиден или не важен**: *The criminal was arrested.* (Очевидно, что полицией).\n"
|
||
"3. **Фокус на объекте или событии**: в новостях, научных статьях, инструкциях и IT-системах (*A new database was created*).\n\n"
|
||
"### ⚙️ Инструмент: Предлог By vs With\n"
|
||
"- `By` указывает на одушевлённого создателя/исполнителя: *The portrait was painted **by** Picasso*.\n"
|
||
"- `With` указывает на инструмент или материал: *The envelope was opened **with** a knife*."
|
||
),
|
||
"journaling_prompt": (
|
||
"📓 ПЛАН ЗАПИСИ В БУМАЖНУЮ ТЕТРАДЬ:\n"
|
||
"1. Запишите формулу пассива: 'BE + V3'.\n"
|
||
"2. Запишите две самые частые формы: 'is/are done' (настоящее) и 'was/were done' (прошедшее).\n"
|
||
"3. Составьте от руки 3 примера из сферы технологий или быта:\n"
|
||
" - This app was developed in [год/страна]...\n"
|
||
" - Emails are sent every day to [клиенты/коллеги]...\n"
|
||
" - The project will be finished next [месяц/неделя]..."
|
||
),
|
||
"contrast_explanation": [
|
||
{
|
||
"situation_a": "Активный залог (фокус на исполнителе)",
|
||
"example_a": "Alexander Bell invented the telephone in 1876.",
|
||
"trans_a": "Александр Белл изобрёл телефон в 1876 году (Белл — главный герой предложения).",
|
||
"situation_b": "Пассивный залог (фокус на изобретении)",
|
||
"example_b": "The telephone was invented in 1876 by Alexander Bell.",
|
||
"trans_b": "Телефон был изобретён в 1876 году Александром Беллом (телефон — в центре внимания).",
|
||
"key_difference": "В пассиве объект действия встаёт на место подлежащего, а исполнитель уходит на второй план."
|
||
}
|
||
],
|
||
"exercises": [
|
||
{
|
||
"sentence": "This ancient castle ___ by thousands of tourists every summer.",
|
||
"target": "is visited",
|
||
"clue": "Present Simple пассив: замок посещается регулярно каждое лето",
|
||
"options": ["is visited", "was visited", "visits", "is visiting"],
|
||
"explanation": "Регулярное действие в настоящем ('every summer') в пассивном залоге требует 'is/are + V3': 'is visited'."
|
||
},
|
||
{
|
||
"sentence": "The novel '1984' ___ by George Orwell in 1949.",
|
||
"target": "was written",
|
||
"clue": "Past Simple пассив с точной датой в прошлом",
|
||
"options": ["was written", "is written", "wrote", "has written"],
|
||
"explanation": "Конкретная дата в прошлом ('in 1949') и пассивное действие требуют Past Simple Passive: 'was written'."
|
||
},
|
||
{
|
||
"sentence": "Please take another seat. This table ___ reserved for a private party.",
|
||
"target": "is",
|
||
"clue": "Стол зарезервирован прямо сейчас (Present Simple Passive)",
|
||
"options": ["is", "was", "are", "were"],
|
||
"explanation": "Для 'This table' (it) форма пассивного залога в настоящем времени: 'is reserved'."
|
||
},
|
||
{
|
||
"sentence": "All flight tickets ___ electronically via email tomorrow morning.",
|
||
"target": "will be sent",
|
||
"clue": "Future Simple Passive: билеты будут отправлены завтра",
|
||
"options": ["will be sent", "will send", "are sent", "were sent"],
|
||
"explanation": "Будущее действие в пассивном залоге ('tomorrow morning') строится через 'will be + V3': 'will be sent'."
|
||
},
|
||
{
|
||
"sentence": "The software bug ___ by the engineering team right now.",
|
||
"target": "is being fixed",
|
||
"clue": "Present Continuous Passive: процесс исправления идёт прямо в эту минуту",
|
||
"options": ["is being fixed", "is fixing", "was fixed", "fixes"],
|
||
"explanation": "Процесс в настоящем времени ('right now') в пассиве строится через 'is being + V3': 'is being fixed'."
|
||
}
|
||
]
|
||
},
|
||
|
||
# -------------------------------------------------------------------------
|
||
# Unit 14: Articles
|
||
# -------------------------------------------------------------------------
|
||
{
|
||
"unit_num": 14,
|
||
"level": "A1-A2",
|
||
"category": "Articles",
|
||
"title": "Articles: A/An vs The vs Zero Article",
|
||
"subtitle": "Определённость, первое упоминание, уникальные объекты и абстрактные понятия",
|
||
"golden_formula": "A / AN: One of many / Unspecified singular countable ('I bought a book')\nTHE: Specific item known to listener / Unique object ('The book was interesting' / 'The Sun')\nZERO ARTICLE (Ø): Plurals & Uncountables in general ('I love dogs' / 'Music is art')",
|
||
"cheatsheet_table": (
|
||
"| Артикль | Когда применять | Примеры |\n"
|
||
"| :--- | :--- | :--- |\n"
|
||
"| **A / AN** | Исчисляемое в ед. ч., первое упоминание, профессия | *I have **a** dog. She is **an** architect.* |\n"
|
||
"| **THE** | Второе упоминание, слушатель знает о чём речь | *I bought a laptop. **The** laptop is fast.* |\n"
|
||
"| **THE (уникальность)** | Единственный в мире объект | *the Sun, the Moon, the Internet, the sky* |\n"
|
||
"| **THE (география)** | Реки, моря, океаны, группы островов/штатов | *the Atlantic, the Thames, the USA, the UK* |\n"
|
||
"| **ZERO (Ø)** | Множественное число и неисчисляемые ВООБЩЕ | *Cats love milk. Gold is expensive.* |\n"
|
||
"| **ZERO (география)** | Города, страны (в ед. ч.), улицы, континенты | *London, France, Oxford Street, Europe* |"
|
||
),
|
||
"detailed_notes": (
|
||
"### 🎯 Суть правила и логика носителя языка\n"
|
||
"Вся система артиклей строится на простом вопросе:\n"
|
||
"**«Понимает ли собеседник, о каком КОНКРЕТНО объекте я говорю?»**\n"
|
||
"- *Pass me a pen.* = Дай мне любую ручку, мне всё равно какую.\n"
|
||
"- *Pass me the pen.* = Дай мне вон ту конкретную ручку, которая лежит перед тобой.\n\n"
|
||
"### ⚠️ Частые ошибки (Common Pitfalls)\n"
|
||
"1. Нельзя ставить `a/an` перед множественным числом или неисчисляемыми: *an advice* ❌ → *advice / a piece of advice* ✅.\n"
|
||
"2. Обобщения строятся с нулевым артиклем: *I love the dogs* (люблю конкретно этих трёх собак во дворе) vs *I love dogs* (люблю собак как биологический вид)."
|
||
),
|
||
"journaling_prompt": (
|
||
"📓 ПЛАН ЗАПИСИ В БУМАЖНУЮ ТЕТРАДЬ:\n"
|
||
"1. Нарисуйте 3 колонки: 'A/An (один любой из многих)', 'The (тот самый конкретный / уникальный)', 'Ø (все в целом)'.\n"
|
||
"2. Запишите связку из двух предложений:\n"
|
||
" - 'I ordered a coffee and a croissant. The coffee was hot and the croissant was fresh.'\n"
|
||
"3. Запишите от руки 2 примера об уникальных вещах: 'The Sun rises in the east' и 'I use the Internet every day'."
|
||
),
|
||
"contrast_explanation": [
|
||
{
|
||
"situation_a": "Первое упоминание объекта (A / An)",
|
||
"example_a": "Yesterday I watched a movie.",
|
||
"trans_a": "Вчера я посмотрел фильм (какой-то один фильм, собеседник пока не знает какой).",
|
||
"situation_b": "Повторное упоминание того же объекта (The)",
|
||
"example_b": "The movie was directed by Christopher Nolan.",
|
||
"trans_b": "Этот фильм снял Кристофер Нолан (собеседник уже понимает, о каком именно фильме речь).",
|
||
"key_difference": "При первом вводе предмета в диалог используется a/an; при повторном — the."
|
||
}
|
||
],
|
||
"exercises": [
|
||
{
|
||
"sentence": "Can you please close ___ window? It is getting cold in here.",
|
||
"target": "the",
|
||
"clue": "Собеседник видит конкретное окно в комнате",
|
||
"options": ["the", "a", "an", "no article"],
|
||
"explanation": "Речь идёт о конкретном окне в данной комнате, понятном обоим собеседникам: 'close the window'."
|
||
},
|
||
{
|
||
"sentence": "Paris is ___ capital city of France.",
|
||
"target": "the",
|
||
"clue": "У Франции только одна столица (уникальный статус)",
|
||
"options": ["the", "a", "an", "no article"],
|
||
"explanation": "Столица у страны одна-единственная (уникальный объект), поэтому используется 'the capital city'."
|
||
},
|
||
{
|
||
"sentence": "My sister wants to become ___ software engineer.",
|
||
"target": "an",
|
||
"clue": "Профессия начинается с гласного звука [e]",
|
||
"options": ["an", "a", "the", "no article"],
|
||
"explanation": "Перед названиями профессий в единственном числе ставится a/an. Слово 'software' начинается с согласной? Но здесь 'software engineer' -> перед 'software' ставится 'a'! Подождите, 'software engineer' начинается на [s], поэтому 'a software engineer'!"
|
||
},
|
||
{
|
||
"sentence": "___ apples are rich in fiber and vitamins.",
|
||
"target": "no article",
|
||
"clue": "Яблоки как класс фруктов в целом во множественном числе",
|
||
"options": ["no article", "The", "An", "A"],
|
||
"explanation": "Когда мы говорим о вещах во множественном числе в общем смысле, артикль не ставится: 'Apples are rich...'."
|
||
},
|
||
{
|
||
"sentence": "We spent our vacation relaxing on the coast of ___ Black Sea.",
|
||
"target": "the",
|
||
"clue": "Перед названиями морей всегда ставится определённый артикль The",
|
||
"options": ["the", "a", "an", "no article"],
|
||
"explanation": "С названиями морей, океанов и рек всегда употребляется определённый артикль: 'the Black Sea'."
|
||
}
|
||
]
|
||
},
|
||
|
||
# -------------------------------------------------------------------------
|
||
# Unit 15: Gerund vs Infinitive
|
||
# -------------------------------------------------------------------------
|
||
{
|
||
"unit_num": 15,
|
||
"level": "B1-B2",
|
||
"category": "Gerund & Infinitive",
|
||
"title": "Gerund vs Infinitive (doing vs to do)",
|
||
"subtitle": "Две формы глагола: списки управления, правило предлогов и изменение смысла",
|
||
"golden_formula": "VERB + GERUND (-ing): enjoy, avoid, mind, finish, suggest, consider, risk, postpone\nVERB + INFINITIVE (to + V1): decide, plan, hope, promise, refuse, manage, agree, afford\nRULE: AFTER ANY PREPOSITION → ALWAYS GERUND! (interested in learning, good at coding)\nDUAL MEANING:\nstop doing (бросить навсегда) vs stop to do (остановиться, чтобы сделать)\nremember doing (помнить событие из прошлого) vs remember to do (не забыть сделать)",
|
||
"cheatsheet_table": (
|
||
"| Категория | Глаголы управления | Пример |\n"
|
||
"| :--- | :--- | :--- |\n"
|
||
"| **Только Герундий (-ing)** | *enjoy, avoid, mind, suggest, finish, keep* | *I enjoy reading science fiction.* |\n"
|
||
"| **Только Инфинитив (to do)** | *decide, hope, plan, promise, offer, refuse* | *We decided to move to a new apartment.* |\n"
|
||
"| **После предлогов (100%)** | *interested in, good at, afraid of, instead of* | *He is very good at solving problems.* |\n"
|
||
"| **STOP (разница смысла)** | *stop smoking* (бросить вредную привычку) | *stop to smoke* (остановиться, чтобы закурить) |\n"
|
||
"| **REMEMBER (разница)** | *remember locking* (помню, как закрывал) | *remember to lock* (не забудь закрыть дверь) |"
|
||
),
|
||
"detailed_notes": (
|
||
"### 🎯 Суть правила и логика носителя языка\n"
|
||
"1. **Герундий (-ing)** часто несёт оттенок реального жизненного опыта, процесса или удовольствия: *I enjoy cooking*.\n"
|
||
"2. **Инфинитив (to do)** ориентирован в будущее: на цель, намерение или решение: *I decided to cook dinner*.\n\n"
|
||
"### ⚓ Железное правило предлогов\n"
|
||
"Если после предлога (`in`, `on`, `at`, `for`, `about`, `before`, `after`, `instead of`) идёт глагол, он **ОБЯЗАН быть в форме герундия (-ing)**:\n"
|
||
"- *Thank you for helping me.* (НЕ *for help*).\n"
|
||
"- *She left without saying goodbye.*"
|
||
),
|
||
"journaling_prompt": (
|
||
"📓 ПЛАН ЗАПИСИ В БУМАЖНУЮ ТЕТРАДЬ:\n"
|
||
"1. Нарисуйте две колонки: 'Глагол + -ing' (enjoy, avoid, mind, finish) и 'Глагол + to do' (decide, hope, plan, promise).\n"
|
||
"2. Запишите в рамку закон: 'ПОСЛЕ ЛЮБОГО ПРЕДЛОГА — ВСЕГДА ТОЛЬКО -ING!'.\n"
|
||
"3. Составьте от руки 3 предложения:\n"
|
||
" - [Что нравится] I really enjoy [reading / coding / traveling]...\n"
|
||
" - [Что решили сделать] Recently, I decided to [learn English / exercise regularly]...\n"
|
||
" - [Конструкция с предлогом] I am interested in [improving my grammar / learning AI]..."
|
||
),
|
||
"contrast_explanation": [
|
||
{
|
||
"situation_a": "Прекращение действия навсегда (Stop + -ing)",
|
||
"example_a": "He stopped smoking five years ago.",
|
||
"trans_a": "Он бросил курить пять лет назад (действие прекращено навсегда).",
|
||
"situation_b": "Пауза ради другой цели (Stop + to do)",
|
||
"example_b": "He was driving for three hours, then stopped to smoke a cigarette.",
|
||
"trans_b": "Он был за рулём три часа, затем остановил машину, чтобы выкурить сигарету.",
|
||
"key_difference": "Stop + -ing = бросить привычку; Stop + to do = сделать паузу ради другой цели."
|
||
}
|
||
],
|
||
"exercises": [
|
||
{
|
||
"sentence": "I really enjoy ___ audiobooks during my daily commute.",
|
||
"target": "listening to",
|
||
"clue": "Глагол enjoy требует после себя герундий (-ing)",
|
||
"options": ["listening to", "to listen to", "listen to", "listened to"],
|
||
"explanation": "После глагола 'enjoy' всегда используется герундий: 'enjoy listening to'."
|
||
},
|
||
{
|
||
"sentence": "We have decided ___ our summer vacation in Spain.",
|
||
"target": "to spend",
|
||
"clue": "Глагол decide требует после себя инфинитив с частицей to",
|
||
"options": ["to spend", "spending", "spend", "spent"],
|
||
"explanation": "После глагола 'decide' используется инфинитив с частицей to: 'decided to spend'."
|
||
},
|
||
{
|
||
"sentence": "She is interested in ___ a new programming language.",
|
||
"target": "learning",
|
||
"clue": "После предлога 'in' глагол обязан стоять в форме герундия (-ing)",
|
||
"options": ["learning", "to learn", "learn", "learned"],
|
||
"explanation": "Железное правило: после любого предлога (здесь 'in') всегда используется герундий: 'interested in learning'."
|
||
},
|
||
{
|
||
"sentence": "Please remember ___ the front door before you go to bed.",
|
||
"target": "to lock",
|
||
"clue": "Не забыть сделать действие в будущем (remember to do)",
|
||
"options": ["to lock", "locking", "lock", "locked"],
|
||
"explanation": "Напоминание о необходимости совершить действие в будущем: 'remember to lock'."
|
||
},
|
||
{
|
||
"sentence": "You should avoid ___ heavily before going to sleep.",
|
||
"target": "eating",
|
||
"clue": "Глагол avoid требует после себя форму на -ing",
|
||
"options": ["eating", "to eat", "eat", "eaten"],
|
||
"explanation": "После глагола 'avoid' (избегать) используется форма герундия: 'avoid eating'."
|
||
}
|
||
]
|
||
}
|
||
]
|
||
|
||
def main():
|
||
# Fix Unit 14 Exercise 3 clue/options for consistency
|
||
all_final_units = UNITS + MORE_UNITS + REST_OF_UNITS
|
||
# Unit 14 Ex 3 fix
|
||
for u in all_final_units:
|
||
if u["unit_num"] == 14:
|
||
u["exercises"][2] = {
|
||
"sentence": "My sister wants to become ___ architect in a design studio.",
|
||
"target": "an",
|
||
"clue": "Слово 'architect' начинается с гласного звука [ɑː]",
|
||
"options": ["an", "a", "the", "no article"],
|
||
"explanation": "Перед названием профессии в единственном числе, начинающимся с гласного звука ('architect'), ставится артикль 'an'."
|
||
}
|
||
|
||
print(f"Total curated units compiled: {len(all_final_units)}")
|
||
seeds_path = Path("data/seeds/grammar_units.json")
|
||
seeds_path.parent.mkdir(parents=True, exist_ok=True)
|
||
with open(seeds_path, "w", encoding="utf-8") as f:
|
||
json.dump(all_final_units, f, indent=2, ensure_ascii=False)
|
||
print(f"Saved rich seeds to {seeds_path} ({seeds_path.stat().st_size} bytes)")
|
||
|
||
if __name__ == "__main__":
|
||
main()
|