Sub Level List
ViewSet for sub-levels.
GET /api/sub-levels/?format=api&page=2
{ "count": 96, "next": "http://roskov.driad.fr/api/sub-levels/?format=api&page=3", "previous": "http://roskov.driad.fr/api/sub-levels/?format=api", "results": [ { "id": 21, "level": 4, "level_display": "Basic Adjectives", "sub_level": 8, "title": "Adjectifs de sentiment et émotion", "description": "Adjectifs pour décrire les sentiments et émotions", "order": 8, "word_pairs": [ { "id": 326, "french_word": "anxieux", "russian_word": "тревожный", "category": "adjective", "category_display": "Adjective", "level": 4, "level_display": "Basic Adjectives", "comment": "Masculin, singulier, nominatif, forme longue", "tags": [ { "id": 7, "name": "nominative", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.144909Z", "updated_at": "2026-01-17T18:41:46.144920Z" }, { "id": 9, "name": "long-form", "category": "form", "category_display": "Form", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.575658Z", "updated_at": "2026-01-17T18:41:46.575675Z" }, { "id": 2, "name": "masculine", "category": "gender", "category_display": "Gender", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.131757Z", "updated_at": "2026-01-17T18:41:46.131774Z" }, { "id": 5, "name": "singular", "category": "number", "category_display": "Number", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.139686Z", "updated_at": "2026-01-17T18:41:46.139698Z" } ], "created_at": "2026-01-17T18:41:47.667251Z", "updated_at": "2026-01-17T18:41:47.667275Z", "is_active": true }, { "id": 250, "french_word": "calme", "russian_word": "спокойный", "category": "adjective", "category_display": "Adjective", "level": 4, "level_display": "Basic Adjectives", "comment": "Masculin, singulier, nominatif, forme longue", "tags": [ { "id": 7, "name": "nominative", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.144909Z", "updated_at": "2026-01-17T18:41:46.144920Z" }, { "id": 9, "name": "long-form", "category": "form", "category_display": "Form", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.575658Z", "updated_at": "2026-01-17T18:41:46.575675Z" }, { "id": 2, "name": "masculine", "category": "gender", "category_display": "Gender", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.131757Z", "updated_at": "2026-01-17T18:41:46.131774Z" }, { "id": 5, "name": "singular", "category": "number", "category_display": "Number", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.139686Z", "updated_at": "2026-01-17T18:41:46.139698Z" } ], "created_at": "2026-01-17T18:41:47.266951Z", "updated_at": "2026-01-17T18:41:47.266965Z", "is_active": true }, { "id": 251, "french_word": "calme (féminin)", "russian_word": "спокойная", "category": "adjective", "category_display": "Adjective", "level": 4, "level_display": "Basic Adjectives", "comment": "Féminin, singulier, nominatif, forme longue", "tags": [ { "id": 7, "name": "nominative", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.144909Z", "updated_at": "2026-01-17T18:41:46.144920Z" }, { "id": 9, "name": "long-form", "category": "form", "category_display": "Form", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.575658Z", "updated_at": "2026-01-17T18:41:46.575675Z" }, { "id": 3, "name": "feminine", "category": "gender", "category_display": "Gender", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.134507Z", "updated_at": "2026-01-17T18:41:46.134524Z" }, { "id": 5, "name": "singular", "category": "number", "category_display": "Number", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.139686Z", "updated_at": "2026-01-17T18:41:46.139698Z" } ], "created_at": "2026-01-17T18:41:47.272180Z", "updated_at": "2026-01-17T18:41:47.272193Z", "is_active": true }, { "id": 332, "french_word": "confiant", "russian_word": "уверенный", "category": "adjective", "category_display": "Adjective", "level": 4, "level_display": "Basic Adjectives", "comment": "Masculin, singulier, nominatif, forme longue", "tags": [ { "id": 7, "name": "nominative", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.144909Z", "updated_at": "2026-01-17T18:41:46.144920Z" }, { "id": 9, "name": "long-form", "category": "form", "category_display": "Form", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.575658Z", "updated_at": "2026-01-17T18:41:46.575675Z" }, { "id": 2, "name": "masculine", "category": "gender", "category_display": "Gender", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.131757Z", "updated_at": "2026-01-17T18:41:46.131774Z" }, { "id": 5, "name": "singular", "category": "number", "category_display": "Number", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.139686Z", "updated_at": "2026-01-17T18:41:46.139698Z" } ], "created_at": "2026-01-17T18:41:47.704217Z", "updated_at": "2026-01-17T18:41:47.704241Z", "is_active": true }, { "id": 333, "french_word": "confiante", "russian_word": "уверенная", "category": "adjective", "category_display": "Adjective", "level": 4, "level_display": "Basic Adjectives", "comment": "Féminin, singulier, nominatif, forme longue", "tags": [ { "id": 7, "name": "nominative", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.144909Z", "updated_at": "2026-01-17T18:41:46.144920Z" }, { "id": 9, "name": "long-form", "category": "form", "category_display": "Form", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.575658Z", "updated_at": "2026-01-17T18:41:46.575675Z" }, { "id": 3, "name": "feminine", "category": "gender", "category_display": "Gender", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.134507Z", "updated_at": "2026-01-17T18:41:46.134524Z" }, { "id": 5, "name": "singular", "category": "number", "category_display": "Number", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.139686Z", "updated_at": "2026-01-17T18:41:46.139698Z" } ], "created_at": "2026-01-17T18:41:47.709305Z", "updated_at": "2026-01-17T18:41:47.709326Z", "is_active": true }, { "id": 312, "french_word": "content", "russian_word": "довольный", "category": "adjective", "category_display": "Adjective", "level": 4, "level_display": "Basic Adjectives", "comment": "Masculin, singulier, nominatif, forme longue", "tags": [ { "id": 7, "name": "nominative", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.144909Z", "updated_at": "2026-01-17T18:41:46.144920Z" }, { "id": 9, "name": "long-form", "category": "form", "category_display": "Form", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.575658Z", "updated_at": "2026-01-17T18:41:46.575675Z" }, { "id": 2, "name": "masculine", "category": "gender", "category_display": "Gender", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.131757Z", "updated_at": "2026-01-17T18:41:46.131774Z" }, { "id": 5, "name": "singular", "category": "number", "category_display": "Number", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.139686Z", "updated_at": "2026-01-17T18:41:46.139698Z" } ], "created_at": "2026-01-17T18:41:47.586952Z", "updated_at": "2026-01-17T18:41:47.586967Z", "is_active": true }, { "id": 313, "french_word": "contente", "russian_word": "довольная", "category": "adjective", "category_display": "Adjective", "level": 4, "level_display": "Basic Adjectives", "comment": "Féminin, singulier, nominatif, forme longue", "tags": [ { "id": 7, "name": "nominative", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.144909Z", "updated_at": "2026-01-17T18:41:46.144920Z" }, { "id": 9, "name": "long-form", "category": "form", "category_display": "Form", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.575658Z", "updated_at": "2026-01-17T18:41:46.575675Z" }, { "id": 3, "name": "feminine", "category": "gender", "category_display": "Gender", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.134507Z", "updated_at": "2026-01-17T18:41:46.134524Z" }, { "id": 5, "name": "singular", "category": "number", "category_display": "Number", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.139686Z", "updated_at": "2026-01-17T18:41:46.139698Z" } ], "created_at": "2026-01-17T18:41:47.592380Z", "updated_at": "2026-01-17T18:41:47.592392Z", "is_active": true }, { "id": 334, "french_word": "déçu", "russian_word": "разочарованный", "category": "adjective", "category_display": "Adjective", "level": 4, "level_display": "Basic Adjectives", "comment": "Masculin, singulier, nominatif, forme longue", "tags": [ { "id": 7, "name": "nominative", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.144909Z", "updated_at": "2026-01-17T18:41:46.144920Z" }, { "id": 9, "name": "long-form", "category": "form", "category_display": "Form", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.575658Z", "updated_at": "2026-01-17T18:41:46.575675Z" }, { "id": 2, "name": "masculine", "category": "gender", "category_display": "Gender", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.131757Z", "updated_at": "2026-01-17T18:41:46.131774Z" }, { "id": 5, "name": "singular", "category": "number", "category_display": "Number", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.139686Z", "updated_at": "2026-01-17T18:41:46.139698Z" } ], "created_at": "2026-01-17T18:41:47.714515Z", "updated_at": "2026-01-17T18:41:47.714538Z", "is_active": true }, { "id": 335, "french_word": "déçue", "russian_word": "разочарованная", "category": "adjective", "category_display": "Adjective", "level": 4, "level_display": "Basic Adjectives", "comment": "Féminin, singulier, nominatif, forme longue", "tags": [ { "id": 7, "name": "nominative", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.144909Z", "updated_at": "2026-01-17T18:41:46.144920Z" }, { "id": 9, "name": "long-form", "category": "form", "category_display": "Form", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.575658Z", "updated_at": "2026-01-17T18:41:46.575675Z" }, { "id": 3, "name": "feminine", "category": "gender", "category_display": "Gender", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.134507Z", "updated_at": "2026-01-17T18:41:46.134524Z" }, { "id": 5, "name": "singular", "category": "number", "category_display": "Number", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.139686Z", "updated_at": "2026-01-17T18:41:46.139698Z" } ], "created_at": "2026-01-17T18:41:47.721932Z", "updated_at": "2026-01-17T18:41:47.721955Z", "is_active": true }, { "id": 324, "french_word": "excité", "russian_word": "взволнованный", "category": "adjective", "category_display": "Adjective", "level": 4, "level_display": "Basic Adjectives", "comment": "Masculin, singulier, nominatif, forme longue", "tags": [ { "id": 7, "name": "nominative", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.144909Z", "updated_at": "2026-01-17T18:41:46.144920Z" }, { "id": 9, "name": "long-form", "category": "form", "category_display": "Form", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.575658Z", "updated_at": "2026-01-17T18:41:46.575675Z" }, { "id": 2, "name": "masculine", "category": "gender", "category_display": "Gender", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.131757Z", "updated_at": "2026-01-17T18:41:46.131774Z" }, { "id": 5, "name": "singular", "category": "number", "category_display": "Number", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.139686Z", "updated_at": "2026-01-17T18:41:46.139698Z" } ], "created_at": "2026-01-17T18:41:47.656184Z", "updated_at": "2026-01-17T18:41:47.656203Z", "is_active": true }, { "id": 325, "french_word": "excitée", "russian_word": "взволнованная", "category": "adjective", "category_display": "Adjective", "level": 4, "level_display": "Basic Adjectives", "comment": "Féminin, singulier, nominatif, forme longue", "tags": [ { "id": 7, "name": "nominative", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.144909Z", "updated_at": "2026-01-17T18:41:46.144920Z" }, { "id": 9, "name": "long-form", "category": "form", "category_display": "Form", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.575658Z", "updated_at": "2026-01-17T18:41:46.575675Z" }, { "id": 3, "name": "feminine", "category": "gender", "category_display": "Gender", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.134507Z", "updated_at": "2026-01-17T18:41:46.134524Z" }, { "id": 5, "name": "singular", "category": "number", "category_display": "Number", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.139686Z", "updated_at": "2026-01-17T18:41:46.139698Z" } ], "created_at": "2026-01-17T18:41:47.661607Z", "updated_at": "2026-01-17T18:41:47.661625Z", "is_active": true }, { "id": 154, "french_word": "heureux", "russian_word": "счастливый", "category": "adjective", "category_display": "Adjective", "level": 4, "level_display": "Basic Adjectives", "comment": "Masculin, singulier, nominatif, forme longue", "tags": [ { "id": 7, "name": "nominative", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.144909Z", "updated_at": "2026-01-17T18:41:46.144920Z" }, { "id": 9, "name": "long-form", "category": "form", "category_display": "Form", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.575658Z", "updated_at": "2026-01-17T18:41:46.575675Z" }, { "id": 2, "name": "masculine", "category": "gender", "category_display": "Gender", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.131757Z", "updated_at": "2026-01-17T18:41:46.131774Z" }, { "id": 5, "name": "singular", "category": "number", "category_display": "Number", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.139686Z", "updated_at": "2026-01-17T18:41:46.139698Z" } ], "created_at": "2026-01-17T18:41:46.783081Z", "updated_at": "2026-01-17T18:41:46.783094Z", "is_active": true }, { "id": 330, "french_word": "inquiet", "russian_word": "беспокойный", "category": "adjective", "category_display": "Adjective", "level": 4, "level_display": "Basic Adjectives", "comment": "Masculin, singulier, nominatif, forme longue", "tags": [ { "id": 7, "name": "nominative", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.144909Z", "updated_at": "2026-01-17T18:41:46.144920Z" }, { "id": 9, "name": "long-form", "category": "form", "category_display": "Form", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.575658Z", "updated_at": "2026-01-17T18:41:46.575675Z" }, { "id": 2, "name": "masculine", "category": "gender", "category_display": "Gender", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.131757Z", "updated_at": "2026-01-17T18:41:46.131774Z" }, { "id": 5, "name": "singular", "category": "number", "category_display": "Number", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.139686Z", "updated_at": "2026-01-17T18:41:46.139698Z" } ], "created_at": "2026-01-17T18:41:47.689584Z", "updated_at": "2026-01-17T18:41:47.689606Z", "is_active": true }, { "id": 318, "french_word": "insatisfait", "russian_word": "неудовлетворённый", "category": "adjective", "category_display": "Adjective", "level": 4, "level_display": "Basic Adjectives", "comment": "Masculin, singulier, nominatif, forme longue", "tags": [ { "id": 7, "name": "nominative", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.144909Z", "updated_at": "2026-01-17T18:41:46.144920Z" }, { "id": 9, "name": "long-form", "category": "form", "category_display": "Form", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.575658Z", "updated_at": "2026-01-17T18:41:46.575675Z" }, { "id": 2, "name": "masculine", "category": "gender", "category_display": "Gender", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.131757Z", "updated_at": "2026-01-17T18:41:46.131774Z" }, { "id": 5, "name": "singular", "category": "number", "category_display": "Number", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.139686Z", "updated_at": "2026-01-17T18:41:46.139698Z" } ], "created_at": "2026-01-17T18:41:47.618417Z", "updated_at": "2026-01-17T18:41:47.618448Z", "is_active": true }, { "id": 319, "french_word": "insatisfaite", "russian_word": "неудовлетворённая", "category": "adjective", "category_display": "Adjective", "level": 4, "level_display": "Basic Adjectives", "comment": "Féminin, singulier, nominatif, forme longue", "tags": [ { "id": 7, "name": "nominative", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.144909Z", "updated_at": "2026-01-17T18:41:46.144920Z" }, { "id": 9, "name": "long-form", "category": "form", "category_display": "Form", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.575658Z", "updated_at": "2026-01-17T18:41:46.575675Z" }, { "id": 3, "name": "feminine", "category": "gender", "category_display": "Gender", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.134507Z", "updated_at": "2026-01-17T18:41:46.134524Z" }, { "id": 5, "name": "singular", "category": "number", "category_display": "Number", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.139686Z", "updated_at": "2026-01-17T18:41:46.139698Z" } ], "created_at": "2026-01-17T18:41:47.627032Z", "updated_at": "2026-01-17T18:41:47.627064Z", "is_active": true }, { "id": 320, "french_word": "joyeux", "russian_word": "радостный", "category": "adjective", "category_display": "Adjective", "level": 4, "level_display": "Basic Adjectives", "comment": "Masculin, singulier, nominatif, forme longue", "tags": [ { "id": 7, "name": "nominative", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.144909Z", "updated_at": "2026-01-17T18:41:46.144920Z" }, { "id": 9, "name": "long-form", "category": "form", "category_display": "Form", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.575658Z", "updated_at": "2026-01-17T18:41:46.575675Z" }, { "id": 2, "name": "masculine", "category": "gender", "category_display": "Gender", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.131757Z", "updated_at": "2026-01-17T18:41:46.131774Z" }, { "id": 5, "name": "singular", "category": "number", "category_display": "Number", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.139686Z", "updated_at": "2026-01-17T18:41:46.139698Z" } ], "created_at": "2026-01-17T18:41:47.633926Z", "updated_at": "2026-01-17T18:41:47.633955Z", "is_active": true }, { "id": 314, "french_word": "mécontent", "russian_word": "недовольный", "category": "adjective", "category_display": "Adjective", "level": 4, "level_display": "Basic Adjectives", "comment": "Masculin, singulier, nominatif, forme longue", "tags": [ { "id": 7, "name": "nominative", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.144909Z", "updated_at": "2026-01-17T18:41:46.144920Z" }, { "id": 9, "name": "long-form", "category": "form", "category_display": "Form", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.575658Z", "updated_at": "2026-01-17T18:41:46.575675Z" }, { "id": 2, "name": "masculine", "category": "gender", "category_display": "Gender", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.131757Z", "updated_at": "2026-01-17T18:41:46.131774Z" }, { "id": 5, "name": "singular", "category": "number", "category_display": "Number", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.139686Z", "updated_at": "2026-01-17T18:41:46.139698Z" } ], "created_at": "2026-01-17T18:41:47.597288Z", "updated_at": "2026-01-17T18:41:47.597304Z", "is_active": true }, { "id": 315, "french_word": "mécontente", "russian_word": "недовольная", "category": "adjective", "category_display": "Adjective", "level": 4, "level_display": "Basic Adjectives", "comment": "Féminin, singulier, nominatif, forme longue", "tags": [ { "id": 7, "name": "nominative", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.144909Z", "updated_at": "2026-01-17T18:41:46.144920Z" }, { "id": 9, "name": "long-form", "category": "form", "category_display": "Form", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.575658Z", "updated_at": "2026-01-17T18:41:46.575675Z" }, { "id": 3, "name": "feminine", "category": "gender", "category_display": "Gender", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.134507Z", "updated_at": "2026-01-17T18:41:46.134524Z" }, { "id": 5, "name": "singular", "category": "number", "category_display": "Number", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.139686Z", "updated_at": "2026-01-17T18:41:46.139698Z" } ], "created_at": "2026-01-17T18:41:47.602269Z", "updated_at": "2026-01-17T18:41:47.602283Z", "is_active": true }, { "id": 322, "french_word": "mélancolique", "russian_word": "меланхоличный", "category": "adjective", "category_display": "Adjective", "level": 4, "level_display": "Basic Adjectives", "comment": "Masculin, singulier, nominatif, forme longue", "tags": [ { "id": 7, "name": "nominative", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.144909Z", "updated_at": "2026-01-17T18:41:46.144920Z" }, { "id": 9, "name": "long-form", "category": "form", "category_display": "Form", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.575658Z", "updated_at": "2026-01-17T18:41:46.575675Z" }, { "id": 2, "name": "masculine", "category": "gender", "category_display": "Gender", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.131757Z", "updated_at": "2026-01-17T18:41:46.131774Z" }, { "id": 5, "name": "singular", "category": "number", "category_display": "Number", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.139686Z", "updated_at": "2026-01-17T18:41:46.139698Z" } ], "created_at": "2026-01-17T18:41:47.645447Z", "updated_at": "2026-01-17T18:41:47.645469Z", "is_active": true }, { "id": 323, "french_word": "mélancolique (féminin)", "russian_word": "меланхоличная", "category": "adjective", "category_display": "Adjective", "level": 4, "level_display": "Basic Adjectives", "comment": "Féminin, singulier, nominatif, forme longue", "tags": [ { "id": 7, "name": "nominative", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.144909Z", "updated_at": "2026-01-17T18:41:46.144920Z" }, { "id": 9, "name": "long-form", "category": "form", "category_display": "Form", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.575658Z", "updated_at": "2026-01-17T18:41:46.575675Z" }, { "id": 3, "name": "feminine", "category": "gender", "category_display": "Gender", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.134507Z", "updated_at": "2026-01-17T18:41:46.134524Z" }, { "id": 5, "name": "singular", "category": "number", "category_display": "Number", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.139686Z", "updated_at": "2026-01-17T18:41:46.139698Z" } ], "created_at": "2026-01-17T18:41:47.650751Z", "updated_at": "2026-01-17T18:41:47.650769Z", "is_active": true }, { "id": 252, "french_word": "nerveux", "russian_word": "нервный", "category": "adjective", "category_display": "Adjective", "level": 4, "level_display": "Basic Adjectives", "comment": "Masculin, singulier, nominatif, forme longue", "tags": [ { "id": 7, "name": "nominative", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.144909Z", "updated_at": "2026-01-17T18:41:46.144920Z" }, { "id": 9, "name": "long-form", "category": "form", "category_display": "Form", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.575658Z", "updated_at": "2026-01-17T18:41:46.575675Z" }, { "id": 2, "name": "masculine", "category": "gender", "category_display": "Gender", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.131757Z", "updated_at": "2026-01-17T18:41:46.131774Z" }, { "id": 5, "name": "singular", "category": "number", "category_display": "Number", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.139686Z", "updated_at": "2026-01-17T18:41:46.139698Z" } ], "created_at": "2026-01-17T18:41:47.277670Z", "updated_at": "2026-01-17T18:41:47.277682Z", "is_active": true }, { "id": 316, "french_word": "satisfait", "russian_word": "удовлетворённый", "category": "adjective", "category_display": "Adjective", "level": 4, "level_display": "Basic Adjectives", "comment": "Masculin, singulier, nominatif, forme longue", "tags": [ { "id": 7, "name": "nominative", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.144909Z", "updated_at": "2026-01-17T18:41:46.144920Z" }, { "id": 9, "name": "long-form", "category": "form", "category_display": "Form", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.575658Z", "updated_at": "2026-01-17T18:41:46.575675Z" }, { "id": 2, "name": "masculine", "category": "gender", "category_display": "Gender", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.131757Z", "updated_at": "2026-01-17T18:41:46.131774Z" }, { "id": 5, "name": "singular", "category": "number", "category_display": "Number", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.139686Z", "updated_at": "2026-01-17T18:41:46.139698Z" } ], "created_at": "2026-01-17T18:41:47.607986Z", "updated_at": "2026-01-17T18:41:47.607997Z", "is_active": true }, { "id": 317, "french_word": "satisfaite", "russian_word": "удовлетворённая", "category": "adjective", "category_display": "Adjective", "level": 4, "level_display": "Basic Adjectives", "comment": "Féminin, singulier, nominatif, forme longue", "tags": [ { "id": 7, "name": "nominative", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.144909Z", "updated_at": "2026-01-17T18:41:46.144920Z" }, { "id": 9, "name": "long-form", "category": "form", "category_display": "Form", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.575658Z", "updated_at": "2026-01-17T18:41:46.575675Z" }, { "id": 3, "name": "feminine", "category": "gender", "category_display": "Gender", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.134507Z", "updated_at": "2026-01-17T18:41:46.134524Z" }, { "id": 5, "name": "singular", "category": "number", "category_display": "Number", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.139686Z", "updated_at": "2026-01-17T18:41:46.139698Z" } ], "created_at": "2026-01-17T18:41:47.613019Z", "updated_at": "2026-01-17T18:41:47.613032Z", "is_active": true }, { "id": 328, "french_word": "serein", "russian_word": "спокойный", "category": "adjective", "category_display": "Adjective", "level": 4, "level_display": "Basic Adjectives", "comment": "Masculin, singulier, nominatif, forme longue", "tags": [ { "id": 7, "name": "nominative", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.144909Z", "updated_at": "2026-01-17T18:41:46.144920Z" }, { "id": 9, "name": "long-form", "category": "form", "category_display": "Form", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.575658Z", "updated_at": "2026-01-17T18:41:46.575675Z" }, { "id": 2, "name": "masculine", "category": "gender", "category_display": "Gender", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.131757Z", "updated_at": "2026-01-17T18:41:46.131774Z" }, { "id": 5, "name": "singular", "category": "number", "category_display": "Number", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.139686Z", "updated_at": "2026-01-17T18:41:46.139698Z" } ], "created_at": "2026-01-17T18:41:47.678330Z", "updated_at": "2026-01-17T18:41:47.678352Z", "is_active": true }, { "id": 329, "french_word": "sereine", "russian_word": "спокойная", "category": "adjective", "category_display": "Adjective", "level": 4, "level_display": "Basic Adjectives", "comment": "Féminin, singulier, nominatif, forme longue", "tags": [ { "id": 7, "name": "nominative", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.144909Z", "updated_at": "2026-01-17T18:41:46.144920Z" }, { "id": 9, "name": "long-form", "category": "form", "category_display": "Form", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.575658Z", "updated_at": "2026-01-17T18:41:46.575675Z" }, { "id": 3, "name": "feminine", "category": "gender", "category_display": "Gender", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.134507Z", "updated_at": "2026-01-17T18:41:46.134524Z" }, { "id": 5, "name": "singular", "category": "number", "category_display": "Number", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.139686Z", "updated_at": "2026-01-17T18:41:46.139698Z" } ], "created_at": "2026-01-17T18:41:47.684099Z", "updated_at": "2026-01-17T18:41:47.684121Z", "is_active": true }, { "id": 156, "french_word": "triste", "russian_word": "грустный", "category": "adjective", "category_display": "Adjective", "level": 4, "level_display": "Basic Adjectives", "comment": "Masculin, singulier, nominatif, forme longue", "tags": [ { "id": 7, "name": "nominative", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.144909Z", "updated_at": "2026-01-17T18:41:46.144920Z" }, { "id": 9, "name": "long-form", "category": "form", "category_display": "Form", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.575658Z", "updated_at": "2026-01-17T18:41:46.575675Z" }, { "id": 2, "name": "masculine", "category": "gender", "category_display": "Gender", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.131757Z", "updated_at": "2026-01-17T18:41:46.131774Z" }, { "id": 5, "name": "singular", "category": "number", "category_display": "Number", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.139686Z", "updated_at": "2026-01-17T18:41:46.139698Z" } ], "created_at": "2026-01-17T18:41:46.793874Z", "updated_at": "2026-01-17T18:41:46.793887Z", "is_active": true }, { "id": 157, "french_word": "triste (féminin)", "russian_word": "грустная", "category": "adjective", "category_display": "Adjective", "level": 4, "level_display": "Basic Adjectives", "comment": "Féminin, singulier, nominatif, forme longue", "tags": [ { "id": 7, "name": "nominative", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.144909Z", "updated_at": "2026-01-17T18:41:46.144920Z" }, { "id": 9, "name": "long-form", "category": "form", "category_display": "Form", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.575658Z", "updated_at": "2026-01-17T18:41:46.575675Z" }, { "id": 3, "name": "feminine", "category": "gender", "category_display": "Gender", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.134507Z", "updated_at": "2026-01-17T18:41:46.134524Z" }, { "id": 5, "name": "singular", "category": "number", "category_display": "Number", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.139686Z", "updated_at": "2026-01-17T18:41:46.139698Z" } ], "created_at": "2026-01-17T18:41:46.798570Z", "updated_at": "2026-01-17T18:41:46.798581Z", "is_active": true } ], "steps": [ { "id": 80, "sub_level": 21, "order": 1, "step_type": "learning_card", "step_type_display": "Learning Card", "title": "Introduction - Adjectifs de sentiment et émotion", "description": "Adjectifs pour décrire les sentiments et émotions", "is_required": true, "config": { "content": "Adjectifs pour décrire les sentiments et émotions", "concept_type": "grammar" }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:48.070783Z", "updated_at": "2026-01-17T18:41:48.070795Z" }, { "id": 81, "sub_level": 21, "order": 2, "step_type": "game_matching", "step_type_display": "Game - Matching", "title": "Matching - Adjectifs de sentiment et émotion", "description": "Matching - Adjectifs de sentiment et émotion", "is_required": true, "config": { "game_mode": "matching", "instructions": "Pratiquez les adjectifs avec le mode matching", "min_score": 75, "level": 4, "sub_level": 8 }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:48.074141Z", "updated_at": "2026-01-17T18:41:48.074151Z" }, { "id": 82, "sub_level": 21, "order": 3, "step_type": "game_flashcard", "step_type_display": "Game - Flashcard", "title": "Flashcard - Adjectifs de sentiment et émotion", "description": "Flashcard - Adjectifs de sentiment et émotion", "is_required": false, "config": { "game_mode": "flashcard", "instructions": "Pratiquez les adjectifs avec le mode flashcard", "min_score": 75, "level": 4, "sub_level": 8 }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:48.077320Z", "updated_at": "2026-01-17T18:41:48.077330Z" }, { "id": 83, "sub_level": 21, "order": 4, "step_type": "game_multiple_choice", "step_type_display": "Game - Multiple Choice", "title": "Multiple Choice - Adjectifs de sentiment et émotion", "description": "Multiple Choice - Adjectifs de sentiment et émotion", "is_required": false, "config": { "game_mode": "multiple_choice", "instructions": "Pratiquez les adjectifs avec le mode multiple_choice", "min_score": 75, "level": 4, "sub_level": 8 }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:48.080693Z", "updated_at": "2026-01-17T18:41:48.080703Z" } ], "videos": [], "learning_cards": [ { "id": 80, "sub_level": 21, "order": 1, "step_type": "learning_card", "step_type_display": "Learning Card", "title": "Introduction - Adjectifs de sentiment et émotion", "description": "Adjectifs pour décrire les sentiments et émotions", "is_required": true, "config": { "content": "Adjectifs pour décrire les sentiments et émotions", "concept_type": "grammar" }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:48.070783Z", "updated_at": "2026-01-17T18:41:48.070795Z" } ], "exercises": [], "total_words": 27, "is_unlocked": false, "is_completed": false, "progress": { "words_mastered": 0, "total_words": 27, "completion_percentage": 0.0, "steps": [] }, "is_active": true, "created_at": "2026-01-17T18:41:48.041997Z", "updated_at": "2026-01-17T18:41:48.042007Z" }, { "id": 22, "level": 5, "level_display": "Small Phrases", "sub_level": 1, "title": "Phrases de base", "description": "Phrases essentielles pour communiquer", "order": 1, "word_pairs": [ { "id": 373, "french_word": "appelez la police", "russian_word": "вызовите полицию", "category": "phrase", "category_display": "Phrase", "level": 5, "level_display": "Small Phrases", "comment": "Call the police", "tags": [], "created_at": "2026-01-17T18:41:48.210087Z", "updated_at": "2026-01-17T18:41:48.210099Z", "is_active": true }, { "id": 372, "french_word": "appelez un médecin", "russian_word": "вызовите врача", "category": "phrase", "category_display": "Phrase", "level": 5, "level_display": "Small Phrases", "comment": "Call a doctor", "tags": [], "created_at": "2026-01-17T18:41:48.207158Z", "updated_at": "2026-01-17T18:41:48.207167Z", "is_active": true }, { "id": 382, "french_word": "assez", "russian_word": "достаточно", "category": "adverb", "category_display": "Adverb", "level": 5, "level_display": "Small Phrases", "comment": "Enough", "tags": [ { "id": 27, "name": "adverb", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:53.615110Z", "updated_at": "2026-01-17T18:41:53.615125Z" } ], "created_at": "2026-01-17T18:41:48.238455Z", "updated_at": "2026-01-17T18:41:53.784611Z", "is_active": true }, { "id": 37, "french_word": "au revoir", "russian_word": "до свидания", "category": "interjection", "category_display": "Interjection", "level": 2, "level_display": "Basic Words", "comment": "Goodbye", "tags": [ { "id": 29, "name": "interjection", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:54.259134Z", "updated_at": "2026-01-17T18:41:54.259150Z" } ], "created_at": "2026-01-17T18:41:45.974137Z", "updated_at": "2026-01-17T18:41:54.272608Z", "is_active": true }, { "id": 371, "french_word": "au secours!", "russian_word": "помогите!", "category": "phrase", "category_display": "Phrase", "level": 5, "level_display": "Small Phrases", "comment": "Help!", "tags": [], "created_at": "2026-01-17T18:41:48.204496Z", "updated_at": "2026-01-17T18:41:48.204506Z", "is_active": true }, { "id": 55, "french_word": "aujourd'hui", "russian_word": "сегодня", "category": "adverb", "category_display": "Adverb", "level": 2, "level_display": "Basic Words", "comment": "Today", "tags": [ { "id": 27, "name": "adverb", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:53.615110Z", "updated_at": "2026-01-17T18:41:53.615125Z" } ], "created_at": "2026-01-17T18:41:46.023034Z", "updated_at": "2026-01-17T18:41:53.629718Z", "is_active": true }, { "id": 52, "french_word": "beaucoup", "russian_word": "много", "category": "adverb", "category_display": "Adverb", "level": 2, "level_display": "Basic Words", "comment": "Much/Many", "tags": [ { "id": 27, "name": "adverb", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:53.615110Z", "updated_at": "2026-01-17T18:41:53.615125Z" } ], "created_at": "2026-01-17T18:41:46.014668Z", "updated_at": "2026-01-17T18:41:53.769119Z", "is_active": true }, { "id": 375, "french_word": "bon appétit", "russian_word": "приятного аппетита", "category": "phrase", "category_display": "Phrase", "level": 5, "level_display": "Small Phrases", "comment": "Enjoy your meal", "tags": [], "created_at": "2026-01-17T18:41:48.216212Z", "updated_at": "2026-01-17T18:41:48.216222Z", "is_active": true }, { "id": 34, "french_word": "bonjour", "russian_word": "здравствуйте", "category": "interjection", "category_display": "Interjection", "level": 2, "level_display": "Basic Words", "comment": "Hello/Good day", "tags": [ { "id": 29, "name": "interjection", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:54.259134Z", "updated_at": "2026-01-17T18:41:54.259150Z" } ], "created_at": "2026-01-17T18:41:45.966456Z", "updated_at": "2026-01-17T18:41:54.267344Z", "is_active": true }, { "id": 40, "french_word": "bonne nuit", "russian_word": "спокойной ночи", "category": "phrase", "category_display": "Phrase", "level": 2, "level_display": "Basic Words", "comment": "Good night", "tags": [], "created_at": "2026-01-17T18:41:45.982203Z", "updated_at": "2026-01-17T18:41:48.092497Z", "is_active": true }, { "id": 41, "french_word": "bonsoir", "russian_word": "добрый вечер", "category": "phrase", "category_display": "Phrase", "level": 2, "level_display": "Basic Words", "comment": "Good evening", "tags": [], "created_at": "2026-01-17T18:41:45.985420Z", "updated_at": "2026-01-17T18:41:48.089699Z", "is_active": true }, { "id": 369, "french_word": "c'est bon marché", "russian_word": "это дёшево", "category": "phrase", "category_display": "Phrase", "level": 5, "level_display": "Small Phrases", "comment": "It's cheap", "tags": [], "created_at": "2026-01-17T18:41:48.198616Z", "updated_at": "2026-01-17T18:41:48.198628Z", "is_active": true }, { "id": 368, "french_word": "c'est cher", "russian_word": "это дорого", "category": "phrase", "category_display": "Phrase", "level": 5, "level_display": "Small Phrases", "comment": "It's expensive", "tags": [], "created_at": "2026-01-17T18:41:48.196052Z", "updated_at": "2026-01-17T18:41:48.196065Z", "is_active": true }, { "id": 377, "french_word": "c'est délicieux", "russian_word": "это вкусно", "category": "phrase", "category_display": "Phrase", "level": 5, "level_display": "Small Phrases", "comment": "It's delicious", "tags": [], "created_at": "2026-01-17T18:41:48.221757Z", "updated_at": "2026-01-17T18:41:48.221769Z", "is_active": true }, { "id": 366, "french_word": "combien ça coûte?", "russian_word": "сколько это стоит?", "category": "phrase", "category_display": "Phrase", "level": 5, "level_display": "Small Phrases", "comment": "How much does it cost?", "tags": [], "created_at": "2026-01-17T18:41:48.190816Z", "updated_at": "2026-01-17T18:41:48.190829Z", "is_active": true }, { "id": 380, "french_word": "combien?", "russian_word": "сколько?", "category": "phrase", "category_display": "Phrase", "level": 5, "level_display": "Small Phrases", "comment": "How many?", "tags": [], "created_at": "2026-01-17T18:41:48.230046Z", "updated_at": "2026-01-17T18:41:48.230059Z", "is_active": true }, { "id": 340, "french_word": "comment allez-vous?", "russian_word": "как дела?", "category": "phrase", "category_display": "Phrase", "level": 5, "level_display": "Small Phrases", "comment": "How are you?", "tags": [], "created_at": "2026-01-17T18:41:48.115875Z", "updated_at": "2026-01-17T18:41:48.115890Z", "is_active": true }, { "id": 344, "french_word": "comment vous appelez-vous?", "russian_word": "как вас зовут?", "category": "phrase", "category_display": "Phrase", "level": 5, "level_display": "Small Phrases", "comment": "What is your name?", "tags": [], "created_at": "2026-01-17T18:41:48.125994Z", "updated_at": "2026-01-17T18:41:48.126010Z", "is_active": true }, { "id": 338, "french_word": "de rien", "russian_word": "пожалуйста", "category": "interjection", "category_display": "Interjection", "level": 5, "level_display": "Small Phrases", "comment": "You're welcome", "tags": [ { "id": 29, "name": "interjection", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:54.259134Z", "updated_at": "2026-01-17T18:41:54.259150Z" } ], "created_at": "2026-01-17T18:41:48.105554Z", "updated_at": "2026-01-17T18:41:54.293527Z", "is_active": true }, { "id": 56, "french_word": "demain", "russian_word": "завтра", "category": "adverb", "category_display": "Adverb", "level": 2, "level_display": "Basic Words", "comment": "Tomorrow", "tags": [ { "id": 27, "name": "adverb", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:53.615110Z", "updated_at": "2026-01-17T18:41:53.615125Z" } ], "created_at": "2026-01-17T18:41:46.025804Z", "updated_at": "2026-01-17T18:41:53.635545Z", "is_active": true }, { "id": 39, "french_word": "excusez-moi", "russian_word": "извините", "category": "interjection", "category_display": "Interjection", "level": 2, "level_display": "Basic Words", "comment": "Excuse me", "tags": [ { "id": 29, "name": "interjection", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:54.259134Z", "updated_at": "2026-01-17T18:41:54.259150Z" } ], "created_at": "2026-01-17T18:41:45.979369Z", "updated_at": "2026-01-17T18:41:54.303967Z", "is_active": true }, { "id": 57, "french_word": "hier", "russian_word": "вчера", "category": "adverb", "category_display": "Adverb", "level": 2, "level_display": "Basic Words", "comment": "Yesterday", "tags": [ { "id": 27, "name": "adverb", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:53.615110Z", "updated_at": "2026-01-17T18:41:53.615125Z" } ], "created_at": "2026-01-17T18:41:46.028504Z", "updated_at": "2026-01-17T18:41:53.641404Z", "is_active": true }, { "id": 361, "french_word": "ici", "russian_word": "здесь", "category": "adverb", "category_display": "Adverb", "level": 5, "level_display": "Small Phrases", "comment": "Here", "tags": [ { "id": 27, "name": "adverb", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:53.615110Z", "updated_at": "2026-01-17T18:41:53.615125Z" } ], "created_at": "2026-01-17T18:41:48.177816Z", "updated_at": "2026-01-17T18:41:53.734257Z", "is_active": true }, { "id": 384, "french_word": "il fait beau", "russian_word": "хорошая погода", "category": "phrase", "category_display": "Phrase", "level": 5, "level_display": "Small Phrases", "comment": "Nice weather", "tags": [], "created_at": "2026-01-17T18:41:48.243938Z", "updated_at": "2026-01-17T18:41:48.243950Z", "is_active": true }, { "id": 388, "french_word": "il fait chaud", "russian_word": "жарко", "category": "phrase", "category_display": "Phrase", "level": 5, "level_display": "Small Phrases", "comment": "It's hot", "tags": [], "created_at": "2026-01-17T18:41:48.255344Z", "updated_at": "2026-01-17T18:41:48.255356Z", "is_active": true }, { "id": 387, "french_word": "il fait froid", "russian_word": "холодно", "category": "phrase", "category_display": "Phrase", "level": 5, "level_display": "Small Phrases", "comment": "It's cold", "tags": [], "created_at": "2026-01-17T18:41:48.252440Z", "updated_at": "2026-01-17T18:41:48.252452Z", "is_active": true } ], "steps": [ { "id": 84, "sub_level": 22, "order": 1, "step_type": "learning_card", "step_type_display": "Learning Card", "title": "Introduction - Phrases de base", "description": "Phrases essentielles pour communiquer", "is_required": true, "config": { "content": "Phrases essentielles pour communiquer", "concept_type": "vocabulary" }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:48.321788Z", "updated_at": "2026-01-17T18:41:48.321799Z" }, { "id": 85, "sub_level": 22, "order": 2, "step_type": "game_matching", "step_type_display": "Game - Matching", "title": "Reconstruisez la phrase - Phrases de base", "description": "Reconstruisez la phrase - Phrases de base", "is_required": true, "config": { "game_mode": "phrase_reconstruction", "instructions": "Reconstruisez la phrase", "min_score": 70, "level": 5, "sub_level": 1 }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:48.325915Z", "updated_at": "2026-01-17T18:41:48.325926Z" }, { "id": 86, "sub_level": 22, "order": 3, "step_type": "game_multiple_choice", "step_type_display": "Game - Multiple Choice", "title": "Complétez la phrase - Phrases de base", "description": "Complétez la phrase - Phrases de base", "is_required": true, "config": { "game_mode": "phrase_completion", "instructions": "Complétez la phrase", "min_score": 70, "level": 5, "sub_level": 1 }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:48.329438Z", "updated_at": "2026-01-17T18:41:48.329449Z" }, { "id": 87, "sub_level": 22, "order": 4, "step_type": "game_matching", "step_type_display": "Game - Matching", "title": "Associez les phrases - Phrases de base", "description": "Associez les phrases - Phrases de base", "is_required": false, "config": { "game_mode": "matching", "instructions": "Associez les phrases", "min_score": 70, "level": 5, "sub_level": 1 }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:48.333043Z", "updated_at": "2026-01-17T18:41:48.333053Z" } ], "videos": [], "learning_cards": [ { "id": 84, "sub_level": 22, "order": 1, "step_type": "learning_card", "step_type_display": "Learning Card", "title": "Introduction - Phrases de base", "description": "Phrases essentielles pour communiquer", "is_required": true, "config": { "content": "Phrases essentielles pour communiquer", "concept_type": "vocabulary" }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:48.321788Z", "updated_at": "2026-01-17T18:41:48.321799Z" } ], "exercises": [], "total_words": 26, "is_unlocked": false, "is_completed": false, "progress": { "words_mastered": 0, "total_words": 26, "completion_percentage": 0.0, "steps": [] }, "is_active": true, "created_at": "2026-01-17T18:41:48.313981Z", "updated_at": "2026-01-17T18:41:48.313992Z" }, { "id": 23, "level": 5, "level_display": "Small Phrases", "sub_level": 2, "title": "Questions courantes", "description": "Apprenez à poser des questions", "order": 2, "word_pairs": [ { "id": 386, "french_word": "il neige", "russian_word": "идёт снег", "category": "phrase", "category_display": "Phrase", "level": 5, "level_display": "Small Phrases", "comment": "It's snowing", "tags": [], "created_at": "2026-01-17T18:41:48.249707Z", "updated_at": "2026-01-17T18:41:48.249719Z", "is_active": true }, { "id": 385, "french_word": "il pleut", "russian_word": "идёт дождь", "category": "phrase", "category_display": "Phrase", "level": 5, "level_display": "Small Phrases", "comment": "It's raining", "tags": [], "created_at": "2026-01-17T18:41:48.246885Z", "updated_at": "2026-01-17T18:41:48.246897Z", "is_active": true }, { "id": 398, "french_word": "j'ai", "russian_word": "у меня есть", "category": "phrase", "category_display": "Phrase", "level": 5, "level_display": "Small Phrases", "comment": "I have", "tags": [], "created_at": "2026-01-17T18:41:48.280892Z", "updated_at": "2026-01-17T18:41:48.280902Z", "is_active": true }, { "id": 356, "french_word": "j'ai chaud", "russian_word": "мне жарко", "category": "phrase", "category_display": "Phrase", "level": 5, "level_display": "Small Phrases", "comment": "I'm hot", "tags": [], "created_at": "2026-01-17T18:41:48.164911Z", "updated_at": "2026-01-17T18:41:48.164930Z", "is_active": true }, { "id": 353, "french_word": "j'ai faim", "russian_word": "я хочу есть", "category": "phrase", "category_display": "Phrase", "level": 5, "level_display": "Small Phrases", "comment": "I'm hungry", "tags": [], "created_at": "2026-01-17T18:41:48.156936Z", "updated_at": "2026-01-17T18:41:48.156949Z", "is_active": true }, { "id": 355, "french_word": "j'ai froid", "russian_word": "мне холодно", "category": "phrase", "category_display": "Phrase", "level": 5, "level_display": "Small Phrases", "comment": "I'm cold", "tags": [], "created_at": "2026-01-17T18:41:48.162152Z", "updated_at": "2026-01-17T18:41:48.162162Z", "is_active": true }, { "id": 354, "french_word": "j'ai soif", "russian_word": "я хочу пить", "category": "phrase", "category_display": "Phrase", "level": 5, "level_display": "Small Phrases", "comment": "I'm thirsty", "tags": [], "created_at": "2026-01-17T18:41:48.159471Z", "updated_at": "2026-01-17T18:41:48.159481Z", "is_active": true }, { "id": 357, "french_word": "j'ai sommeil", "russian_word": "я хочу спать", "category": "phrase", "category_display": "Phrase", "level": 5, "level_display": "Small Phrases", "comment": "I'm sleepy", "tags": [], "created_at": "2026-01-17T18:41:48.167530Z", "updated_at": "2026-01-17T18:41:48.167545Z", "is_active": true }, { "id": 379, "french_word": "j'aime", "russian_word": "мне нравится", "category": "phrase", "category_display": "Phrase", "level": 5, "level_display": "Small Phrases", "comment": "I like", "tags": [], "created_at": "2026-01-17T18:41:48.227109Z", "updated_at": "2026-01-17T18:41:48.227122Z", "is_active": true }, { "id": 348, "french_word": "je comprends", "russian_word": "я понимаю", "category": "phrase", "category_display": "Phrase", "level": 5, "level_display": "Small Phrases", "comment": "I understand", "tags": [], "created_at": "2026-01-17T18:41:48.136075Z", "updated_at": "2026-01-17T18:41:48.136091Z", "is_active": true }, { "id": 396, "french_word": "je fais", "russian_word": "я делаю", "category": "phrase", "category_display": "Phrase", "level": 5, "level_display": "Small Phrases", "comment": "I'm doing", "tags": [], "created_at": "2026-01-17T18:41:48.275894Z", "updated_at": "2026-01-17T18:41:48.275907Z", "is_active": true }, { "id": 345, "french_word": "je m'appelle", "russian_word": "меня зовут", "category": "phrase", "category_display": "Phrase", "level": 5, "level_display": "Small Phrases", "comment": "My name is", "tags": [], "created_at": "2026-01-17T18:41:48.128480Z", "updated_at": "2026-01-17T18:41:48.128495Z", "is_active": true }, { "id": 378, "french_word": "je n'aime pas", "russian_word": "мне не нравится", "category": "phrase", "category_display": "Phrase", "level": 5, "level_display": "Small Phrases", "comment": "I don't like", "tags": [], "created_at": "2026-01-17T18:41:48.224361Z", "updated_at": "2026-01-17T18:41:48.224371Z", "is_active": true }, { "id": 349, "french_word": "je ne comprends pas", "russian_word": "я не понимаю", "category": "phrase", "category_display": "Phrase", "level": 5, "level_display": "Small Phrases", "comment": "I don't understand", "tags": [], "created_at": "2026-01-17T18:41:48.138767Z", "updated_at": "2026-01-17T18:41:48.138777Z", "is_active": true }, { "id": 397, "french_word": "je suis", "russian_word": "я есть", "category": "phrase", "category_display": "Phrase", "level": 5, "level_display": "Small Phrases", "comment": "I am", "tags": [], "created_at": "2026-01-17T18:41:48.278385Z", "updated_at": "2026-01-17T18:41:48.278401Z", "is_active": true }, { "id": 399, "french_word": "je suis content", "russian_word": "я доволен", "category": "phrase", "category_display": "Phrase", "level": 5, "level_display": "Small Phrases", "comment": "I'm happy", "tags": [], "created_at": "2026-01-17T18:41:48.283608Z", "updated_at": "2026-01-17T18:41:48.283618Z", "is_active": true }, { "id": 401, "french_word": "je suis en colère", "russian_word": "я злой", "category": "phrase", "category_display": "Phrase", "level": 5, "level_display": "Small Phrases", "comment": "I'm angry", "tags": [], "created_at": "2026-01-17T18:41:48.288725Z", "updated_at": "2026-01-17T18:41:48.288735Z", "is_active": true }, { "id": 358, "french_word": "je suis fatigué", "russian_word": "я устал", "category": "phrase", "category_display": "Phrase", "level": 5, "level_display": "Small Phrases", "comment": "I'm tired", "tags": [], "created_at": "2026-01-17T18:41:48.170135Z", "updated_at": "2026-01-17T18:41:48.170145Z", "is_active": true }, { "id": 402, "french_word": "je suis surpris", "russian_word": "я удивлён", "category": "phrase", "category_display": "Phrase", "level": 5, "level_display": "Small Phrases", "comment": "I'm surprised", "tags": [], "created_at": "2026-01-17T18:41:48.291272Z", "updated_at": "2026-01-17T18:41:48.291285Z", "is_active": true }, { "id": 400, "french_word": "je suis triste", "russian_word": "мне грустно", "category": "phrase", "category_display": "Phrase", "level": 5, "level_display": "Small Phrases", "comment": "I'm sad", "tags": [], "created_at": "2026-01-17T18:41:48.286124Z", "updated_at": "2026-01-17T18:41:48.286139Z", "is_active": true }, { "id": 394, "french_word": "je vais", "russian_word": "я иду", "category": "phrase", "category_display": "Phrase", "level": 5, "level_display": "Small Phrases", "comment": "I'm going", "tags": [], "created_at": "2026-01-17T18:41:48.271007Z", "updated_at": "2026-01-17T18:41:48.271017Z", "is_active": true }, { "id": 343, "french_word": "je vais bien", "russian_word": "у меня всё хорошо", "category": "phrase", "category_display": "Phrase", "level": 5, "level_display": "Small Phrases", "comment": "I'm doing well", "tags": [], "created_at": "2026-01-17T18:41:48.123406Z", "updated_at": "2026-01-17T18:41:48.123416Z", "is_active": true }, { "id": 370, "french_word": "je vais payer", "russian_word": "я заплачу", "category": "phrase", "category_display": "Phrase", "level": 5, "level_display": "Small Phrases", "comment": "I'll pay", "tags": [], "created_at": "2026-01-17T18:41:48.201971Z", "updated_at": "2026-01-17T18:41:48.201986Z", "is_active": true }, { "id": 395, "french_word": "je viens", "russian_word": "я прихожу", "category": "phrase", "category_display": "Phrase", "level": 5, "level_display": "Small Phrases", "comment": "I'm coming", "tags": [], "created_at": "2026-01-17T18:41:48.273356Z", "updated_at": "2026-01-17T18:41:48.273366Z", "is_active": true }, { "id": 367, "french_word": "je voudrais", "russian_word": "я хотел бы", "category": "phrase", "category_display": "Phrase", "level": 5, "level_display": "Small Phrases", "comment": "I would like", "tags": [], "created_at": "2026-01-17T18:41:48.193356Z", "updated_at": "2026-01-17T18:41:48.193366Z", "is_active": true }, { "id": 376, "french_word": "l'addition, s'il vous plaît", "russian_word": "счёт, пожалуйста", "category": "phrase", "category_display": "Phrase", "level": 5, "level_display": "Small Phrases", "comment": "The check, please", "tags": [], "created_at": "2026-01-17T18:41:48.219029Z", "updated_at": "2026-01-17T18:41:48.219041Z", "is_active": true } ], "steps": [ { "id": 88, "sub_level": 23, "order": 1, "step_type": "learning_card", "step_type_display": "Learning Card", "title": "Introduction - Questions courantes", "description": "Apprenez à poser des questions", "is_required": true, "config": { "content": "Apprenez à poser des questions", "concept_type": "vocabulary" }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:48.344020Z", "updated_at": "2026-01-17T18:41:48.344036Z" }, { "id": 89, "sub_level": 23, "order": 2, "step_type": "game_matching", "step_type_display": "Game - Matching", "title": "Reconstruisez la phrase - Questions courantes", "description": "Reconstruisez la phrase - Questions courantes", "is_required": true, "config": { "game_mode": "phrase_reconstruction", "instructions": "Reconstruisez la phrase", "min_score": 70, "level": 5, "sub_level": 2 }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:48.348264Z", "updated_at": "2026-01-17T18:41:48.348276Z" }, { "id": 90, "sub_level": 23, "order": 3, "step_type": "game_multiple_choice", "step_type_display": "Game - Multiple Choice", "title": "Complétez la phrase - Questions courantes", "description": "Complétez la phrase - Questions courantes", "is_required": true, "config": { "game_mode": "phrase_completion", "instructions": "Complétez la phrase", "min_score": 70, "level": 5, "sub_level": 2 }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:48.351629Z", "updated_at": "2026-01-17T18:41:48.351640Z" }, { "id": 91, "sub_level": 23, "order": 4, "step_type": "game_matching", "step_type_display": "Game - Matching", "title": "Associez les phrases - Questions courantes", "description": "Associez les phrases - Questions courantes", "is_required": false, "config": { "game_mode": "matching", "instructions": "Associez les phrases", "min_score": 70, "level": 5, "sub_level": 2 }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:48.355069Z", "updated_at": "2026-01-17T18:41:48.355079Z" } ], "videos": [], "learning_cards": [ { "id": 88, "sub_level": 23, "order": 1, "step_type": "learning_card", "step_type_display": "Learning Card", "title": "Introduction - Questions courantes", "description": "Apprenez à poser des questions", "is_required": true, "config": { "content": "Apprenez à poser des questions", "concept_type": "vocabulary" }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:48.344020Z", "updated_at": "2026-01-17T18:41:48.344036Z" } ], "exercises": [], "total_words": 26, "is_unlocked": false, "is_completed": false, "progress": { "words_mastered": 0, "total_words": 26, "completion_percentage": 0.0, "steps": [] }, "is_active": true, "created_at": "2026-01-17T18:41:48.335768Z", "updated_at": "2026-01-17T18:41:48.335785Z" }, { "id": 24, "level": 5, "level_display": "Small Phrases", "sub_level": 3, "title": "Expressions utiles", "description": "Expressions pour la vie quotidienne", "order": 3, "word_pairs": [ { "id": 362, "french_word": "là", "russian_word": "там", "category": "adverb", "category_display": "Adverb", "level": 5, "level_display": "Small Phrases", "comment": "There", "tags": [ { "id": 27, "name": "adverb", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:53.615110Z", "updated_at": "2026-01-17T18:41:53.615125Z" } ], "created_at": "2026-01-17T18:41:48.180331Z", "updated_at": "2026-01-17T18:41:53.747546Z", "is_active": true }, { "id": 389, "french_word": "ma famille", "russian_word": "моя семья", "category": "phrase", "category_display": "Phrase", "level": 5, "level_display": "Small Phrases", "comment": "My family", "tags": [], "created_at": "2026-01-17T18:41:48.258000Z", "updated_at": "2026-01-17T18:41:48.258019Z", "is_active": true }, { "id": 391, "french_word": "ma mère", "russian_word": "моя мать", "category": "phrase", "category_display": "Phrase", "level": 5, "level_display": "Small Phrases", "comment": "My mother", "tags": [], "created_at": "2026-01-17T18:41:48.263163Z", "updated_at": "2026-01-17T18:41:48.263176Z", "is_active": true }, { "id": 393, "french_word": "ma sœur", "russian_word": "моя сестра", "category": "phrase", "category_display": "Phrase", "level": 5, "level_display": "Small Phrases", "comment": "My sister", "tags": [], "created_at": "2026-01-17T18:41:48.268633Z", "updated_at": "2026-01-17T18:41:48.268648Z", "is_active": true }, { "id": 351, "french_word": "maintenant", "russian_word": "сейчас", "category": "adverb", "category_display": "Adverb", "level": 5, "level_display": "Small Phrases", "comment": "Now", "tags": [ { "id": 27, "name": "adverb", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:53.615110Z", "updated_at": "2026-01-17T18:41:53.615125Z" } ], "created_at": "2026-01-17T18:41:48.151919Z", "updated_at": "2026-01-17T18:41:53.617877Z", "is_active": true }, { "id": 36, "french_word": "merci", "russian_word": "спасибо", "category": "interjection", "category_display": "Interjection", "level": 2, "level_display": "Basic Words", "comment": "Thank you", "tags": [ { "id": 29, "name": "interjection", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:54.259134Z", "updated_at": "2026-01-17T18:41:54.259150Z" } ], "created_at": "2026-01-17T18:41:45.971527Z", "updated_at": "2026-01-17T18:41:54.288155Z", "is_active": true }, { "id": 337, "french_word": "merci beaucoup", "russian_word": "большое спасибо", "category": "phrase", "category_display": "Phrase", "level": 5, "level_display": "Small Phrases", "comment": "Thank you very much", "tags": [], "created_at": "2026-01-17T18:41:48.103053Z", "updated_at": "2026-01-17T18:41:48.103063Z", "is_active": true }, { "id": 392, "french_word": "mon frère", "russian_word": "мой брат", "category": "phrase", "category_display": "Phrase", "level": 5, "level_display": "Small Phrases", "comment": "My brother", "tags": [], "created_at": "2026-01-17T18:41:48.266201Z", "updated_at": "2026-01-17T18:41:48.266211Z", "is_active": true }, { "id": 390, "french_word": "mon père", "russian_word": "мой отец", "category": "phrase", "category_display": "Phrase", "level": 5, "level_display": "Small Phrases", "comment": "My father", "tags": [], "created_at": "2026-01-17T18:41:48.260526Z", "updated_at": "2026-01-17T18:41:48.260536Z", "is_active": true }, { "id": 347, "french_word": "non", "russian_word": "нет", "category": "interjection", "category_display": "Interjection", "level": 5, "level_display": "Small Phrases", "comment": "No", "tags": [ { "id": 29, "name": "interjection", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:54.259134Z", "updated_at": "2026-01-17T18:41:54.259150Z" } ], "created_at": "2026-01-17T18:41:48.133517Z", "updated_at": "2026-01-17T18:41:54.282927Z", "is_active": true }, { "id": 346, "french_word": "oui", "russian_word": "да", "category": "interjection", "category_display": "Interjection", "level": 5, "level_display": "Small Phrases", "comment": "Yes", "tags": [ { "id": 29, "name": "interjection", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:54.259134Z", "updated_at": "2026-01-17T18:41:54.259150Z" } ], "created_at": "2026-01-17T18:41:48.131005Z", "updated_at": "2026-01-17T18:41:54.277823Z", "is_active": true }, { "id": 374, "french_word": "où est l'hôpital?", "russian_word": "где больница?", "category": "phrase", "category_display": "Phrase", "level": 5, "level_display": "Small Phrases", "comment": "Where is the hospital?", "tags": [], "created_at": "2026-01-17T18:41:48.212901Z", "updated_at": "2026-01-17T18:41:48.212913Z", "is_active": true }, { "id": 359, "french_word": "où est...?", "russian_word": "где...?", "category": "phrase", "category_display": "Phrase", "level": 5, "level_display": "Small Phrases", "comment": "Where is...?", "tags": [], "created_at": "2026-01-17T18:41:48.172715Z", "updated_at": "2026-01-17T18:41:48.172725Z", "is_active": true }, { "id": 360, "french_word": "où sont...?", "russian_word": "где...?", "category": "phrase", "category_display": "Phrase", "level": 5, "level_display": "Small Phrases", "comment": "Where are...?", "tags": [], "created_at": "2026-01-17T18:41:48.175250Z", "updated_at": "2026-01-17T18:41:48.175260Z", "is_active": true }, { "id": 339, "french_word": "pardon", "russian_word": "простите", "category": "interjection", "category_display": "Interjection", "level": 5, "level_display": "Small Phrases", "comment": "Sorry", "tags": [ { "id": 29, "name": "interjection", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:54.259134Z", "updated_at": "2026-01-17T18:41:54.259150Z" } ], "created_at": "2026-01-17T18:41:48.113195Z", "updated_at": "2026-01-17T18:41:54.309270Z", "is_active": true }, { "id": 352, "french_word": "plus tard", "russian_word": "позже", "category": "phrase", "category_display": "Phrase", "level": 5, "level_display": "Small Phrases", "comment": "Later", "tags": [], "created_at": "2026-01-17T18:41:48.154381Z", "updated_at": "2026-01-17T18:41:48.154394Z", "is_active": true }, { "id": 350, "french_word": "quelle heure est-il?", "russian_word": "который час?", "category": "phrase", "category_display": "Phrase", "level": 5, "level_display": "Small Phrases", "comment": "What time is it?", "tags": [], "created_at": "2026-01-17T18:41:48.141374Z", "updated_at": "2026-01-17T18:41:48.141384Z", "is_active": true }, { "id": 38, "french_word": "s'il vous plaît", "russian_word": "пожалуйста", "category": "interjection", "category_display": "Interjection", "level": 2, "level_display": "Basic Words", "comment": "Please", "tags": [ { "id": 29, "name": "interjection", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:54.259134Z", "updated_at": "2026-01-17T18:41:54.259150Z" } ], "created_at": "2026-01-17T18:41:45.976728Z", "updated_at": "2026-01-17T18:41:54.298752Z", "is_active": true }, { "id": 365, "french_word": "tout droit", "russian_word": "прямо", "category": "phrase", "category_display": "Phrase", "level": 5, "level_display": "Small Phrases", "comment": "Straight ahead", "tags": [], "created_at": "2026-01-17T18:41:48.188116Z", "updated_at": "2026-01-17T18:41:48.188126Z", "is_active": true }, { "id": 383, "french_word": "trop", "russian_word": "слишком", "category": "adverb", "category_display": "Adverb", "level": 5, "level_display": "Small Phrases", "comment": "Too much", "tags": [ { "id": 27, "name": "adverb", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:53.615110Z", "updated_at": "2026-01-17T18:41:53.615125Z" } ], "created_at": "2026-01-17T18:41:48.241200Z", "updated_at": "2026-01-17T18:41:53.790154Z", "is_active": true }, { "id": 381, "french_word": "un peu", "russian_word": "немного", "category": "phrase", "category_display": "Phrase", "level": 5, "level_display": "Small Phrases", "comment": "A little", "tags": [], "created_at": "2026-01-17T18:41:48.232770Z", "updated_at": "2026-01-17T18:41:48.232783Z", "is_active": true }, { "id": 336, "french_word": "à bientôt", "russian_word": "до скорого", "category": "phrase", "category_display": "Phrase", "level": 5, "level_display": "Small Phrases", "comment": "Farewell - see you soon", "tags": [], "created_at": "2026-01-17T18:41:48.097978Z", "updated_at": "2026-01-17T18:41:48.097988Z", "is_active": true }, { "id": 363, "french_word": "à droite", "russian_word": "направо", "category": "phrase", "category_display": "Phrase", "level": 5, "level_display": "Small Phrases", "comment": "To the right", "tags": [], "created_at": "2026-01-17T18:41:48.182998Z", "updated_at": "2026-01-17T18:41:48.183010Z", "is_active": true }, { "id": 364, "french_word": "à gauche", "russian_word": "налево", "category": "phrase", "category_display": "Phrase", "level": 5, "level_display": "Small Phrases", "comment": "To the left", "tags": [], "created_at": "2026-01-17T18:41:48.185532Z", "updated_at": "2026-01-17T18:41:48.185542Z", "is_active": true }, { "id": 342, "french_word": "ça va bien", "russian_word": "всё хорошо", "category": "phrase", "category_display": "Phrase", "level": 5, "level_display": "Small Phrases", "comment": "I'm fine", "tags": [], "created_at": "2026-01-17T18:41:48.120928Z", "updated_at": "2026-01-17T18:41:48.120939Z", "is_active": true }, { "id": 341, "french_word": "ça va?", "russian_word": "как дела?", "category": "phrase", "category_display": "Phrase", "level": 5, "level_display": "Small Phrases", "comment": "How are you? (informal)", "tags": [], "created_at": "2026-01-17T18:41:48.118384Z", "updated_at": "2026-01-17T18:41:48.118399Z", "is_active": true } ], "steps": [ { "id": 92, "sub_level": 24, "order": 1, "step_type": "learning_card", "step_type_display": "Learning Card", "title": "Introduction - Expressions utiles", "description": "Expressions pour la vie quotidienne", "is_required": true, "config": { "content": "Expressions pour la vie quotidienne", "concept_type": "vocabulary" }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:48.365863Z", "updated_at": "2026-01-17T18:41:48.365877Z" }, { "id": 93, "sub_level": 24, "order": 2, "step_type": "game_matching", "step_type_display": "Game - Matching", "title": "Reconstruisez la phrase - Expressions utiles", "description": "Reconstruisez la phrase - Expressions utiles", "is_required": true, "config": { "game_mode": "phrase_reconstruction", "instructions": "Reconstruisez la phrase", "min_score": 70, "level": 5, "sub_level": 3 }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:48.369345Z", "updated_at": "2026-01-17T18:41:48.369357Z" }, { "id": 94, "sub_level": 24, "order": 3, "step_type": "game_multiple_choice", "step_type_display": "Game - Multiple Choice", "title": "Complétez la phrase - Expressions utiles", "description": "Complétez la phrase - Expressions utiles", "is_required": true, "config": { "game_mode": "phrase_completion", "instructions": "Complétez la phrase", "min_score": 70, "level": 5, "sub_level": 3 }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:48.372828Z", "updated_at": "2026-01-17T18:41:48.372841Z" }, { "id": 95, "sub_level": 24, "order": 4, "step_type": "game_matching", "step_type_display": "Game - Matching", "title": "Associez les phrases - Expressions utiles", "description": "Associez les phrases - Expressions utiles", "is_required": false, "config": { "game_mode": "matching", "instructions": "Associez les phrases", "min_score": 70, "level": 5, "sub_level": 3 }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:48.376657Z", "updated_at": "2026-01-17T18:41:48.376674Z" } ], "videos": [], "learning_cards": [ { "id": 92, "sub_level": 24, "order": 1, "step_type": "learning_card", "step_type_display": "Learning Card", "title": "Introduction - Expressions utiles", "description": "Expressions pour la vie quotidienne", "is_required": true, "config": { "content": "Expressions pour la vie quotidienne", "concept_type": "vocabulary" }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:48.365863Z", "updated_at": "2026-01-17T18:41:48.365877Z" } ], "exercises": [], "total_words": 26, "is_unlocked": false, "is_completed": false, "progress": { "words_mastered": 0, "total_words": 26, "completion_percentage": 0.0, "steps": [] }, "is_active": true, "created_at": "2026-01-17T18:41:48.357866Z", "updated_at": "2026-01-17T18:41:48.357882Z" }, { "id": 25, "level": 5, "level_display": "Small Phrases", "sub_level": 4, "title": "Proverbes russes", "description": "Proverbes et expressions idiomatiques russes", "order": 4, "word_pairs": [ { "id": 408, "french_word": "comme un partisan sous interrogatoire", "russian_word": "как партизан на допросе", "category": "phrase", "category_display": "Phrase", "level": 5, "level_display": "Small Phrases", "comment": "Proverb - Like a partisan under interrogation", "tags": [], "created_at": "2026-01-17T18:41:48.307848Z", "updated_at": "2026-01-17T18:41:48.307862Z", "is_active": true }, { "id": 407, "french_word": "il ne manquera pas le sien", "russian_word": "своего не упустит", "category": "phrase", "category_display": "Phrase", "level": 5, "level_display": "Small Phrases", "comment": "Proverb - He won't miss his own", "tags": [], "created_at": "2026-01-17T18:41:48.305250Z", "updated_at": "2026-01-17T18:41:48.305261Z", "is_active": true }, { "id": 404, "french_word": "ne réveille pas le mal tant qu'il est calme", "russian_word": "не буди лихо пока лихо тихо", "category": "phrase", "category_display": "Phrase", "level": 5, "level_display": "Small Phrases", "comment": "Proverb - Don't wake trouble while it's quiet", "tags": [], "created_at": "2026-01-17T18:41:48.296732Z", "updated_at": "2026-01-17T18:41:48.296744Z", "is_active": true }, { "id": 403, "french_word": "on ne cherche pas le bien du bien", "russian_word": "от добра добро не ищут", "category": "phrase", "category_display": "Phrase", "level": 5, "level_display": "Small Phrases", "comment": "Proverb - Don't look for good from good", "tags": [], "created_at": "2026-01-17T18:41:48.293834Z", "updated_at": "2026-01-17T18:41:48.293847Z", "is_active": true }, { "id": 406, "french_word": "on ne va pas en visite avec son propre samovar", "russian_word": "в гости со своим самоваром не ходят", "category": "phrase", "category_display": "Phrase", "level": 5, "level_display": "Small Phrases", "comment": "Proverb - Don't bring your own samovar when visiting", "tags": [], "created_at": "2026-01-17T18:41:48.302440Z", "updated_at": "2026-01-17T18:41:48.302456Z", "is_active": true }, { "id": 409, "french_word": "tu te mordras les coudes après", "russian_word": "ты будешь кусать локти потом", "category": "phrase", "category_display": "Phrase", "level": 5, "level_display": "Small Phrases", "comment": "Proverb - You will bite your elbows later", "tags": [], "created_at": "2026-01-17T18:41:48.310451Z", "updated_at": "2026-01-17T18:41:48.310466Z", "is_active": true }, { "id": 405, "french_word": "vivre sa vie n'est pas traverser un champ", "russian_word": "жизнь прожить не поле перейти", "category": "phrase", "category_display": "Phrase", "level": 5, "level_display": "Small Phrases", "comment": "Proverb - Living life is not crossing a field", "tags": [], "created_at": "2026-01-17T18:41:48.299790Z", "updated_at": "2026-01-17T18:41:48.299801Z", "is_active": true } ], "steps": [ { "id": 96, "sub_level": 25, "order": 1, "step_type": "learning_card", "step_type_display": "Learning Card", "title": "Introduction - Proverbes russes", "description": "Proverbes et expressions idiomatiques russes", "is_required": true, "config": { "content": "Proverbes et expressions idiomatiques russes", "concept_type": "vocabulary" }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:48.387090Z", "updated_at": "2026-01-17T18:41:48.387115Z" }, { "id": 97, "sub_level": 25, "order": 2, "step_type": "game_matching", "step_type_display": "Game - Matching", "title": "Reconstruisez la phrase - Proverbes russes", "description": "Reconstruisez la phrase - Proverbes russes", "is_required": true, "config": { "game_mode": "phrase_reconstruction", "instructions": "Reconstruisez la phrase", "min_score": 70, "level": 5, "sub_level": 4 }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:48.391173Z", "updated_at": "2026-01-17T18:41:48.391189Z" }, { "id": 98, "sub_level": 25, "order": 3, "step_type": "game_multiple_choice", "step_type_display": "Game - Multiple Choice", "title": "Complétez la phrase - Proverbes russes", "description": "Complétez la phrase - Proverbes russes", "is_required": true, "config": { "game_mode": "phrase_completion", "instructions": "Complétez la phrase", "min_score": 70, "level": 5, "sub_level": 4 }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:48.395025Z", "updated_at": "2026-01-17T18:41:48.395037Z" }, { "id": 99, "sub_level": 25, "order": 4, "step_type": "game_matching", "step_type_display": "Game - Matching", "title": "Associez les phrases - Proverbes russes", "description": "Associez les phrases - Proverbes russes", "is_required": false, "config": { "game_mode": "matching", "instructions": "Associez les phrases", "min_score": 70, "level": 5, "sub_level": 4 }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:48.399203Z", "updated_at": "2026-01-17T18:41:48.399215Z" } ], "videos": [], "learning_cards": [ { "id": 96, "sub_level": 25, "order": 1, "step_type": "learning_card", "step_type_display": "Learning Card", "title": "Introduction - Proverbes russes", "description": "Proverbes et expressions idiomatiques russes", "is_required": true, "config": { "content": "Proverbes et expressions idiomatiques russes", "concept_type": "vocabulary" }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:48.387090Z", "updated_at": "2026-01-17T18:41:48.387115Z" } ], "exercises": [], "total_words": 7, "is_unlocked": false, "is_completed": false, "progress": { "words_mastered": 0, "total_words": 7, "completion_percentage": 0.0, "steps": [] }, "is_active": true, "created_at": "2026-01-17T18:41:48.379526Z", "updated_at": "2026-01-17T18:41:48.379542Z" }, { "id": 26, "level": 6, "level_display": "Verbs & Conjugations", "sub_level": 1, "title": "Verbes du 1er groupe", "description": "Conjugaison des verbes du premier groupe", "order": 1, "word_pairs": [ { "id": 411, "french_word": "appeler", "russian_word": "звать", "category": "verb", "category_display": "Verb", "level": 6, "level_display": "Verbs & Conjugations", "comment": "Premier groupe - Infinitif", "tags": [ { "id": 10, "name": "infinitive", "category": "form", "category_display": "Form", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.405964Z", "updated_at": "2026-01-17T18:41:48.405981Z" }, { "id": 11, "name": "present", "category": "tense", "category_display": "Tense (Conjugation)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.408735Z", "updated_at": "2026-01-17T18:41:48.408752Z" } ], "created_at": "2026-01-17T18:41:48.417117Z", "updated_at": "2026-01-17T18:41:48.417133Z", "is_active": true }, { "id": 413, "french_word": "boire", "russian_word": "пить", "category": "verb", "category_display": "Verb", "level": 6, "level_display": "Verbs & Conjugations", "comment": "Premier groupe - Infinitif", "tags": [ { "id": 10, "name": "infinitive", "category": "form", "category_display": "Form", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.405964Z", "updated_at": "2026-01-17T18:41:48.405981Z" }, { "id": 11, "name": "present", "category": "tense", "category_display": "Tense (Conjugation)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.408735Z", "updated_at": "2026-01-17T18:41:48.408752Z" } ], "created_at": "2026-01-17T18:41:48.433748Z", "updated_at": "2026-01-17T18:41:48.433765Z", "is_active": true }, { "id": 410, "french_word": "prendre", "russian_word": "брать", "category": "verb", "category_display": "Verb", "level": 6, "level_display": "Verbs & Conjugations", "comment": "Premier groupe - Infinitif", "tags": [ { "id": 10, "name": "infinitive", "category": "form", "category_display": "Form", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.405964Z", "updated_at": "2026-01-17T18:41:48.405981Z" }, { "id": 11, "name": "present", "category": "tense", "category_display": "Tense (Conjugation)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.408735Z", "updated_at": "2026-01-17T18:41:48.408752Z" } ], "created_at": "2026-01-17T18:41:48.411517Z", "updated_at": "2026-01-17T18:41:48.411532Z", "is_active": true }, { "id": 414, "french_word": "s'occuper / pratiquer", "russian_word": "заниматься", "category": "verb", "category_display": "Verb", "level": 6, "level_display": "Verbs & Conjugations", "comment": "Premier groupe - Infinitif (réfléchi)", "tags": [ { "id": 10, "name": "infinitive", "category": "form", "category_display": "Form", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.405964Z", "updated_at": "2026-01-17T18:41:48.405981Z" }, { "id": 11, "name": "present", "category": "tense", "category_display": "Tense (Conjugation)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.408735Z", "updated_at": "2026-01-17T18:41:48.408752Z" } ], "created_at": "2026-01-17T18:41:48.439241Z", "updated_at": "2026-01-17T18:41:48.439257Z", "is_active": true }, { "id": 412, "french_word": "savoir", "russian_word": "знать", "category": "verb", "category_display": "Verb", "level": 6, "level_display": "Verbs & Conjugations", "comment": "Premier groupe - Infinitif", "tags": [ { "id": 10, "name": "infinitive", "category": "form", "category_display": "Form", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.405964Z", "updated_at": "2026-01-17T18:41:48.405981Z" }, { "id": 11, "name": "present", "category": "tense", "category_display": "Tense (Conjugation)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.408735Z", "updated_at": "2026-01-17T18:41:48.408752Z" } ], "created_at": "2026-01-17T18:41:48.428310Z", "updated_at": "2026-01-17T18:41:48.428327Z", "is_active": true }, { "id": 415, "french_word": "vouloir", "russian_word": "хотеть", "category": "verb", "category_display": "Verb", "level": 6, "level_display": "Verbs & Conjugations", "comment": "Premier groupe - Infinitif (irrégulier)", "tags": [ { "id": 10, "name": "infinitive", "category": "form", "category_display": "Form", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.405964Z", "updated_at": "2026-01-17T18:41:48.405981Z" }, { "id": 11, "name": "present", "category": "tense", "category_display": "Tense (Conjugation)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.408735Z", "updated_at": "2026-01-17T18:41:48.408752Z" } ], "created_at": "2026-01-17T18:41:48.448702Z", "updated_at": "2026-01-17T18:41:48.448718Z", "is_active": true } ], "steps": [ { "id": 100, "sub_level": 26, "order": 1, "step_type": "learning_card", "step_type_display": "Learning Card", "title": "Introduction - Premier groupe de conjugaison", "description": "# Premier groupe de conjugaison\n\nEn russe, il existe deux grands types de conjugaisons pour les verbes. Le **premier groupe (première conjugaison)** se caractérise par des terminaisons spécifiques à l", "is_required": true, "config": { "content": "# Premier groupe de conjugaison\n\nEn russe, il existe deux grands types de conjugaisons pour les verbes. Le **premier groupe (première conjugaison)** se caractérise par des terminaisons spécifiques à l'infinitif : `-ать`, `-ять`, `-еть`, `-уть`, `-оть`, `-ыть`, `-ти`, `-сть`, `-зть`, `-чть`.\n\n## Terminaisons du premier groupe\n\n- **я** : -у / -ю\n- **ты** : -ешь / -ёшь\n- **он/она** : -ет / -ёт\n- **мы** : -ем / -ём\n- **вы** : -ете / -ёте\n- **они** : -ут / -ют\n\n## Exemples de verbes du premier groupe\n\n- брать (prendre)\n- звать (appeler)\n- идти (aller - trajet déterminé)\n- знать (savoir)\n- пить (boire)\n- заниматься (s'occuper, pratiquer)\n- хотеть (vouloir - irrégulier)\n\nPratiquez ces verbes pour maîtriser les terminaisons du premier groupe !", "concept_type": "conjugation" }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:48.671897Z", "updated_at": "2026-01-17T18:41:48.671909Z" }, { "id": 101, "sub_level": 26, "order": 2, "step_type": "game_matching", "step_type_display": "Game - Matching", "title": "Pratiquez la conjugaison - Verbes du 1er groupe", "description": "Pratiquez la conjugaison - Verbes du 1er groupe", "is_required": true, "config": { "game_mode": "conjugation", "instructions": "Pratiquez la conjugaison", "min_score": 75, "level": 6, "sub_level": 1 }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:48.675178Z", "updated_at": "2026-01-17T18:41:48.675187Z" }, { "id": 102, "sub_level": 26, "order": 3, "step_type": "game_matching", "step_type_display": "Game - Matching", "title": "Associez les formes conjuguées - Verbes du 1er groupe", "description": "Associez les formes conjuguées - Verbes du 1er groupe", "is_required": true, "config": { "game_mode": "matching", "instructions": "Associez les formes conjuguées", "min_score": 75, "level": 6, "sub_level": 1 }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:48.678505Z", "updated_at": "2026-01-17T18:41:48.678515Z" }, { "id": 103, "sub_level": 26, "order": 4, "step_type": "game_multiple_choice", "step_type_display": "Game - Multiple Choice", "title": "Choisissez la bonne conjugaison - Verbes du 1er groupe", "description": "Choisissez la bonne conjugaison - Verbes du 1er groupe", "is_required": false, "config": { "game_mode": "multiple_choice", "instructions": "Choisissez la bonne conjugaison", "min_score": 75, "level": 6, "sub_level": 1 }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:48.681994Z", "updated_at": "2026-01-17T18:41:48.682003Z" } ], "videos": [], "learning_cards": [ { "id": 100, "sub_level": 26, "order": 1, "step_type": "learning_card", "step_type_display": "Learning Card", "title": "Introduction - Premier groupe de conjugaison", "description": "# Premier groupe de conjugaison\n\nEn russe, il existe deux grands types de conjugaisons pour les verbes. Le **premier groupe (première conjugaison)** se caractérise par des terminaisons spécifiques à l", "is_required": true, "config": { "content": "# Premier groupe de conjugaison\n\nEn russe, il existe deux grands types de conjugaisons pour les verbes. Le **premier groupe (première conjugaison)** se caractérise par des terminaisons spécifiques à l'infinitif : `-ать`, `-ять`, `-еть`, `-уть`, `-оть`, `-ыть`, `-ти`, `-сть`, `-зть`, `-чть`.\n\n## Terminaisons du premier groupe\n\n- **я** : -у / -ю\n- **ты** : -ешь / -ёшь\n- **он/она** : -ет / -ёт\n- **мы** : -ем / -ём\n- **вы** : -ете / -ёте\n- **они** : -ут / -ют\n\n## Exemples de verbes du premier groupe\n\n- брать (prendre)\n- звать (appeler)\n- идти (aller - trajet déterminé)\n- знать (savoir)\n- пить (boire)\n- заниматься (s'occuper, pratiquer)\n- хотеть (vouloir - irrégulier)\n\nPratiquez ces verbes pour maîtriser les terminaisons du premier groupe !", "concept_type": "conjugation" }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:48.671897Z", "updated_at": "2026-01-17T18:41:48.671909Z" } ], "exercises": [], "total_words": 6, "is_unlocked": false, "is_completed": false, "progress": { "words_mastered": 0, "total_words": 6, "completion_percentage": 0.0, "steps": [] }, "is_active": true, "created_at": "2026-01-17T18:41:48.665390Z", "updated_at": "2026-01-17T18:41:48.665400Z" }, { "id": 27, "level": 6, "level_display": "Verbs & Conjugations", "sub_level": 2, "title": "Verbes du 2ème groupe", "description": "Conjugaison des verbes du deuxième groupe", "order": 2, "word_pairs": [ { "id": 418, "french_word": "aimer", "russian_word": "любить", "category": "verb", "category_display": "Verb", "level": 6, "level_display": "Verbs & Conjugations", "comment": "Second groupe - Infinitif", "tags": [ { "id": 10, "name": "infinitive", "category": "form", "category_display": "Form", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.405964Z", "updated_at": "2026-01-17T18:41:48.405981Z" }, { "id": 11, "name": "present", "category": "tense", "category_display": "Tense (Conjugation)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.408735Z", "updated_at": "2026-01-17T18:41:48.408752Z" } ], "created_at": "2026-01-17T18:41:48.465178Z", "updated_at": "2026-01-17T18:41:48.465194Z", "is_active": true }, { "id": 419, "french_word": "aller (répétition)", "russian_word": "ходить", "category": "verb", "category_display": "Verb", "level": 6, "level_display": "Verbs & Conjugations", "comment": "Second groupe - Infinitif (mouvement répété)", "tags": [ { "id": 10, "name": "infinitive", "category": "form", "category_display": "Form", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.405964Z", "updated_at": "2026-01-17T18:41:48.405981Z" }, { "id": 11, "name": "present", "category": "tense", "category_display": "Tense (Conjugation)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.408735Z", "updated_at": "2026-01-17T18:41:48.408752Z" } ], "created_at": "2026-01-17T18:41:48.471101Z", "updated_at": "2026-01-17T18:41:48.471120Z", "is_active": true }, { "id": 428, "french_word": "chercher", "russian_word": "искать", "category": "verb", "category_display": "Verb", "level": 6, "level_display": "Verbs & Conjugations", "comment": "Second groupe - Infinitif", "tags": [ { "id": 10, "name": "infinitive", "category": "form", "category_display": "Form", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.405964Z", "updated_at": "2026-01-17T18:41:48.405981Z" }, { "id": 11, "name": "present", "category": "tense", "category_display": "Tense (Conjugation)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.408735Z", "updated_at": "2026-01-17T18:41:48.408752Z" } ], "created_at": "2026-01-17T18:41:48.519078Z", "updated_at": "2026-01-17T18:41:48.519090Z", "is_active": true }, { "id": 436, "french_word": "comprendre", "russian_word": "понимать", "category": "verb", "category_display": "Verb", "level": 6, "level_display": "Verbs & Conjugations", "comment": "Second groupe - Infinitif", "tags": [ { "id": 10, "name": "infinitive", "category": "form", "category_display": "Form", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.405964Z", "updated_at": "2026-01-17T18:41:48.405981Z" }, { "id": 11, "name": "present", "category": "tense", "category_display": "Tense (Conjugation)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.408735Z", "updated_at": "2026-01-17T18:41:48.408752Z" } ], "created_at": "2026-01-17T18:41:48.558701Z", "updated_at": "2026-01-17T18:41:48.558712Z", "is_active": true }, { "id": 422, "french_word": "demander", "russian_word": "просить", "category": "verb", "category_display": "Verb", "level": 6, "level_display": "Verbs & Conjugations", "comment": "Second groupe - Infinitif", "tags": [ { "id": 10, "name": "infinitive", "category": "form", "category_display": "Form", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.405964Z", "updated_at": "2026-01-17T18:41:48.405981Z" }, { "id": 11, "name": "present", "category": "tense", "category_display": "Tense (Conjugation)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.408735Z", "updated_at": "2026-01-17T18:41:48.408752Z" } ], "created_at": "2026-01-17T18:41:48.491272Z", "updated_at": "2026-01-17T18:41:48.491283Z", "is_active": true }, { "id": 437, "french_word": "dire", "russian_word": "говорить", "category": "verb", "category_display": "Verb", "level": 6, "level_display": "Verbs & Conjugations", "comment": "Second groupe - Infinitif", "tags": [ { "id": 10, "name": "infinitive", "category": "form", "category_display": "Form", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.405964Z", "updated_at": "2026-01-17T18:41:48.405981Z" }, { "id": 11, "name": "present", "category": "tense", "category_display": "Tense (Conjugation)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.408735Z", "updated_at": "2026-01-17T18:41:48.408752Z" } ], "created_at": "2026-01-17T18:41:48.568572Z", "updated_at": "2026-01-17T18:41:48.568583Z", "is_active": true }, { "id": 433, "french_word": "dormir", "russian_word": "спать", "category": "verb", "category_display": "Verb", "level": 6, "level_display": "Verbs & Conjugations", "comment": "Second groupe - Infinitif", "tags": [ { "id": 10, "name": "infinitive", "category": "form", "category_display": "Form", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.405964Z", "updated_at": "2026-01-17T18:41:48.405981Z" }, { "id": 11, "name": "present", "category": "tense", "category_display": "Tense (Conjugation)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.408735Z", "updated_at": "2026-01-17T18:41:48.408752Z" } ], "created_at": "2026-01-17T18:41:48.543606Z", "updated_at": "2026-01-17T18:41:48.543617Z", "is_active": true }, { "id": 425, "french_word": "enseigner", "russian_word": "учить", "category": "verb", "category_display": "Verb", "level": 6, "level_display": "Verbs & Conjugations", "comment": "Second groupe - Infinitif", "tags": [ { "id": 10, "name": "infinitive", "category": "form", "category_display": "Form", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.405964Z", "updated_at": "2026-01-17T18:41:48.405981Z" }, { "id": 11, "name": "present", "category": "tense", "category_display": "Tense (Conjugation)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.408735Z", "updated_at": "2026-01-17T18:41:48.408752Z" } ], "created_at": "2026-01-17T18:41:48.505182Z", "updated_at": "2026-01-17T18:41:48.505194Z", "is_active": true }, { "id": 431, "french_word": "habiter", "russian_word": "жить", "category": "verb", "category_display": "Verb", "level": 6, "level_display": "Verbs & Conjugations", "comment": "Second groupe - Infinitif", "tags": [ { "id": 10, "name": "infinitive", "category": "form", "category_display": "Form", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.405964Z", "updated_at": "2026-01-17T18:41:48.405981Z" }, { "id": 11, "name": "present", "category": "tense", "category_display": "Tense (Conjugation)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.408735Z", "updated_at": "2026-01-17T18:41:48.408752Z" } ], "created_at": "2026-01-17T18:41:48.533695Z", "updated_at": "2026-01-17T18:41:48.533710Z", "is_active": true }, { "id": 434, "french_word": "lire", "russian_word": "читать", "category": "verb", "category_display": "Verb", "level": 6, "level_display": "Verbs & Conjugations", "comment": "Second groupe - Infinitif", "tags": [ { "id": 10, "name": "infinitive", "category": "form", "category_display": "Form", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.405964Z", "updated_at": "2026-01-17T18:41:48.405981Z" }, { "id": 11, "name": "present", "category": "tense", "category_display": "Tense (Conjugation)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.408735Z", "updated_at": "2026-01-17T18:41:48.408752Z" } ], "created_at": "2026-01-17T18:41:48.548440Z", "updated_at": "2026-01-17T18:41:48.548451Z", "is_active": true }, { "id": 432, "french_word": "manger", "russian_word": "есть", "category": "verb", "category_display": "Verb", "level": 6, "level_display": "Verbs & Conjugations", "comment": "Second groupe - Infinitif", "tags": [ { "id": 10, "name": "infinitive", "category": "form", "category_display": "Form", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.405964Z", "updated_at": "2026-01-17T18:41:48.405981Z" }, { "id": 11, "name": "present", "category": "tense", "category_display": "Tense (Conjugation)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.408735Z", "updated_at": "2026-01-17T18:41:48.408752Z" } ], "created_at": "2026-01-17T18:41:48.538799Z", "updated_at": "2026-01-17T18:41:48.538817Z", "is_active": true }, { "id": 427, "french_word": "marcher", "russian_word": "ходить", "category": "verb", "category_display": "Verb", "level": 6, "level_display": "Verbs & Conjugations", "comment": "Second groupe - Infinitif", "tags": [ { "id": 10, "name": "infinitive", "category": "form", "category_display": "Form", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.405964Z", "updated_at": "2026-01-17T18:41:48.405981Z" }, { "id": 11, "name": "present", "category": "tense", "category_display": "Tense (Conjugation)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.408735Z", "updated_at": "2026-01-17T18:41:48.408752Z" } ], "created_at": "2026-01-17T18:41:48.514429Z", "updated_at": "2026-01-17T18:41:48.514440Z", "is_active": true }, { "id": 426, "french_word": "penser", "russian_word": "думать", "category": "verb", "category_display": "Verb", "level": 6, "level_display": "Verbs & Conjugations", "comment": "Second groupe - Infinitif", "tags": [ { "id": 10, "name": "infinitive", "category": "form", "category_display": "Form", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.405964Z", "updated_at": "2026-01-17T18:41:48.405981Z" }, { "id": 11, "name": "present", "category": "tense", "category_display": "Tense (Conjugation)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.408735Z", "updated_at": "2026-01-17T18:41:48.408752Z" } ], "created_at": "2026-01-17T18:41:48.509823Z", "updated_at": "2026-01-17T18:41:48.509835Z", "is_active": true }, { "id": 424, "french_word": "répondre", "russian_word": "отвечать", "category": "verb", "category_display": "Verb", "level": 6, "level_display": "Verbs & Conjugations", "comment": "Second groupe - Infinitif", "tags": [ { "id": 10, "name": "infinitive", "category": "form", "category_display": "Form", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.405964Z", "updated_at": "2026-01-17T18:41:48.405981Z" }, { "id": 11, "name": "present", "category": "tense", "category_display": "Tense (Conjugation)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.408735Z", "updated_at": "2026-01-17T18:41:48.408752Z" } ], "created_at": "2026-01-17T18:41:48.500540Z", "updated_at": "2026-01-17T18:41:48.500551Z", "is_active": true }, { "id": 429, "french_word": "travailler", "russian_word": "работать", "category": "verb", "category_display": "Verb", "level": 6, "level_display": "Verbs & Conjugations", "comment": "Second groupe - Infinitif", "tags": [ { "id": 10, "name": "infinitive", "category": "form", "category_display": "Form", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.405964Z", "updated_at": "2026-01-17T18:41:48.405981Z" }, { "id": 11, "name": "present", "category": "tense", "category_display": "Tense (Conjugation)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.408735Z", "updated_at": "2026-01-17T18:41:48.408752Z" } ], "created_at": "2026-01-17T18:41:48.524032Z", "updated_at": "2026-01-17T18:41:48.524046Z", "is_active": true }, { "id": 421, "french_word": "vivre", "russian_word": "жить", "category": "verb", "category_display": "Verb", "level": 6, "level_display": "Verbs & Conjugations", "comment": "Second groupe - Infinitif", "tags": [ { "id": 10, "name": "infinitive", "category": "form", "category_display": "Form", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.405964Z", "updated_at": "2026-01-17T18:41:48.405981Z" }, { "id": 11, "name": "present", "category": "tense", "category_display": "Tense (Conjugation)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.408735Z", "updated_at": "2026-01-17T18:41:48.408752Z" } ], "created_at": "2026-01-17T18:41:48.486573Z", "updated_at": "2026-01-17T18:41:48.486584Z", "is_active": true }, { "id": 420, "french_word": "voir", "russian_word": "видеть", "category": "verb", "category_display": "Verb", "level": 6, "level_display": "Verbs & Conjugations", "comment": "Second groupe - Infinitif", "tags": [ { "id": 10, "name": "infinitive", "category": "form", "category_display": "Form", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.405964Z", "updated_at": "2026-01-17T18:41:48.405981Z" }, { "id": 11, "name": "present", "category": "tense", "category_display": "Tense (Conjugation)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.408735Z", "updated_at": "2026-01-17T18:41:48.408752Z" } ], "created_at": "2026-01-17T18:41:48.476521Z", "updated_at": "2026-01-17T18:41:48.476539Z", "is_active": true }, { "id": 423, "french_word": "écouter", "russian_word": "слушать", "category": "verb", "category_display": "Verb", "level": 6, "level_display": "Verbs & Conjugations", "comment": "Second groupe - Infinitif", "tags": [ { "id": 10, "name": "infinitive", "category": "form", "category_display": "Form", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.405964Z", "updated_at": "2026-01-17T18:41:48.405981Z" }, { "id": 11, "name": "present", "category": "tense", "category_display": "Tense (Conjugation)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.408735Z", "updated_at": "2026-01-17T18:41:48.408752Z" } ], "created_at": "2026-01-17T18:41:48.495938Z", "updated_at": "2026-01-17T18:41:48.495957Z", "is_active": true }, { "id": 435, "french_word": "écrire", "russian_word": "писать", "category": "verb", "category_display": "Verb", "level": 6, "level_display": "Verbs & Conjugations", "comment": "Second groupe - Infinitif", "tags": [ { "id": 10, "name": "infinitive", "category": "form", "category_display": "Form", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.405964Z", "updated_at": "2026-01-17T18:41:48.405981Z" }, { "id": 11, "name": "present", "category": "tense", "category_display": "Tense (Conjugation)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.408735Z", "updated_at": "2026-01-17T18:41:48.408752Z" } ], "created_at": "2026-01-17T18:41:48.553876Z", "updated_at": "2026-01-17T18:41:48.553889Z", "is_active": true }, { "id": 430, "french_word": "étudier", "russian_word": "учиться", "category": "verb", "category_display": "Verb", "level": 6, "level_display": "Verbs & Conjugations", "comment": "Second groupe - Infinitif", "tags": [ { "id": 10, "name": "infinitive", "category": "form", "category_display": "Form", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.405964Z", "updated_at": "2026-01-17T18:41:48.405981Z" }, { "id": 11, "name": "present", "category": "tense", "category_display": "Tense (Conjugation)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.408735Z", "updated_at": "2026-01-17T18:41:48.408752Z" } ], "created_at": "2026-01-17T18:41:48.528927Z", "updated_at": "2026-01-17T18:41:48.528945Z", "is_active": true } ], "steps": [ { "id": 104, "sub_level": 27, "order": 1, "step_type": "learning_card", "step_type_display": "Learning Card", "title": "Introduction - Second groupe de conjugaison", "description": "# Second groupe de conjugaison\n\nLe **second groupe (deuxième conjugaison)** comprend surtout les verbes à l'infinitif se terminant par **-ить**.\n\n## Terminaisons du second groupe\n\n- **я** : -у / -ю\n- ", "is_required": true, "config": { "content": "# Second groupe de conjugaison\n\nLe **second groupe (deuxième conjugaison)** comprend surtout les verbes à l'infinitif se terminant par **-ить**.\n\n## Terminaisons du second groupe\n\n- **я** : -у / -ю\n- **ты** : -ишь\n- **он/она** : -ит\n- **мы** : -им\n- **вы** : -ите\n- **они** : -ат / -ят\n\n## Exemples de verbes du second groupe\n\n- любить (aimer)\n- ходить (aller - de façon répétée)\n- видеть (voir)\n\n**Note** : Il existe des exceptions. Certains verbes en -ить appartiennent au premier type (comme брить, стелить), et certains verbes avec d'autres terminaisons appartiennent au second type.\n\nPratiquez ces verbes pour maîtriser les terminaisons du second groupe !", "concept_type": "conjugation" }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:48.691593Z", "updated_at": "2026-01-17T18:41:48.691603Z" }, { "id": 105, "sub_level": 27, "order": 2, "step_type": "game_matching", "step_type_display": "Game - Matching", "title": "Pratiquez la conjugaison - Verbes du 2ème groupe", "description": "Pratiquez la conjugaison - Verbes du 2ème groupe", "is_required": true, "config": { "game_mode": "conjugation", "instructions": "Pratiquez la conjugaison", "min_score": 75, "level": 6, "sub_level": 2 }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:48.695380Z", "updated_at": "2026-01-17T18:41:48.695390Z" }, { "id": 106, "sub_level": 27, "order": 3, "step_type": "game_matching", "step_type_display": "Game - Matching", "title": "Associez les formes conjuguées - Verbes du 2ème groupe", "description": "Associez les formes conjuguées - Verbes du 2ème groupe", "is_required": true, "config": { "game_mode": "matching", "instructions": "Associez les formes conjuguées", "min_score": 75, "level": 6, "sub_level": 2 }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:48.698953Z", "updated_at": "2026-01-17T18:41:48.698963Z" }, { "id": 107, "sub_level": 27, "order": 4, "step_type": "game_multiple_choice", "step_type_display": "Game - Multiple Choice", "title": "Choisissez la bonne conjugaison - Verbes du 2ème groupe", "description": "Choisissez la bonne conjugaison - Verbes du 2ème groupe", "is_required": false, "config": { "game_mode": "multiple_choice", "instructions": "Choisissez la bonne conjugaison", "min_score": 75, "level": 6, "sub_level": 2 }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:48.702201Z", "updated_at": "2026-01-17T18:41:48.702212Z" } ], "videos": [], "learning_cards": [ { "id": 104, "sub_level": 27, "order": 1, "step_type": "learning_card", "step_type_display": "Learning Card", "title": "Introduction - Second groupe de conjugaison", "description": "# Second groupe de conjugaison\n\nLe **second groupe (deuxième conjugaison)** comprend surtout les verbes à l'infinitif se terminant par **-ить**.\n\n## Terminaisons du second groupe\n\n- **я** : -у / -ю\n- ", "is_required": true, "config": { "content": "# Second groupe de conjugaison\n\nLe **second groupe (deuxième conjugaison)** comprend surtout les verbes à l'infinitif se terminant par **-ить**.\n\n## Terminaisons du second groupe\n\n- **я** : -у / -ю\n- **ты** : -ишь\n- **он/она** : -ит\n- **мы** : -им\n- **вы** : -ите\n- **они** : -ат / -ят\n\n## Exemples de verbes du second groupe\n\n- любить (aimer)\n- ходить (aller - de façon répétée)\n- видеть (voir)\n\n**Note** : Il existe des exceptions. Certains verbes en -ить appartiennent au premier type (comme брить, стелить), et certains verbes avec d'autres terminaisons appartiennent au second type.\n\nPratiquez ces verbes pour maîtriser les terminaisons du second groupe !", "concept_type": "conjugation" }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:48.691593Z", "updated_at": "2026-01-17T18:41:48.691603Z" } ], "exercises": [], "total_words": 20, "is_unlocked": false, "is_completed": false, "progress": { "words_mastered": 0, "total_words": 20, "completion_percentage": 0.0, "steps": [] }, "is_active": true, "created_at": "2026-01-17T18:41:48.684402Z", "updated_at": "2026-01-17T18:41:48.684413Z" }, { "id": 28, "level": 6, "level_display": "Verbs & Conjugations", "sub_level": 3, "title": "Verbes irréguliers", "description": "Les verbes avec conjugaisons particulières", "order": 3, "word_pairs": [ { "id": 417, "french_word": "avoir", "russian_word": "иметь", "category": "verb", "category_display": "Verb", "level": 6, "level_display": "Verbs & Conjugations", "comment": "Verbe irrégulier - Infinitif", "tags": [ { "id": 10, "name": "infinitive", "category": "form", "category_display": "Form", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.405964Z", "updated_at": "2026-01-17T18:41:48.405981Z" }, { "id": 11, "name": "present", "category": "tense", "category_display": "Tense (Conjugation)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.408735Z", "updated_at": "2026-01-17T18:41:48.408752Z" } ], "created_at": "2026-01-17T18:41:48.459446Z", "updated_at": "2026-01-17T18:41:48.459461Z", "is_active": true }, { "id": 415, "french_word": "vouloir", "russian_word": "хотеть", "category": "verb", "category_display": "Verb", "level": 6, "level_display": "Verbs & Conjugations", "comment": "Premier groupe - Infinitif (irrégulier)", "tags": [ { "id": 10, "name": "infinitive", "category": "form", "category_display": "Form", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.405964Z", "updated_at": "2026-01-17T18:41:48.405981Z" }, { "id": 11, "name": "present", "category": "tense", "category_display": "Tense (Conjugation)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.408735Z", "updated_at": "2026-01-17T18:41:48.408752Z" } ], "created_at": "2026-01-17T18:41:48.448702Z", "updated_at": "2026-01-17T18:41:48.448718Z", "is_active": true }, { "id": 416, "french_word": "être", "russian_word": "быть", "category": "verb", "category_display": "Verb", "level": 6, "level_display": "Verbs & Conjugations", "comment": "Verbe irrégulier - Infinitif", "tags": [ { "id": 10, "name": "infinitive", "category": "form", "category_display": "Form", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.405964Z", "updated_at": "2026-01-17T18:41:48.405981Z" }, { "id": 11, "name": "present", "category": "tense", "category_display": "Tense (Conjugation)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.408735Z", "updated_at": "2026-01-17T18:41:48.408752Z" } ], "created_at": "2026-01-17T18:41:48.454154Z", "updated_at": "2026-01-17T18:41:48.454172Z", "is_active": true } ], "steps": [ { "id": 108, "sub_level": 28, "order": 1, "step_type": "learning_card", "step_type_display": "Learning Card", "title": "Introduction - Verbes irréguliers", "description": "# Verbes irréguliers\n\nCertains verbes russes ne suivent pas exactement les règles des premier et second groupes. Ces verbes irréguliers ont des conjugaisons particulières qu'il faut apprendre par cœur", "is_required": true, "config": { "content": "# Verbes irréguliers\n\nCertains verbes russes ne suivent pas exactement les règles des premier et second groupes. Ces verbes irréguliers ont des conjugaisons particulières qu'il faut apprendre par cœur.\n\n## Exemples de verbes irréguliers\n\n- хотеть (vouloir) - présente des variations dans sa conjugaison\n- быть (être) - très irrégulier\n- идти (aller) - peut être considéré comme irrégulier dans certains contextes\n\nCes verbes sont essentiels et fréquemment utilisés, il est donc important de bien les maîtriser !", "concept_type": "conjugation" }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:48.711248Z", "updated_at": "2026-01-17T18:41:48.711258Z" }, { "id": 109, "sub_level": 28, "order": 2, "step_type": "game_matching", "step_type_display": "Game - Matching", "title": "Pratiquez la conjugaison - Verbes irréguliers", "description": "Pratiquez la conjugaison - Verbes irréguliers", "is_required": true, "config": { "game_mode": "conjugation", "instructions": "Pratiquez la conjugaison", "min_score": 75, "level": 6, "sub_level": 3 }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:48.714654Z", "updated_at": "2026-01-17T18:41:48.714664Z" }, { "id": 110, "sub_level": 28, "order": 3, "step_type": "game_matching", "step_type_display": "Game - Matching", "title": "Associez les formes conjuguées - Verbes irréguliers", "description": "Associez les formes conjuguées - Verbes irréguliers", "is_required": true, "config": { "game_mode": "matching", "instructions": "Associez les formes conjuguées", "min_score": 75, "level": 6, "sub_level": 3 }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:48.717990Z", "updated_at": "2026-01-17T18:41:48.718000Z" }, { "id": 111, "sub_level": 28, "order": 4, "step_type": "game_multiple_choice", "step_type_display": "Game - Multiple Choice", "title": "Choisissez la bonne conjugaison - Verbes irréguliers", "description": "Choisissez la bonne conjugaison - Verbes irréguliers", "is_required": false, "config": { "game_mode": "multiple_choice", "instructions": "Choisissez la bonne conjugaison", "min_score": 75, "level": 6, "sub_level": 3 }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:48.721374Z", "updated_at": "2026-01-17T18:41:48.721385Z" } ], "videos": [], "learning_cards": [ { "id": 108, "sub_level": 28, "order": 1, "step_type": "learning_card", "step_type_display": "Learning Card", "title": "Introduction - Verbes irréguliers", "description": "# Verbes irréguliers\n\nCertains verbes russes ne suivent pas exactement les règles des premier et second groupes. Ces verbes irréguliers ont des conjugaisons particulières qu'il faut apprendre par cœur", "is_required": true, "config": { "content": "# Verbes irréguliers\n\nCertains verbes russes ne suivent pas exactement les règles des premier et second groupes. Ces verbes irréguliers ont des conjugaisons particulières qu'il faut apprendre par cœur.\n\n## Exemples de verbes irréguliers\n\n- хотеть (vouloir) - présente des variations dans sa conjugaison\n- быть (être) - très irrégulier\n- идти (aller) - peut être considéré comme irrégulier dans certains contextes\n\nCes verbes sont essentiels et fréquemment utilisés, il est donc important de bien les maîtriser !", "concept_type": "conjugation" }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:48.711248Z", "updated_at": "2026-01-17T18:41:48.711258Z" } ], "exercises": [], "total_words": 3, "is_unlocked": false, "is_completed": false, "progress": { "words_mastered": 0, "total_words": 3, "completion_percentage": 0.0, "steps": [] }, "is_active": true, "created_at": "2026-01-17T18:41:48.704761Z", "updated_at": "2026-01-17T18:41:48.704779Z" }, { "id": 29, "level": 7, "level_display": "Declensions & Cases", "sub_level": 1, "title": "Nominatif", "description": "Le cas nominatif (sujet)", "order": 1, "word_pairs": [ { "id": 462, "french_word": "c'est une table", "russian_word": "это стол", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Nominatif - это стол", "tags": [ { "id": 7, "name": "nominative", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.144909Z", "updated_at": "2026-01-17T18:41:46.144920Z" } ], "created_at": "2026-01-17T18:41:48.906311Z", "updated_at": "2026-01-17T18:41:48.906336Z", "is_active": true }, { "id": 441, "french_word": "chat", "russian_word": "кот", "category": "animal", "category_display": "Animal", "level": 7, "level_display": "Declensions & Cases", "comment": "Cat", "tags": [ { "id": 7, "name": "nominative", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.144909Z", "updated_at": "2026-01-17T18:41:46.144920Z" }, { "id": 19, "name": "animal", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:50.852846Z", "updated_at": "2026-01-17T18:41:50.852856Z" }, { "id": 5, "name": "singular", "category": "number", "category_display": "Number", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.139686Z", "updated_at": "2026-01-17T18:41:46.139698Z" } ], "created_at": "2026-01-17T18:41:48.751457Z", "updated_at": "2026-01-17T18:41:50.861009Z", "is_active": true }, { "id": 439, "french_word": "fenêtre", "russian_word": "окно", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Neutre, 2ème déclinaison", "tags": [ { "id": 7, "name": "nominative", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.144909Z", "updated_at": "2026-01-17T18:41:46.144920Z" }, { "id": 5, "name": "singular", "category": "number", "category_display": "Number", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.139686Z", "updated_at": "2026-01-17T18:41:46.139698Z" } ], "created_at": "2026-01-17T18:41:48.733150Z", "updated_at": "2026-01-17T18:41:48.733160Z", "is_active": true }, { "id": 449, "french_word": "genre féminin", "russian_word": "женский род", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Terminaison: а ou я au nominatif", "tags": [ { "id": 7, "name": "nominative", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.144909Z", "updated_at": "2026-01-17T18:41:46.144920Z" } ], "created_at": "2026-01-17T18:41:48.822353Z", "updated_at": "2026-01-17T18:41:48.822377Z", "is_active": true }, { "id": 448, "french_word": "genre masculin", "russian_word": "мужской род", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Terminaison: consonne ou й au nominatif", "tags": [ { "id": 7, "name": "nominative", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.144909Z", "updated_at": "2026-01-17T18:41:46.144920Z" } ], "created_at": "2026-01-17T18:41:48.816589Z", "updated_at": "2026-01-17T18:41:48.816617Z", "is_active": true }, { "id": 450, "french_word": "genre neutre", "russian_word": "средний род", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Terminaison: о ou е au nominatif", "tags": [ { "id": 7, "name": "nominative", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.144909Z", "updated_at": "2026-01-17T18:41:46.144920Z" } ], "created_at": "2026-01-17T18:41:48.827725Z", "updated_at": "2026-01-17T18:41:48.827742Z", "is_active": true }, { "id": 454, "french_word": "l'oncle (masc)", "russian_word": "дядя", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Masculin - exception: terminaison я mais masculin", "tags": [ { "id": 7, "name": "nominative", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.144909Z", "updated_at": "2026-01-17T18:41:46.144920Z" }, { "id": 2, "name": "masculine", "category": "gender", "category_display": "Gender", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.131757Z", "updated_at": "2026-01-17T18:41:46.131774Z" } ], "created_at": "2026-01-17T18:41:48.853806Z", "updated_at": "2026-01-17T18:41:48.853829Z", "is_active": true }, { "id": 455, "french_word": "la maison (masc)", "russian_word": "дом", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Masculin - terminaison consonne", "tags": [ { "id": 7, "name": "nominative", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.144909Z", "updated_at": "2026-01-17T18:41:46.144920Z" }, { "id": 2, "name": "masculine", "category": "gender", "category_display": "Gender", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.131757Z", "updated_at": "2026-01-17T18:41:46.131774Z" } ], "created_at": "2026-01-17T18:41:48.862863Z", "updated_at": "2026-01-17T18:41:48.862892Z", "is_active": true }, { "id": 458, "french_word": "la mer (neutre)", "russian_word": "море", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Neutre - terminaison е", "tags": [ { "id": 7, "name": "nominative", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.144909Z", "updated_at": "2026-01-17T18:41:46.144920Z" }, { "id": 4, "name": "neuter", "category": "gender", "category_display": "Gender", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.137136Z", "updated_at": "2026-01-17T18:41:46.137147Z" } ], "created_at": "2026-01-17T18:41:48.881279Z", "updated_at": "2026-01-17T18:41:48.881301Z", "is_active": true }, { "id": 460, "french_word": "la nuit (fém)", "russian_word": "ночь", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Féminin - terminaison ь", "tags": [ { "id": 7, "name": "nominative", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.144909Z", "updated_at": "2026-01-17T18:41:46.144920Z" }, { "id": 3, "name": "feminine", "category": "gender", "category_display": "Gender", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.134507Z", "updated_at": "2026-01-17T18:41:46.134524Z" } ], "created_at": "2026-01-17T18:41:48.893938Z", "updated_at": "2026-01-17T18:41:48.893963Z", "is_active": true }, { "id": 452, "french_word": "la rivière (fém)", "russian_word": "река", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Féminin - terminaison а", "tags": [ { "id": 7, "name": "nominative", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.144909Z", "updated_at": "2026-01-17T18:41:46.144920Z" }, { "id": 3, "name": "feminine", "category": "gender", "category_display": "Gender", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.134507Z", "updated_at": "2026-01-17T18:41:46.134524Z" } ], "created_at": "2026-01-17T18:41:48.840738Z", "updated_at": "2026-01-17T18:41:48.840762Z", "is_active": true }, { "id": 451, "french_word": "la terre (fém)", "russian_word": "земля", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Féminin - terminaison я", "tags": [ { "id": 7, "name": "nominative", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.144909Z", "updated_at": "2026-01-17T18:41:46.144920Z" }, { "id": 3, "name": "feminine", "category": "gender", "category_display": "Gender", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.134507Z", "updated_at": "2026-01-17T18:41:46.134524Z" } ], "created_at": "2026-01-17T18:41:48.835010Z", "updated_at": "2026-01-17T18:41:48.835035Z", "is_active": true }, { "id": 456, "french_word": "le cheval (masc)", "russian_word": "конь", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Masculin - terminaison ь", "tags": [ { "id": 7, "name": "nominative", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.144909Z", "updated_at": "2026-01-17T18:41:46.144920Z" }, { "id": 2, "name": "masculine", "category": "gender", "category_display": "Gender", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.131757Z", "updated_at": "2026-01-17T18:41:46.131774Z" } ], "created_at": "2026-01-17T18:41:48.868436Z", "updated_at": "2026-01-17T18:41:48.868458Z", "is_active": true }, { "id": 459, "french_word": "le ciel (neutre)", "russian_word": "небо", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Neutre - terminaison о", "tags": [ { "id": 7, "name": "nominative", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.144909Z", "updated_at": "2026-01-17T18:41:46.144920Z" }, { "id": 4, "name": "neuter", "category": "gender", "category_display": "Gender", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.137136Z", "updated_at": "2026-01-17T18:41:46.137147Z" } ], "created_at": "2026-01-17T18:41:48.888238Z", "updated_at": "2026-01-17T18:41:48.888264Z", "is_active": true }, { "id": 453, "french_word": "le four (fém)", "russian_word": "печь", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Féminin - terminaison ь", "tags": [ { "id": 7, "name": "nominative", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.144909Z", "updated_at": "2026-01-17T18:41:46.144920Z" }, { "id": 3, "name": "feminine", "category": "gender", "category_display": "Gender", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.134507Z", "updated_at": "2026-01-17T18:41:46.134524Z" } ], "created_at": "2026-01-17T18:41:48.846765Z", "updated_at": "2026-01-17T18:41:48.846790Z", "is_active": true }, { "id": 457, "french_word": "le pain (masc)", "russian_word": "хлеб", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Masculin - terminaison consonne", "tags": [ { "id": 7, "name": "nominative", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.144909Z", "updated_at": "2026-01-17T18:41:46.144920Z" }, { "id": 2, "name": "masculine", "category": "gender", "category_display": "Gender", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.131757Z", "updated_at": "2026-01-17T18:41:46.131774Z" } ], "created_at": "2026-01-17T18:41:48.874055Z", "updated_at": "2026-01-17T18:41:48.874077Z", "is_active": true }, { "id": 461, "french_word": "le seigle (fém)", "russian_word": "рожь", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Féminin - terminaison ь", "tags": [ { "id": 7, "name": "nominative", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.144909Z", "updated_at": "2026-01-17T18:41:46.144920Z" }, { "id": 3, "name": "feminine", "category": "gender", "category_display": "Gender", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.134507Z", "updated_at": "2026-01-17T18:41:46.134524Z" } ], "created_at": "2026-01-17T18:41:48.900743Z", "updated_at": "2026-01-17T18:41:48.900765Z", "is_active": true }, { "id": 442, "french_word": "nominatif", "russian_word": "Именительный падеж", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Cas du sujet - Qui ? Quoi ?", "tags": [ { "id": 7, "name": "nominative", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.144909Z", "updated_at": "2026-01-17T18:41:46.144920Z" } ], "created_at": "2026-01-17T18:41:48.775696Z", "updated_at": "2026-01-17T18:41:48.775715Z", "is_active": true }, { "id": 440, "french_word": "rose", "russian_word": "роза", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Féminin, 1ère déclinaison", "tags": [ { "id": 7, "name": "nominative", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.144909Z", "updated_at": "2026-01-17T18:41:46.144920Z" }, { "id": 5, "name": "singular", "category": "number", "category_display": "Number", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.139686Z", "updated_at": "2026-01-17T18:41:46.139698Z" } ], "created_at": "2026-01-17T18:41:48.744675Z", "updated_at": "2026-01-17T18:41:48.744703Z", "is_active": true }, { "id": 438, "french_word": "table", "russian_word": "стол", "category": "business", "category_display": "Business", "level": 7, "level_display": "Declensions & Cases", "comment": "Table", "tags": [ { "id": 7, "name": "nominative", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.144909Z", "updated_at": "2026-01-17T18:41:46.144920Z" }, { "id": 25, "name": "business", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:52.832135Z", "updated_at": "2026-01-17T18:41:52.832147Z" }, { "id": 5, "name": "singular", "category": "number", "category_display": "Number", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.139686Z", "updated_at": "2026-01-17T18:41:46.139698Z" } ], "created_at": "2026-01-17T18:41:48.728052Z", "updated_at": "2026-01-17T18:41:52.916501Z", "is_active": true } ], "steps": [ { "id": 112, "sub_level": 29, "order": 1, "step_type": "learning_card", "step_type_display": "Learning Card", "title": "Grammaire - Nominatif", "description": "Le cas nominatif (sujet)\n\nApprenez les terminaisons et l'utilisation du cas nominatif.", "is_required": true, "config": { "content": "Le cas nominatif (sujet)\n\nApprenez les terminaisons et l'utilisation du cas nominatif.", "concept_type": "declension" }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:49.291885Z", "updated_at": "2026-01-17T18:41:49.291924Z" }, { "id": 113, "sub_level": 29, "order": 2, "step_type": "game_matching", "step_type_display": "Game - Matching", "title": "Pratiquez le cas Nominatif", "description": "Pratiquez le cas Nominatif", "is_required": true, "config": { "game_mode": "declension", "instructions": "Pratiquez le cas Nominatif", "min_score": 75, "level": 7, "sub_level": 1 }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:49.297839Z", "updated_at": "2026-01-17T18:41:49.297866Z" }, { "id": 114, "sub_level": 29, "order": 3, "step_type": "game_matching", "step_type_display": "Game - Matching", "title": "Associez les déclinaisons", "description": "Associez les déclinaisons", "is_required": true, "config": { "game_mode": "matching", "instructions": "Associez les déclinaisons", "min_score": 75, "level": 7, "sub_level": 1 }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:49.303624Z", "updated_at": "2026-01-17T18:41:49.303651Z" }, { "id": 115, "sub_level": 29, "order": 4, "step_type": "game_multiple_choice", "step_type_display": "Game - Multiple Choice", "title": "Choisissez la bonne déclinaison", "description": "Choisissez la bonne déclinaison", "is_required": false, "config": { "game_mode": "multiple_choice", "instructions": "Choisissez la bonne déclinaison", "min_score": 75, "level": 7, "sub_level": 1 }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:49.309294Z", "updated_at": "2026-01-17T18:41:49.309319Z" }, { "id": 380, "sub_level": 29, "order": 5, "step_type": "intro", "step_type_display": "Introduction Lesson", "title": "Introduction - Nominatif", "description": "# Nominatif\n\nLe cas nominatif (sujet)\n\n## Grammaire - Nominatif\n\nLe cas nominatif (sujet)\n\nApprenez les terminaisons et l'utilisation du cas nominatif.\n\n\n### Vocabulaire\n\nCe sous-niveau contient 20 mo", "is_required": true, "config": { "content": "# Nominatif\n\nLe cas nominatif (sujet)\n\n## Grammaire - Nominatif\n\nLe cas nominatif (sujet)\n\nApprenez les terminaisons et l'utilisation du cas nominatif.\n\n\n### Vocabulaire\n\nCe sous-niveau contient 20 mot(s) à apprendre.\n", "word_pairs": [ 462, 441, 439, 449, 448, 450, 454, 455, 458, 460, 452, 451, 456, 459, 453, 457, 461, 442, 440, 438 ] }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:55.180858Z", "updated_at": "2026-01-17T18:41:55.180874Z" } ], "videos": [], "learning_cards": [ { "id": 112, "sub_level": 29, "order": 1, "step_type": "learning_card", "step_type_display": "Learning Card", "title": "Grammaire - Nominatif", "description": "Le cas nominatif (sujet)\n\nApprenez les terminaisons et l'utilisation du cas nominatif.", "is_required": true, "config": { "content": "Le cas nominatif (sujet)\n\nApprenez les terminaisons et l'utilisation du cas nominatif.", "concept_type": "declension" }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:49.291885Z", "updated_at": "2026-01-17T18:41:49.291924Z" } ], "exercises": [], "total_words": 20, "is_unlocked": false, "is_completed": false, "progress": { "words_mastered": 0, "total_words": 20, "completion_percentage": 0.0, "steps": [] }, "is_active": true, "created_at": "2026-01-17T18:41:49.275727Z", "updated_at": "2026-01-17T18:41:49.275750Z" }, { "id": 30, "level": 7, "level_display": "Declensions & Cases", "sub_level": 2, "title": "Génitif", "description": "Le cas génitif (possession)", "order": 2, "word_pairs": [ { "id": 472, "french_word": "de l'eau", "russian_word": "воды", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Génitif - воды", "tags": [ { "id": 12, "name": "genitive", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.757573Z", "updated_at": "2026-01-17T18:41:48.757592Z" } ], "created_at": "2026-01-17T18:41:48.961288Z", "updated_at": "2026-01-17T18:41:48.961321Z", "is_active": true }, { "id": 477, "french_word": "de la fenêtre", "russian_word": "окна", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Génitif - окна", "tags": [ { "id": 12, "name": "genitive", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.757573Z", "updated_at": "2026-01-17T18:41:48.757592Z" } ], "created_at": "2026-01-17T18:41:48.987793Z", "updated_at": "2026-01-17T18:41:48.987805Z", "is_active": true }, { "id": 479, "french_word": "de la fille", "russian_word": "девочки", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Génitif - девочки", "tags": [ { "id": 12, "name": "genitive", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.757573Z", "updated_at": "2026-01-17T18:41:48.757592Z" } ], "created_at": "2026-01-17T18:41:48.997985Z", "updated_at": "2026-01-17T18:41:48.997997Z", "is_active": true }, { "id": 470, "french_word": "de la maison", "russian_word": "дома", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Génitif - дома", "tags": [ { "id": 12, "name": "genitive", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.757573Z", "updated_at": "2026-01-17T18:41:48.757592Z" } ], "created_at": "2026-01-17T18:41:48.948340Z", "updated_at": "2026-01-17T18:41:48.948371Z", "is_active": true }, { "id": 476, "french_word": "de la rose", "russian_word": "розы", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Génitif - розы", "tags": [ { "id": 12, "name": "genitive", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.757573Z", "updated_at": "2026-01-17T18:41:48.757592Z" } ], "created_at": "2026-01-17T18:41:48.982800Z", "updated_at": "2026-01-17T18:41:48.982814Z", "is_active": true }, { "id": 474, "french_word": "de la ville", "russian_word": "города", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Génitif - города", "tags": [ { "id": 12, "name": "genitive", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.757573Z", "updated_at": "2026-01-17T18:41:48.757592Z" } ], "created_at": "2026-01-17T18:41:48.972370Z", "updated_at": "2026-01-17T18:41:48.972388Z", "is_active": true }, { "id": 475, "french_word": "du chat", "russian_word": "кота", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Génitif - кота", "tags": [ { "id": 12, "name": "genitive", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.757573Z", "updated_at": "2026-01-17T18:41:48.757592Z" } ], "created_at": "2026-01-17T18:41:48.977652Z", "updated_at": "2026-01-17T18:41:48.977669Z", "is_active": true }, { "id": 478, "french_word": "du garçon", "russian_word": "мальчика", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Génitif - мальчика", "tags": [ { "id": 12, "name": "genitive", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.757573Z", "updated_at": "2026-01-17T18:41:48.757592Z" } ], "created_at": "2026-01-17T18:41:48.992807Z", "updated_at": "2026-01-17T18:41:48.992820Z", "is_active": true }, { "id": 471, "french_word": "du livre", "russian_word": "книги", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Génitif - книги", "tags": [ { "id": 12, "name": "genitive", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.757573Z", "updated_at": "2026-01-17T18:41:48.757592Z" } ], "created_at": "2026-01-17T18:41:48.954967Z", "updated_at": "2026-01-17T18:41:48.955003Z", "is_active": true }, { "id": 473, "french_word": "du pain", "russian_word": "хлеба", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Génitif - хлеба", "tags": [ { "id": 12, "name": "genitive", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.757573Z", "updated_at": "2026-01-17T18:41:48.757592Z" } ], "created_at": "2026-01-17T18:41:48.967255Z", "updated_at": "2026-01-17T18:41:48.967277Z", "is_active": true }, { "id": 443, "french_word": "génitif", "russian_word": "Родительный падеж", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Cas de la possession/absence - De qui ? De quoi ?", "tags": [ { "id": 12, "name": "genitive", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.757573Z", "updated_at": "2026-01-17T18:41:48.757592Z" } ], "created_at": "2026-01-17T18:41:48.781355Z", "updated_at": "2026-01-17T18:41:48.781379Z", "is_active": true }, { "id": 463, "french_word": "il n'y a pas de table", "russian_word": "нет стола", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Génitif - нет стола", "tags": [ { "id": 12, "name": "genitive", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.757573Z", "updated_at": "2026-01-17T18:41:48.757592Z" } ], "created_at": "2026-01-17T18:41:48.911371Z", "updated_at": "2026-01-17T18:41:48.911388Z", "is_active": true } ], "steps": [ { "id": 116, "sub_level": 30, "order": 1, "step_type": "learning_card", "step_type_display": "Learning Card", "title": "Grammaire - Génitif", "description": "Le cas génitif (possession)\n\nApprenez les terminaisons et l'utilisation du cas génitif.", "is_required": true, "config": { "content": "Le cas génitif (possession)\n\nApprenez les terminaisons et l'utilisation du cas génitif.", "concept_type": "declension" }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:49.320691Z", "updated_at": "2026-01-17T18:41:49.320702Z" }, { "id": 117, "sub_level": 30, "order": 2, "step_type": "game_matching", "step_type_display": "Game - Matching", "title": "Pratiquez le cas Génitif", "description": "Pratiquez le cas Génitif", "is_required": true, "config": { "game_mode": "declension", "instructions": "Pratiquez le cas Génitif", "min_score": 75, "level": 7, "sub_level": 2 }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:49.324147Z", "updated_at": "2026-01-17T18:41:49.324157Z" }, { "id": 118, "sub_level": 30, "order": 3, "step_type": "game_matching", "step_type_display": "Game - Matching", "title": "Associez les déclinaisons", "description": "Associez les déclinaisons", "is_required": true, "config": { "game_mode": "matching", "instructions": "Associez les déclinaisons", "min_score": 75, "level": 7, "sub_level": 2 }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:49.327695Z", "updated_at": "2026-01-17T18:41:49.327705Z" }, { "id": 119, "sub_level": 30, "order": 4, "step_type": "game_multiple_choice", "step_type_display": "Game - Multiple Choice", "title": "Choisissez la bonne déclinaison", "description": "Choisissez la bonne déclinaison", "is_required": false, "config": { "game_mode": "multiple_choice", "instructions": "Choisissez la bonne déclinaison", "min_score": 75, "level": 7, "sub_level": 2 }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:49.331136Z", "updated_at": "2026-01-17T18:41:49.331146Z" }, { "id": 381, "sub_level": 30, "order": 5, "step_type": "intro", "step_type_display": "Introduction Lesson", "title": "Introduction - Génitif", "description": "# Génitif\n\nLe cas génitif (possession)\n\n## Grammaire - Génitif\n\nLe cas génitif (possession)\n\nApprenez les terminaisons et l'utilisation du cas génitif.\n\n\n### Vocabulaire\n\nCe sous-niveau contient 12 mo", "is_required": true, "config": { "content": "# Génitif\n\nLe cas génitif (possession)\n\n## Grammaire - Génitif\n\nLe cas génitif (possession)\n\nApprenez les terminaisons et l'utilisation du cas génitif.\n\n\n### Vocabulaire\n\nCe sous-niveau contient 12 mot(s) à apprendre.\n", "word_pairs": [ 472, 477, 479, 470, 476, 474, 475, 478, 471, 473, 443, 463 ] }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:55.186168Z", "updated_at": "2026-01-17T18:41:55.186179Z" } ], "videos": [], "learning_cards": [ { "id": 116, "sub_level": 30, "order": 1, "step_type": "learning_card", "step_type_display": "Learning Card", "title": "Grammaire - Génitif", "description": "Le cas génitif (possession)\n\nApprenez les terminaisons et l'utilisation du cas génitif.", "is_required": true, "config": { "content": "Le cas génitif (possession)\n\nApprenez les terminaisons et l'utilisation du cas génitif.", "concept_type": "declension" }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:49.320691Z", "updated_at": "2026-01-17T18:41:49.320702Z" } ], "exercises": [], "total_words": 12, "is_unlocked": false, "is_completed": false, "progress": { "words_mastered": 0, "total_words": 12, "completion_percentage": 0.0, "steps": [] }, "is_active": true, "created_at": "2026-01-17T18:41:49.312501Z", "updated_at": "2026-01-17T18:41:49.312512Z" }, { "id": 31, "level": 7, "level_display": "Declensions & Cases", "sub_level": 3, "title": "Datif", "description": "Le cas datif (à/pour)", "order": 3, "word_pairs": [ { "id": 485, "french_word": "au chat", "russian_word": "коту", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Datif - коту", "tags": [ { "id": 13, "name": "dative", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.760333Z", "updated_at": "2026-01-17T18:41:48.760349Z" } ], "created_at": "2026-01-17T18:41:49.028296Z", "updated_at": "2026-01-17T18:41:49.028308Z", "is_active": true }, { "id": 488, "french_word": "au garçon", "russian_word": "мальчику", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Datif - мальчику", "tags": [ { "id": 13, "name": "dative", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.760333Z", "updated_at": "2026-01-17T18:41:48.760349Z" } ], "created_at": "2026-01-17T18:41:49.042989Z", "updated_at": "2026-01-17T18:41:49.042999Z", "is_active": true }, { "id": 481, "french_word": "au livre", "russian_word": "книге", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Datif - книге", "tags": [ { "id": 13, "name": "dative", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.760333Z", "updated_at": "2026-01-17T18:41:48.760349Z" } ], "created_at": "2026-01-17T18:41:49.008214Z", "updated_at": "2026-01-17T18:41:49.008224Z", "is_active": true }, { "id": 483, "french_word": "au pain", "russian_word": "хлебу", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Datif - хлебу", "tags": [ { "id": 13, "name": "dative", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.760333Z", "updated_at": "2026-01-17T18:41:48.760349Z" } ], "created_at": "2026-01-17T18:41:49.018552Z", "updated_at": "2026-01-17T18:41:49.018562Z", "is_active": true }, { "id": 444, "french_word": "datif", "russian_word": "Дательный падеж", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Cas du destinataire (COI) - À qui ? À quoi ?", "tags": [ { "id": 13, "name": "dative", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.760333Z", "updated_at": "2026-01-17T18:41:48.760349Z" } ], "created_at": "2026-01-17T18:41:48.787262Z", "updated_at": "2026-01-17T18:41:48.787281Z", "is_active": true }, { "id": 464, "french_word": "vers la table", "russian_word": "к столу", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Datif - к столу", "tags": [ { "id": 13, "name": "dative", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.760333Z", "updated_at": "2026-01-17T18:41:48.760349Z" } ], "created_at": "2026-01-17T18:41:48.916379Z", "updated_at": "2026-01-17T18:41:48.916391Z", "is_active": true }, { "id": 482, "french_word": "à l'eau", "russian_word": "воде", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Datif - воде", "tags": [ { "id": 13, "name": "dative", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.760333Z", "updated_at": "2026-01-17T18:41:48.760349Z" } ], "created_at": "2026-01-17T18:41:49.013518Z", "updated_at": "2026-01-17T18:41:49.013531Z", "is_active": true }, { "id": 487, "french_word": "à la fenêtre", "russian_word": "окну", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Datif - окну", "tags": [ { "id": 13, "name": "dative", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.760333Z", "updated_at": "2026-01-17T18:41:48.760349Z" } ], "created_at": "2026-01-17T18:41:49.037687Z", "updated_at": "2026-01-17T18:41:49.037698Z", "is_active": true }, { "id": 489, "french_word": "à la fille", "russian_word": "девочке", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Datif - девочке", "tags": [ { "id": 13, "name": "dative", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.760333Z", "updated_at": "2026-01-17T18:41:48.760349Z" } ], "created_at": "2026-01-17T18:41:49.047920Z", "updated_at": "2026-01-17T18:41:49.047936Z", "is_active": true }, { "id": 480, "french_word": "à la maison", "russian_word": "дому", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Datif - дому", "tags": [ { "id": 13, "name": "dative", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.760333Z", "updated_at": "2026-01-17T18:41:48.760349Z" } ], "created_at": "2026-01-17T18:41:49.003209Z", "updated_at": "2026-01-17T18:41:49.003220Z", "is_active": true }, { "id": 486, "french_word": "à la rose", "russian_word": "розе", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Datif - розе", "tags": [ { "id": 13, "name": "dative", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.760333Z", "updated_at": "2026-01-17T18:41:48.760349Z" } ], "created_at": "2026-01-17T18:41:49.033068Z", "updated_at": "2026-01-17T18:41:49.033080Z", "is_active": true }, { "id": 484, "french_word": "à la ville", "russian_word": "городу", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Datif - городу", "tags": [ { "id": 13, "name": "dative", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.760333Z", "updated_at": "2026-01-17T18:41:48.760349Z" } ], "created_at": "2026-01-17T18:41:49.023565Z", "updated_at": "2026-01-17T18:41:49.023577Z", "is_active": true } ], "steps": [ { "id": 120, "sub_level": 31, "order": 1, "step_type": "learning_card", "step_type_display": "Learning Card", "title": "Grammaire - Datif", "description": "Le cas datif (à/pour)\n\nApprenez les terminaisons et l'utilisation du cas datif.", "is_required": true, "config": { "content": "Le cas datif (à/pour)\n\nApprenez les terminaisons et l'utilisation du cas datif.", "concept_type": "declension" }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:49.341980Z", "updated_at": "2026-01-17T18:41:49.341996Z" }, { "id": 121, "sub_level": 31, "order": 2, "step_type": "game_matching", "step_type_display": "Game - Matching", "title": "Pratiquez le cas Datif", "description": "Pratiquez le cas Datif", "is_required": true, "config": { "game_mode": "declension", "instructions": "Pratiquez le cas Datif", "min_score": 75, "level": 7, "sub_level": 3 }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:49.346105Z", "updated_at": "2026-01-17T18:41:49.346119Z" }, { "id": 122, "sub_level": 31, "order": 3, "step_type": "game_matching", "step_type_display": "Game - Matching", "title": "Associez les déclinaisons", "description": "Associez les déclinaisons", "is_required": true, "config": { "game_mode": "matching", "instructions": "Associez les déclinaisons", "min_score": 75, "level": 7, "sub_level": 3 }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:49.349957Z", "updated_at": "2026-01-17T18:41:49.349970Z" }, { "id": 123, "sub_level": 31, "order": 4, "step_type": "game_multiple_choice", "step_type_display": "Game - Multiple Choice", "title": "Choisissez la bonne déclinaison", "description": "Choisissez la bonne déclinaison", "is_required": false, "config": { "game_mode": "multiple_choice", "instructions": "Choisissez la bonne déclinaison", "min_score": 75, "level": 7, "sub_level": 3 }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:49.353807Z", "updated_at": "2026-01-17T18:41:49.353821Z" }, { "id": 382, "sub_level": 31, "order": 5, "step_type": "intro", "step_type_display": "Introduction Lesson", "title": "Introduction - Datif", "description": "# Datif\n\nLe cas datif (à/pour)\n\n## Grammaire - Datif\n\nLe cas datif (à/pour)\n\nApprenez les terminaisons et l'utilisation du cas datif.\n\n\n### Vocabulaire\n\nCe sous-niveau contient 12 mot(s) à apprendre.\n", "is_required": true, "config": { "content": "# Datif\n\nLe cas datif (à/pour)\n\n## Grammaire - Datif\n\nLe cas datif (à/pour)\n\nApprenez les terminaisons et l'utilisation du cas datif.\n\n\n### Vocabulaire\n\nCe sous-niveau contient 12 mot(s) à apprendre.\n", "word_pairs": [ 485, 488, 481, 483, 444, 464, 482, 487, 489, 480, 486, 484 ] }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:55.191674Z", "updated_at": "2026-01-17T18:41:55.191684Z" } ], "videos": [], "learning_cards": [ { "id": 120, "sub_level": 31, "order": 1, "step_type": "learning_card", "step_type_display": "Learning Card", "title": "Grammaire - Datif", "description": "Le cas datif (à/pour)\n\nApprenez les terminaisons et l'utilisation du cas datif.", "is_required": true, "config": { "content": "Le cas datif (à/pour)\n\nApprenez les terminaisons et l'utilisation du cas datif.", "concept_type": "declension" }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:49.341980Z", "updated_at": "2026-01-17T18:41:49.341996Z" } ], "exercises": [], "total_words": 12, "is_unlocked": false, "is_completed": false, "progress": { "words_mastered": 0, "total_words": 12, "completion_percentage": 0.0, "steps": [] }, "is_active": true, "created_at": "2026-01-17T18:41:49.333854Z", "updated_at": "2026-01-17T18:41:49.333867Z" }, { "id": 32, "level": 7, "level_display": "Declensions & Cases", "sub_level": 4, "title": "Accusatif", "description": "Le cas accusatif (objet direct)", "order": 4, "word_pairs": [ { "id": 445, "french_word": "accusatif", "russian_word": "Винительный падеж", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Cas du complément d'objet direct (COD) - Qui ? Quoi ?", "tags": [ { "id": 14, "name": "accusative", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.763306Z", "updated_at": "2026-01-17T18:41:48.763322Z" }, { "id": 6, "name": "plural", "category": "number", "category_display": "Number", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:46.142279Z", "updated_at": "2026-01-17T18:41:46.142291Z" } ], "created_at": "2026-01-17T18:41:48.793209Z", "updated_at": "2026-01-17T18:41:48.793229Z", "is_active": true }, { "id": 492, "french_word": "je bois l'eau", "russian_word": "я пью воду", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Accusatif - я пью воду", "tags": [ { "id": 14, "name": "accusative", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.763306Z", "updated_at": "2026-01-17T18:41:48.763322Z" } ], "created_at": "2026-01-17T18:41:49.064284Z", "updated_at": "2026-01-17T18:41:49.064295Z", "is_active": true }, { "id": 465, "french_word": "je connais la table", "russian_word": "я знаю стол", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Accusatif - я знаю стол", "tags": [ { "id": 14, "name": "accusative", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.763306Z", "updated_at": "2026-01-17T18:41:48.763322Z" } ], "created_at": "2026-01-17T18:41:48.921456Z", "updated_at": "2026-01-17T18:41:48.921470Z", "is_active": true }, { "id": 491, "french_word": "je lis le livre", "russian_word": "я читаю книгу", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Accusatif - я читаю книгу", "tags": [ { "id": 14, "name": "accusative", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.763306Z", "updated_at": "2026-01-17T18:41:48.763322Z" } ], "created_at": "2026-01-17T18:41:49.058265Z", "updated_at": "2026-01-17T18:41:49.058282Z", "is_active": true }, { "id": 493, "french_word": "je mange le pain", "russian_word": "я ем хлеб", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Accusatif - я ем хлеб", "tags": [ { "id": 14, "name": "accusative", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.763306Z", "updated_at": "2026-01-17T18:41:48.763322Z" } ], "created_at": "2026-01-17T18:41:49.069344Z", "updated_at": "2026-01-17T18:41:49.069360Z", "is_active": true }, { "id": 497, "french_word": "je vois la fenêtre", "russian_word": "я вижу окно", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Accusatif - я вижу окно", "tags": [ { "id": 14, "name": "accusative", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.763306Z", "updated_at": "2026-01-17T18:41:48.763322Z" } ], "created_at": "2026-01-17T18:41:49.090047Z", "updated_at": "2026-01-17T18:41:49.090063Z", "is_active": true }, { "id": 499, "french_word": "je vois la fille", "russian_word": "я вижу девочку", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Accusatif - я вижу девочку", "tags": [ { "id": 14, "name": "accusative", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.763306Z", "updated_at": "2026-01-17T18:41:48.763322Z" } ], "created_at": "2026-01-17T18:41:49.100978Z", "updated_at": "2026-01-17T18:41:49.100991Z", "is_active": true }, { "id": 490, "french_word": "je vois la maison", "russian_word": "я вижу дом", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Accusatif - я вижу дом", "tags": [ { "id": 14, "name": "accusative", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.763306Z", "updated_at": "2026-01-17T18:41:48.763322Z" } ], "created_at": "2026-01-17T18:41:49.053150Z", "updated_at": "2026-01-17T18:41:49.053167Z", "is_active": true }, { "id": 496, "french_word": "je vois la rose", "russian_word": "я вижу розу", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Accusatif - я вижу розу", "tags": [ { "id": 14, "name": "accusative", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.763306Z", "updated_at": "2026-01-17T18:41:48.763322Z" } ], "created_at": "2026-01-17T18:41:49.084591Z", "updated_at": "2026-01-17T18:41:49.084609Z", "is_active": true }, { "id": 494, "french_word": "je vois la ville", "russian_word": "я вижу город", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Accusatif - я вижу город", "tags": [ { "id": 14, "name": "accusative", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.763306Z", "updated_at": "2026-01-17T18:41:48.763322Z" } ], "created_at": "2026-01-17T18:41:49.074318Z", "updated_at": "2026-01-17T18:41:49.074329Z", "is_active": true }, { "id": 495, "french_word": "je vois le chat", "russian_word": "я вижу кота", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Accusatif - я вижу кота", "tags": [ { "id": 14, "name": "accusative", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.763306Z", "updated_at": "2026-01-17T18:41:48.763322Z" } ], "created_at": "2026-01-17T18:41:49.079467Z", "updated_at": "2026-01-17T18:41:49.079483Z", "is_active": true }, { "id": 498, "french_word": "je vois le garçon", "russian_word": "я вижу мальчика", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Accusatif - я вижу мальчика", "tags": [ { "id": 14, "name": "accusative", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.763306Z", "updated_at": "2026-01-17T18:41:48.763322Z" } ], "created_at": "2026-01-17T18:41:49.095219Z", "updated_at": "2026-01-17T18:41:49.095235Z", "is_active": true } ], "steps": [ { "id": 124, "sub_level": 32, "order": 1, "step_type": "learning_card", "step_type_display": "Learning Card", "title": "Grammaire - Accusatif", "description": "Le cas accusatif (objet direct)\n\nApprenez les terminaisons et l'utilisation du cas accusatif.", "is_required": true, "config": { "content": "Le cas accusatif (objet direct)\n\nApprenez les terminaisons et l'utilisation du cas accusatif.", "concept_type": "declension" }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:49.367939Z", "updated_at": "2026-01-17T18:41:49.367959Z" }, { "id": 125, "sub_level": 32, "order": 2, "step_type": "game_matching", "step_type_display": "Game - Matching", "title": "Pratiquez le cas Accusatif", "description": "Pratiquez le cas Accusatif", "is_required": true, "config": { "game_mode": "declension", "instructions": "Pratiquez le cas Accusatif", "min_score": 75, "level": 7, "sub_level": 4 }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:49.371991Z", "updated_at": "2026-01-17T18:41:49.372005Z" }, { "id": 126, "sub_level": 32, "order": 3, "step_type": "game_matching", "step_type_display": "Game - Matching", "title": "Associez les déclinaisons", "description": "Associez les déclinaisons", "is_required": true, "config": { "game_mode": "matching", "instructions": "Associez les déclinaisons", "min_score": 75, "level": 7, "sub_level": 4 }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:49.376092Z", "updated_at": "2026-01-17T18:41:49.376102Z" }, { "id": 127, "sub_level": 32, "order": 4, "step_type": "game_multiple_choice", "step_type_display": "Game - Multiple Choice", "title": "Choisissez la bonne déclinaison", "description": "Choisissez la bonne déclinaison", "is_required": false, "config": { "game_mode": "multiple_choice", "instructions": "Choisissez la bonne déclinaison", "min_score": 75, "level": 7, "sub_level": 4 }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:49.379849Z", "updated_at": "2026-01-17T18:41:49.379860Z" }, { "id": 383, "sub_level": 32, "order": 5, "step_type": "intro", "step_type_display": "Introduction Lesson", "title": "Introduction - Accusatif", "description": "# Accusatif\n\nLe cas accusatif (objet direct)\n\n## Grammaire - Accusatif\n\nLe cas accusatif (objet direct)\n\nApprenez les terminaisons et l'utilisation du cas accusatif.\n\n\n### Vocabulaire\n\nCe sous-niveau ", "is_required": true, "config": { "content": "# Accusatif\n\nLe cas accusatif (objet direct)\n\n## Grammaire - Accusatif\n\nLe cas accusatif (objet direct)\n\nApprenez les terminaisons et l'utilisation du cas accusatif.\n\n\n### Vocabulaire\n\nCe sous-niveau contient 12 mot(s) à apprendre.\n", "word_pairs": [ 445, 492, 465, 491, 493, 497, 499, 490, 496, 494, 495, 498 ] }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:55.196859Z", "updated_at": "2026-01-17T18:41:55.196869Z" } ], "videos": [], "learning_cards": [ { "id": 124, "sub_level": 32, "order": 1, "step_type": "learning_card", "step_type_display": "Learning Card", "title": "Grammaire - Accusatif", "description": "Le cas accusatif (objet direct)\n\nApprenez les terminaisons et l'utilisation du cas accusatif.", "is_required": true, "config": { "content": "Le cas accusatif (objet direct)\n\nApprenez les terminaisons et l'utilisation du cas accusatif.", "concept_type": "declension" }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:49.367939Z", "updated_at": "2026-01-17T18:41:49.367959Z" } ], "exercises": [], "total_words": 12, "is_unlocked": false, "is_completed": false, "progress": { "words_mastered": 0, "total_words": 12, "completion_percentage": 0.0, "steps": [] }, "is_active": true, "created_at": "2026-01-17T18:41:49.356634Z", "updated_at": "2026-01-17T18:41:49.356647Z" }, { "id": 33, "level": 7, "level_display": "Declensions & Cases", "sub_level": 5, "title": "Instrumental", "description": "Le cas instrumental (avec/par)", "order": 5, "word_pairs": [ { "id": 502, "french_word": "avec l'eau", "russian_word": "с водой", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Instrumental - с водой", "tags": [ { "id": 15, "name": "instrumental", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.766117Z", "updated_at": "2026-01-17T18:41:48.766130Z" } ], "created_at": "2026-01-17T18:41:49.116109Z", "updated_at": "2026-01-17T18:41:49.116122Z", "is_active": true }, { "id": 507, "french_word": "avec la fenêtre", "russian_word": "с окном", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Instrumental - с окном", "tags": [ { "id": 15, "name": "instrumental", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.766117Z", "updated_at": "2026-01-17T18:41:48.766130Z" } ], "created_at": "2026-01-17T18:41:49.141345Z", "updated_at": "2026-01-17T18:41:49.141356Z", "is_active": true }, { "id": 509, "french_word": "avec la fille", "russian_word": "с девочкой", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Instrumental - с девочкой", "tags": [ { "id": 15, "name": "instrumental", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.766117Z", "updated_at": "2026-01-17T18:41:48.766130Z" } ], "created_at": "2026-01-17T18:41:49.151379Z", "updated_at": "2026-01-17T18:41:49.151390Z", "is_active": true }, { "id": 500, "french_word": "avec la maison", "russian_word": "с домом", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Instrumental - с домом", "tags": [ { "id": 15, "name": "instrumental", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.766117Z", "updated_at": "2026-01-17T18:41:48.766130Z" } ], "created_at": "2026-01-17T18:41:49.106201Z", "updated_at": "2026-01-17T18:41:49.106215Z", "is_active": true }, { "id": 506, "french_word": "avec la rose", "russian_word": "с розой", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Instrumental - с розой", "tags": [ { "id": 15, "name": "instrumental", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.766117Z", "updated_at": "2026-01-17T18:41:48.766130Z" } ], "created_at": "2026-01-17T18:41:49.136210Z", "updated_at": "2026-01-17T18:41:49.136221Z", "is_active": true }, { "id": 504, "french_word": "avec la ville", "russian_word": "с городом", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Instrumental - с городом", "tags": [ { "id": 15, "name": "instrumental", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.766117Z", "updated_at": "2026-01-17T18:41:48.766130Z" } ], "created_at": "2026-01-17T18:41:49.126233Z", "updated_at": "2026-01-17T18:41:49.126243Z", "is_active": true }, { "id": 505, "french_word": "avec le chat", "russian_word": "с котом", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Instrumental - с котом", "tags": [ { "id": 15, "name": "instrumental", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.766117Z", "updated_at": "2026-01-17T18:41:48.766130Z" } ], "created_at": "2026-01-17T18:41:49.131190Z", "updated_at": "2026-01-17T18:41:49.131201Z", "is_active": true }, { "id": 508, "french_word": "avec le garçon", "russian_word": "с мальчиком", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Instrumental - с мальчиком", "tags": [ { "id": 15, "name": "instrumental", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.766117Z", "updated_at": "2026-01-17T18:41:48.766130Z" } ], "created_at": "2026-01-17T18:41:49.146444Z", "updated_at": "2026-01-17T18:41:49.146455Z", "is_active": true }, { "id": 501, "french_word": "avec le livre", "russian_word": "с книгой", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Instrumental - с книгой", "tags": [ { "id": 15, "name": "instrumental", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.766117Z", "updated_at": "2026-01-17T18:41:48.766130Z" } ], "created_at": "2026-01-17T18:41:49.111132Z", "updated_at": "2026-01-17T18:41:49.111145Z", "is_active": true }, { "id": 503, "french_word": "avec le pain", "russian_word": "с хлебом", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Instrumental - с хлебом", "tags": [ { "id": 15, "name": "instrumental", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.766117Z", "updated_at": "2026-01-17T18:41:48.766130Z" } ], "created_at": "2026-01-17T18:41:49.121202Z", "updated_at": "2026-01-17T18:41:49.121218Z", "is_active": true }, { "id": 446, "french_word": "instrumental", "russian_word": "Творительный падеж", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Cas du moyen/accompagnement - Avec qui ? Comment ?", "tags": [ { "id": 15, "name": "instrumental", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.766117Z", "updated_at": "2026-01-17T18:41:48.766130Z" } ], "created_at": "2026-01-17T18:41:48.801864Z", "updated_at": "2026-01-17T18:41:48.801895Z", "is_active": true }, { "id": 466, "french_word": "je dessine avec la table", "russian_word": "я рисуюсь столом", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Instrumental - я рисуюсь столом", "tags": [ { "id": 15, "name": "instrumental", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.766117Z", "updated_at": "2026-01-17T18:41:48.766130Z" } ], "created_at": "2026-01-17T18:41:48.926959Z", "updated_at": "2026-01-17T18:41:48.926970Z", "is_active": true } ], "steps": [ { "id": 128, "sub_level": 33, "order": 1, "step_type": "learning_card", "step_type_display": "Learning Card", "title": "Grammaire - Instrumental", "description": "Le cas instrumental (avec/par)\n\nApprenez les terminaisons et l'utilisation du cas instrumental.", "is_required": true, "config": { "content": "Le cas instrumental (avec/par)\n\nApprenez les terminaisons et l'utilisation du cas instrumental.", "concept_type": "declension" }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:49.391656Z", "updated_at": "2026-01-17T18:41:49.391671Z" }, { "id": 129, "sub_level": 33, "order": 2, "step_type": "game_matching", "step_type_display": "Game - Matching", "title": "Pratiquez le cas Instrumental", "description": "Pratiquez le cas Instrumental", "is_required": true, "config": { "game_mode": "declension", "instructions": "Pratiquez le cas Instrumental", "min_score": 75, "level": 7, "sub_level": 5 }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:49.395080Z", "updated_at": "2026-01-17T18:41:49.395091Z" }, { "id": 130, "sub_level": 33, "order": 3, "step_type": "game_matching", "step_type_display": "Game - Matching", "title": "Associez les déclinaisons", "description": "Associez les déclinaisons", "is_required": true, "config": { "game_mode": "matching", "instructions": "Associez les déclinaisons", "min_score": 75, "level": 7, "sub_level": 5 }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:49.398510Z", "updated_at": "2026-01-17T18:41:49.398520Z" }, { "id": 131, "sub_level": 33, "order": 4, "step_type": "game_multiple_choice", "step_type_display": "Game - Multiple Choice", "title": "Choisissez la bonne déclinaison", "description": "Choisissez la bonne déclinaison", "is_required": false, "config": { "game_mode": "multiple_choice", "instructions": "Choisissez la bonne déclinaison", "min_score": 75, "level": 7, "sub_level": 5 }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:49.401838Z", "updated_at": "2026-01-17T18:41:49.401848Z" }, { "id": 384, "sub_level": 33, "order": 5, "step_type": "intro", "step_type_display": "Introduction Lesson", "title": "Introduction - Instrumental", "description": "# Instrumental\n\nLe cas instrumental (avec/par)\n\n## Grammaire - Instrumental\n\nLe cas instrumental (avec/par)\n\nApprenez les terminaisons et l'utilisation du cas instrumental.\n\n\n### Vocabulaire\n\nCe sous-", "is_required": true, "config": { "content": "# Instrumental\n\nLe cas instrumental (avec/par)\n\n## Grammaire - Instrumental\n\nLe cas instrumental (avec/par)\n\nApprenez les terminaisons et l'utilisation du cas instrumental.\n\n\n### Vocabulaire\n\nCe sous-niveau contient 12 mot(s) à apprendre.\n", "word_pairs": [ 502, 507, 509, 500, 506, 504, 505, 508, 501, 503, 446, 466 ] }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:55.201875Z", "updated_at": "2026-01-17T18:41:55.201885Z" } ], "videos": [], "learning_cards": [ { "id": 128, "sub_level": 33, "order": 1, "step_type": "learning_card", "step_type_display": "Learning Card", "title": "Grammaire - Instrumental", "description": "Le cas instrumental (avec/par)\n\nApprenez les terminaisons et l'utilisation du cas instrumental.", "is_required": true, "config": { "content": "Le cas instrumental (avec/par)\n\nApprenez les terminaisons et l'utilisation du cas instrumental.", "concept_type": "declension" }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:49.391656Z", "updated_at": "2026-01-17T18:41:49.391671Z" } ], "exercises": [], "total_words": 12, "is_unlocked": false, "is_completed": false, "progress": { "words_mastered": 0, "total_words": 12, "completion_percentage": 0.0, "steps": [] }, "is_active": true, "created_at": "2026-01-17T18:41:49.382506Z", "updated_at": "2026-01-17T18:41:49.382518Z" }, { "id": 34, "level": 7, "level_display": "Declensions & Cases", "sub_level": 6, "title": "Prépositionnel", "description": "Le cas prépositionnel (dans/sur)", "order": 6, "word_pairs": [ { "id": 512, "french_word": "dans l'eau", "russian_word": "в воде", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Prépositionnel - в воде", "tags": [ { "id": 16, "name": "prepositional", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.769989Z", "updated_at": "2026-01-17T18:41:48.770009Z" } ], "created_at": "2026-01-17T18:41:49.166835Z", "updated_at": "2026-01-17T18:41:49.166853Z", "is_active": true }, { "id": 517, "french_word": "dans la fenêtre", "russian_word": "в окне", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Prépositionnel - в окне", "tags": [ { "id": 16, "name": "prepositional", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.769989Z", "updated_at": "2026-01-17T18:41:48.770009Z" } ], "created_at": "2026-01-17T18:41:49.192318Z", "updated_at": "2026-01-17T18:41:49.192328Z", "is_active": true }, { "id": 519, "french_word": "dans la fille", "russian_word": "в девочке", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Prépositionnel - в девочке", "tags": [ { "id": 16, "name": "prepositional", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.769989Z", "updated_at": "2026-01-17T18:41:48.770009Z" } ], "created_at": "2026-01-17T18:41:49.202356Z", "updated_at": "2026-01-17T18:41:49.202367Z", "is_active": true }, { "id": 510, "french_word": "dans la maison", "russian_word": "в доме", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Prépositionnel - в доме", "tags": [ { "id": 16, "name": "prepositional", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.769989Z", "updated_at": "2026-01-17T18:41:48.770009Z" } ], "created_at": "2026-01-17T18:41:49.156556Z", "updated_at": "2026-01-17T18:41:49.156569Z", "is_active": true }, { "id": 516, "french_word": "dans la rose", "russian_word": "в розе", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Prépositionnel - в розе", "tags": [ { "id": 16, "name": "prepositional", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.769989Z", "updated_at": "2026-01-17T18:41:48.770009Z" } ], "created_at": "2026-01-17T18:41:49.187103Z", "updated_at": "2026-01-17T18:41:49.187116Z", "is_active": true }, { "id": 468, "french_word": "dans la table", "russian_word": "в столе", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Locatif - в столе", "tags": [ { "id": 16, "name": "prepositional", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.769989Z", "updated_at": "2026-01-17T18:41:48.770009Z" } ], "created_at": "2026-01-17T18:41:48.936821Z", "updated_at": "2026-01-17T18:41:48.936843Z", "is_active": true }, { "id": 514, "french_word": "dans la ville", "russian_word": "в городе", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Prépositionnel - в городе", "tags": [ { "id": 16, "name": "prepositional", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.769989Z", "updated_at": "2026-01-17T18:41:48.770009Z" } ], "created_at": "2026-01-17T18:41:49.177286Z", "updated_at": "2026-01-17T18:41:49.177296Z", "is_active": true }, { "id": 515, "french_word": "dans le chat", "russian_word": "в коте", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Prépositionnel - в коте", "tags": [ { "id": 16, "name": "prepositional", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.769989Z", "updated_at": "2026-01-17T18:41:48.770009Z" } ], "created_at": "2026-01-17T18:41:49.182272Z", "updated_at": "2026-01-17T18:41:49.182282Z", "is_active": true }, { "id": 518, "french_word": "dans le garçon", "russian_word": "в мальчике", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Prépositionnel - в мальчике", "tags": [ { "id": 16, "name": "prepositional", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.769989Z", "updated_at": "2026-01-17T18:41:48.770009Z" } ], "created_at": "2026-01-17T18:41:49.197304Z", "updated_at": "2026-01-17T18:41:49.197319Z", "is_active": true }, { "id": 511, "french_word": "dans le livre", "russian_word": "в книге", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Prépositionnel - в книге", "tags": [ { "id": 16, "name": "prepositional", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.769989Z", "updated_at": "2026-01-17T18:41:48.770009Z" } ], "created_at": "2026-01-17T18:41:49.161693Z", "updated_at": "2026-01-17T18:41:49.161703Z", "is_active": true }, { "id": 513, "french_word": "dans le pain", "russian_word": "в хлебе", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Prépositionnel - в хлебе", "tags": [ { "id": 16, "name": "prepositional", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.769989Z", "updated_at": "2026-01-17T18:41:48.770009Z" } ], "created_at": "2026-01-17T18:41:49.172103Z", "updated_at": "2026-01-17T18:41:49.172116Z", "is_active": true }, { "id": 447, "french_word": "locatif", "russian_word": "Предложный падеж", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Cas du lieu/sujet - Où ? À propos de ?", "tags": [ { "id": 16, "name": "prepositional", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.769989Z", "updated_at": "2026-01-17T18:41:48.770009Z" } ], "created_at": "2026-01-17T18:41:48.808873Z", "updated_at": "2026-01-17T18:41:48.808897Z", "is_active": true }, { "id": 522, "french_word": "sur l'eau", "russian_word": "на воде", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Prépositionnel - на воде", "tags": [ { "id": 16, "name": "prepositional", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.769989Z", "updated_at": "2026-01-17T18:41:48.770009Z" } ], "created_at": "2026-01-17T18:41:49.217953Z", "updated_at": "2026-01-17T18:41:49.217969Z", "is_active": true }, { "id": 527, "french_word": "sur la fenêtre", "russian_word": "на окне", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Prépositionnel - на окне", "tags": [ { "id": 16, "name": "prepositional", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.769989Z", "updated_at": "2026-01-17T18:41:48.770009Z" } ], "created_at": "2026-01-17T18:41:49.242860Z", "updated_at": "2026-01-17T18:41:49.242871Z", "is_active": true }, { "id": 529, "french_word": "sur la fille", "russian_word": "на девочке", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Prépositionnel - на девочке", "tags": [ { "id": 16, "name": "prepositional", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.769989Z", "updated_at": "2026-01-17T18:41:48.770009Z" } ], "created_at": "2026-01-17T18:41:49.252567Z", "updated_at": "2026-01-17T18:41:49.252578Z", "is_active": true }, { "id": 520, "french_word": "sur la maison", "russian_word": "на доме", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Prépositionnel - на доме", "tags": [ { "id": 16, "name": "prepositional", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.769989Z", "updated_at": "2026-01-17T18:41:48.770009Z" } ], "created_at": "2026-01-17T18:41:49.207604Z", "updated_at": "2026-01-17T18:41:49.207618Z", "is_active": true }, { "id": 526, "french_word": "sur la rose", "russian_word": "на розе", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Prépositionnel - на розе", "tags": [ { "id": 16, "name": "prepositional", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.769989Z", "updated_at": "2026-01-17T18:41:48.770009Z" } ], "created_at": "2026-01-17T18:41:49.238155Z", "updated_at": "2026-01-17T18:41:49.238166Z", "is_active": true }, { "id": 469, "french_word": "sur la table", "russian_word": "на столе", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Locatif - на столе", "tags": [ { "id": 16, "name": "prepositional", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.769989Z", "updated_at": "2026-01-17T18:41:48.770009Z" } ], "created_at": "2026-01-17T18:41:48.942432Z", "updated_at": "2026-01-17T18:41:48.942463Z", "is_active": true }, { "id": 524, "french_word": "sur la ville", "russian_word": "на городе", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Prépositionnel - на городе", "tags": [ { "id": 16, "name": "prepositional", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.769989Z", "updated_at": "2026-01-17T18:41:48.770009Z" } ], "created_at": "2026-01-17T18:41:49.228234Z", "updated_at": "2026-01-17T18:41:49.228250Z", "is_active": true }, { "id": 525, "french_word": "sur le chat", "russian_word": "на коте", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Prépositionnel - на коте", "tags": [ { "id": 16, "name": "prepositional", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.769989Z", "updated_at": "2026-01-17T18:41:48.770009Z" } ], "created_at": "2026-01-17T18:41:49.233281Z", "updated_at": "2026-01-17T18:41:49.233297Z", "is_active": true }, { "id": 528, "french_word": "sur le garçon", "russian_word": "на мальчике", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Prépositionnel - на мальчике", "tags": [ { "id": 16, "name": "prepositional", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.769989Z", "updated_at": "2026-01-17T18:41:48.770009Z" } ], "created_at": "2026-01-17T18:41:49.247585Z", "updated_at": "2026-01-17T18:41:49.247595Z", "is_active": true }, { "id": 521, "french_word": "sur le livre", "russian_word": "на книге", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Prépositionnel - на книге", "tags": [ { "id": 16, "name": "prepositional", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.769989Z", "updated_at": "2026-01-17T18:41:48.770009Z" } ], "created_at": "2026-01-17T18:41:49.212669Z", "updated_at": "2026-01-17T18:41:49.212686Z", "is_active": true }, { "id": 523, "french_word": "sur le pain", "russian_word": "на хлебе", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Prépositionnel - на хлебе", "tags": [ { "id": 16, "name": "prepositional", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.769989Z", "updated_at": "2026-01-17T18:41:48.770009Z" } ], "created_at": "2026-01-17T18:41:49.223117Z", "updated_at": "2026-01-17T18:41:49.223134Z", "is_active": true }, { "id": 467, "french_word": "à propos de la table", "russian_word": "о столе", "category": "other", "category_display": "Other", "level": 7, "level_display": "Declensions & Cases", "comment": "Locatif - о столе", "tags": [ { "id": 16, "name": "prepositional", "category": "case", "category_display": "Case (Declension)", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:48.769989Z", "updated_at": "2026-01-17T18:41:48.770009Z" } ], "created_at": "2026-01-17T18:41:48.931673Z", "updated_at": "2026-01-17T18:41:48.931687Z", "is_active": true } ], "steps": [ { "id": 132, "sub_level": 34, "order": 1, "step_type": "learning_card", "step_type_display": "Learning Card", "title": "Grammaire - Prépositionnel", "description": "Le cas prépositionnel (dans/sur)\n\nApprenez les terminaisons et l'utilisation du cas prépositionnel.", "is_required": true, "config": { "content": "Le cas prépositionnel (dans/sur)\n\nApprenez les terminaisons et l'utilisation du cas prépositionnel.", "concept_type": "declension" }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:49.414210Z", "updated_at": "2026-01-17T18:41:49.414224Z" }, { "id": 133, "sub_level": 34, "order": 2, "step_type": "game_matching", "step_type_display": "Game - Matching", "title": "Pratiquez le cas Prépositionnel", "description": "Pratiquez le cas Prépositionnel", "is_required": true, "config": { "game_mode": "declension", "instructions": "Pratiquez le cas Prépositionnel", "min_score": 75, "level": 7, "sub_level": 6 }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:49.417919Z", "updated_at": "2026-01-17T18:41:49.417932Z" }, { "id": 134, "sub_level": 34, "order": 3, "step_type": "game_matching", "step_type_display": "Game - Matching", "title": "Associez les déclinaisons", "description": "Associez les déclinaisons", "is_required": true, "config": { "game_mode": "matching", "instructions": "Associez les déclinaisons", "min_score": 75, "level": 7, "sub_level": 6 }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:49.422054Z", "updated_at": "2026-01-17T18:41:49.422066Z" }, { "id": 135, "sub_level": 34, "order": 4, "step_type": "game_multiple_choice", "step_type_display": "Game - Multiple Choice", "title": "Choisissez la bonne déclinaison", "description": "Choisissez la bonne déclinaison", "is_required": false, "config": { "game_mode": "multiple_choice", "instructions": "Choisissez la bonne déclinaison", "min_score": 75, "level": 7, "sub_level": 6 }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:49.425737Z", "updated_at": "2026-01-17T18:41:49.425747Z" }, { "id": 385, "sub_level": 34, "order": 5, "step_type": "intro", "step_type_display": "Introduction Lesson", "title": "Introduction - Prépositionnel", "description": "# Prépositionnel\n\nLe cas prépositionnel (dans/sur)\n\n## Grammaire - Prépositionnel\n\nLe cas prépositionnel (dans/sur)\n\nApprenez les terminaisons et l'utilisation du cas prépositionnel.\n\n\n### Vocabulaire", "is_required": true, "config": { "content": "# Prépositionnel\n\nLe cas prépositionnel (dans/sur)\n\n## Grammaire - Prépositionnel\n\nLe cas prépositionnel (dans/sur)\n\nApprenez les terminaisons et l'utilisation du cas prépositionnel.\n\n\n### Vocabulaire\n\nCe sous-niveau contient 24 mot(s) à apprendre.\n", "word_pairs": [ 512, 517, 519, 510, 516, 468, 514, 515, 518, 511, 513, 447, 522, 527, 529, 520, 526, 469, 524, 525, 528, 521, 523, 467 ] }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:55.207592Z", "updated_at": "2026-01-17T18:41:55.207602Z" } ], "videos": [], "learning_cards": [ { "id": 132, "sub_level": 34, "order": 1, "step_type": "learning_card", "step_type_display": "Learning Card", "title": "Grammaire - Prépositionnel", "description": "Le cas prépositionnel (dans/sur)\n\nApprenez les terminaisons et l'utilisation du cas prépositionnel.", "is_required": true, "config": { "content": "Le cas prépositionnel (dans/sur)\n\nApprenez les terminaisons et l'utilisation du cas prépositionnel.", "concept_type": "declension" }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:49.414210Z", "updated_at": "2026-01-17T18:41:49.414224Z" } ], "exercises": [], "total_words": 24, "is_unlocked": false, "is_completed": false, "progress": { "words_mastered": 0, "total_words": 24, "completion_percentage": 0.0, "steps": [] }, "is_active": true, "created_at": "2026-01-17T18:41:49.404553Z", "updated_at": "2026-01-17T18:41:49.404567Z" }, { "id": 35, "level": 8, "level_display": "Famille", "sub_level": 1, "title": "Vocabulaire des parents et des enfants", "description": "Parents et enfants", "order": 1, "word_pairs": [ { "id": 538, "french_word": "enfant", "russian_word": "ребёнок", "category": "family", "category_display": "Family", "level": 1, "level_display": "Famille", "comment": "Child", "tags": [ { "id": 17, "name": "family", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:50.085654Z", "updated_at": "2026-01-17T18:41:50.085664Z" } ], "created_at": "2026-01-17T18:41:50.128336Z", "updated_at": "2026-01-17T18:41:50.128347Z", "is_active": true }, { "id": 539, "french_word": "enfants", "russian_word": "дети", "category": "family", "category_display": "Family", "level": 1, "level_display": "Famille", "comment": "Children", "tags": [ { "id": 17, "name": "family", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:50.085654Z", "updated_at": "2026-01-17T18:41:50.085664Z" } ], "created_at": "2026-01-17T18:41:50.133429Z", "updated_at": "2026-01-17T18:41:50.133440Z", "is_active": true }, { "id": 530, "french_word": "famille", "russian_word": "семья", "category": "family", "category_display": "Family", "level": 1, "level_display": "Famille", "comment": "Family", "tags": [ { "id": 17, "name": "family", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:50.085654Z", "updated_at": "2026-01-17T18:41:50.085664Z" } ], "created_at": "2026-01-17T18:41:50.088380Z", "updated_at": "2026-01-17T18:41:50.088390Z", "is_active": true }, { "id": 537, "french_word": "fille", "russian_word": "дочь", "category": "family", "category_display": "Family", "level": 1, "level_display": "Famille", "comment": "Daughter", "tags": [ { "id": 17, "name": "family", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:50.085654Z", "updated_at": "2026-01-17T18:41:50.085664Z" } ], "created_at": "2026-01-17T18:41:50.123336Z", "updated_at": "2026-01-17T18:41:50.123347Z", "is_active": true }, { "id": 536, "french_word": "fils", "russian_word": "сын", "category": "family", "category_display": "Family", "level": 1, "level_display": "Famille", "comment": "Son", "tags": [ { "id": 17, "name": "family", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:50.085654Z", "updated_at": "2026-01-17T18:41:50.085664Z" } ], "created_at": "2026-01-17T18:41:50.118447Z", "updated_at": "2026-01-17T18:41:50.118458Z", "is_active": true }, { "id": 534, "french_word": "maman", "russian_word": "мама", "category": "family", "category_display": "Family", "level": 1, "level_display": "Famille", "comment": "Mom", "tags": [ { "id": 17, "name": "family", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:50.085654Z", "updated_at": "2026-01-17T18:41:50.085664Z" } ], "created_at": "2026-01-17T18:41:50.108304Z", "updated_at": "2026-01-17T18:41:50.108315Z", "is_active": true }, { "id": 533, "french_word": "mère", "russian_word": "мать", "category": "family", "category_display": "Family", "level": 1, "level_display": "Famille", "comment": "Mother", "tags": [ { "id": 17, "name": "family", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:50.085654Z", "updated_at": "2026-01-17T18:41:50.085664Z" } ], "created_at": "2026-01-17T18:41:50.103369Z", "updated_at": "2026-01-17T18:41:50.103379Z", "is_active": true }, { "id": 532, "french_word": "papa", "russian_word": "папа", "category": "family", "category_display": "Family", "level": 1, "level_display": "Famille", "comment": "Dad", "tags": [ { "id": 17, "name": "family", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:50.085654Z", "updated_at": "2026-01-17T18:41:50.085664Z" } ], "created_at": "2026-01-17T18:41:50.098397Z", "updated_at": "2026-01-17T18:41:50.098407Z", "is_active": true }, { "id": 535, "french_word": "parents", "russian_word": "родители", "category": "family", "category_display": "Family", "level": 1, "level_display": "Famille", "comment": "Parents", "tags": [ { "id": 17, "name": "family", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:50.085654Z", "updated_at": "2026-01-17T18:41:50.085664Z" } ], "created_at": "2026-01-17T18:41:50.113351Z", "updated_at": "2026-01-17T18:41:50.113361Z", "is_active": true }, { "id": 531, "french_word": "père", "russian_word": "отец", "category": "family", "category_display": "Family", "level": 1, "level_display": "Famille", "comment": "Father", "tags": [ { "id": 17, "name": "family", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:50.085654Z", "updated_at": "2026-01-17T18:41:50.085664Z" } ], "created_at": "2026-01-17T18:41:50.093492Z", "updated_at": "2026-01-17T18:41:50.093504Z", "is_active": true } ], "steps": [ { "id": 136, "sub_level": 35, "order": 1, "step_type": "learning_card", "step_type_display": "Learning Card", "title": "Introduction à Vocabulaire des parents et des enfants", "description": "Parents et enfants\n\nApprenez le vocabulaire de vocabulaire des parents et des enfants en russe.", "is_required": true, "config": { "content": "Parents et enfants\n\nApprenez le vocabulaire de vocabulaire des parents et des enfants en russe.", "concept_type": "vocabulary" }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:50.240680Z", "updated_at": "2026-01-17T18:41:50.240694Z" }, { "id": 137, "sub_level": 35, "order": 2, "step_type": "game_flashcard", "step_type_display": "Game - Flashcard", "title": "Exercice 1 - Flashcard", "description": "Exercice 1 - Flashcard", "is_required": false, "config": { "game_mode": "flashcard", "instructions": "Pratiquez le vocabulaire de vocabulaire des parents et des enfants avec le mode flashcard.", "min_score": 70, "level": 1, "sub_level": 1 }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:50.244107Z", "updated_at": "2026-01-17T18:41:50.244117Z" }, { "id": 138, "sub_level": 35, "order": 3, "step_type": "game_matching", "step_type_display": "Game - Matching", "title": "Exercice 2 - Matching", "description": "Exercice 2 - Matching", "is_required": false, "config": { "game_mode": "matching", "instructions": "Pratiquez le vocabulaire de vocabulaire des parents et des enfants avec le mode matching.", "min_score": 70, "level": 1, "sub_level": 1 }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:50.247184Z", "updated_at": "2026-01-17T18:41:50.247194Z" }, { "id": 139, "sub_level": 35, "order": 4, "step_type": "game_multiple_choice", "step_type_display": "Game - Multiple Choice", "title": "Exercice 3 - Multiple Choice", "description": "Exercice 3 - Multiple Choice", "is_required": false, "config": { "game_mode": "multiple_choice", "instructions": "Pratiquez le vocabulaire de vocabulaire des parents et des enfants avec le mode multiple_choice.", "min_score": 70, "level": 1, "sub_level": 1 }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:50.250843Z", "updated_at": "2026-01-17T18:41:50.250853Z" } ], "videos": [], "learning_cards": [ { "id": 136, "sub_level": 35, "order": 1, "step_type": "learning_card", "step_type_display": "Learning Card", "title": "Introduction à Vocabulaire des parents et des enfants", "description": "Parents et enfants\n\nApprenez le vocabulaire de vocabulaire des parents et des enfants en russe.", "is_required": true, "config": { "content": "Parents et enfants\n\nApprenez le vocabulaire de vocabulaire des parents et des enfants en russe.", "concept_type": "vocabulary" }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:50.240680Z", "updated_at": "2026-01-17T18:41:50.240694Z" } ], "exercises": [], "total_words": 10, "is_unlocked": false, "is_completed": false, "progress": { "words_mastered": 0, "total_words": 10, "completion_percentage": 0.0, "steps": [] }, "is_active": true, "created_at": "2026-01-17T18:41:50.232896Z", "updated_at": "2026-01-17T18:41:50.232907Z" }, { "id": 36, "level": 8, "level_display": "Famille", "sub_level": 2, "title": "Vocabulaire des frères et sœurs", "description": "Frères et sœurs", "order": 2, "word_pairs": [ { "id": 544, "french_word": "aîné", "russian_word": "старший", "category": "family", "category_display": "Family", "level": 1, "level_display": "Famille", "comment": "Elder (brother/sister)", "tags": [ { "id": 17, "name": "family", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:50.085654Z", "updated_at": "2026-01-17T18:41:50.085664Z" } ], "created_at": "2026-01-17T18:41:50.160324Z", "updated_at": "2026-01-17T18:41:50.160334Z", "is_active": true }, { "id": 545, "french_word": "cadet", "russian_word": "младший", "category": "family", "category_display": "Family", "level": 1, "level_display": "Famille", "comment": "Younger (brother/sister)", "tags": [ { "id": 17, "name": "family", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:50.085654Z", "updated_at": "2026-01-17T18:41:50.085664Z" } ], "created_at": "2026-01-17T18:41:50.165300Z", "updated_at": "2026-01-17T18:41:50.165311Z", "is_active": true }, { "id": 540, "french_word": "frère", "russian_word": "брат", "category": "family", "category_display": "Family", "level": 1, "level_display": "Famille", "comment": "Brother", "tags": [ { "id": 17, "name": "family", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:50.085654Z", "updated_at": "2026-01-17T18:41:50.085664Z" } ], "created_at": "2026-01-17T18:41:50.138744Z", "updated_at": "2026-01-17T18:41:50.138761Z", "is_active": true }, { "id": 542, "french_word": "frères", "russian_word": "братья", "category": "family", "category_display": "Family", "level": 1, "level_display": "Famille", "comment": "Brothers", "tags": [ { "id": 17, "name": "family", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:50.085654Z", "updated_at": "2026-01-17T18:41:50.085664Z" } ], "created_at": "2026-01-17T18:41:50.150211Z", "updated_at": "2026-01-17T18:41:50.150227Z", "is_active": true }, { "id": 546, "french_word": "jumeau", "russian_word": "близнец", "category": "family", "category_display": "Family", "level": 1, "level_display": "Famille", "comment": "Twin (masculine)", "tags": [ { "id": 17, "name": "family", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:50.085654Z", "updated_at": "2026-01-17T18:41:50.085664Z" } ], "created_at": "2026-01-17T18:41:50.171160Z", "updated_at": "2026-01-17T18:41:50.171171Z", "is_active": true }, { "id": 547, "french_word": "jumelle", "russian_word": "близнец", "category": "family", "category_display": "Family", "level": 1, "level_display": "Famille", "comment": "Twin (feminine)", "tags": [ { "id": 17, "name": "family", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:50.085654Z", "updated_at": "2026-01-17T18:41:50.085664Z" } ], "created_at": "2026-01-17T18:41:50.176309Z", "updated_at": "2026-01-17T18:41:50.176321Z", "is_active": true }, { "id": 541, "french_word": "sœur", "russian_word": "сестра", "category": "family", "category_display": "Family", "level": 1, "level_display": "Famille", "comment": "Sister", "tags": [ { "id": 17, "name": "family", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:50.085654Z", "updated_at": "2026-01-17T18:41:50.085664Z" } ], "created_at": "2026-01-17T18:41:50.144569Z", "updated_at": "2026-01-17T18:41:50.144585Z", "is_active": true }, { "id": 543, "french_word": "sœurs", "russian_word": "сёстры", "category": "family", "category_display": "Family", "level": 1, "level_display": "Famille", "comment": "Sisters", "tags": [ { "id": 17, "name": "family", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:50.085654Z", "updated_at": "2026-01-17T18:41:50.085664Z" } ], "created_at": "2026-01-17T18:41:50.155374Z", "updated_at": "2026-01-17T18:41:50.155385Z", "is_active": true } ], "steps": [ { "id": 140, "sub_level": 36, "order": 1, "step_type": "learning_card", "step_type_display": "Learning Card", "title": "Introduction à Vocabulaire des frères et sœurs", "description": "Frères et sœurs\n\nApprenez le vocabulaire de vocabulaire des frères et sœurs en russe.", "is_required": true, "config": { "content": "Frères et sœurs\n\nApprenez le vocabulaire de vocabulaire des frères et sœurs en russe.", "concept_type": "vocabulary" }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:50.260461Z", "updated_at": "2026-01-17T18:41:50.260471Z" }, { "id": 141, "sub_level": 36, "order": 2, "step_type": "game_flashcard", "step_type_display": "Game - Flashcard", "title": "Exercice 1 - Flashcard", "description": "Exercice 1 - Flashcard", "is_required": false, "config": { "game_mode": "flashcard", "instructions": "Pratiquez le vocabulaire de vocabulaire des frères et sœurs avec le mode flashcard.", "min_score": 70, "level": 1, "sub_level": 2 }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:50.263749Z", "updated_at": "2026-01-17T18:41:50.263759Z" }, { "id": 142, "sub_level": 36, "order": 3, "step_type": "game_matching", "step_type_display": "Game - Matching", "title": "Exercice 2 - Matching", "description": "Exercice 2 - Matching", "is_required": false, "config": { "game_mode": "matching", "instructions": "Pratiquez le vocabulaire de vocabulaire des frères et sœurs avec le mode matching.", "min_score": 70, "level": 1, "sub_level": 2 }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:50.266836Z", "updated_at": "2026-01-17T18:41:50.266846Z" }, { "id": 143, "sub_level": 36, "order": 4, "step_type": "game_multiple_choice", "step_type_display": "Game - Multiple Choice", "title": "Exercice 3 - Multiple Choice", "description": "Exercice 3 - Multiple Choice", "is_required": false, "config": { "game_mode": "multiple_choice", "instructions": "Pratiquez le vocabulaire de vocabulaire des frères et sœurs avec le mode multiple_choice.", "min_score": 70, "level": 1, "sub_level": 2 }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:50.269810Z", "updated_at": "2026-01-17T18:41:50.269820Z" } ], "videos": [], "learning_cards": [ { "id": 140, "sub_level": 36, "order": 1, "step_type": "learning_card", "step_type_display": "Learning Card", "title": "Introduction à Vocabulaire des frères et sœurs", "description": "Frères et sœurs\n\nApprenez le vocabulaire de vocabulaire des frères et sœurs en russe.", "is_required": true, "config": { "content": "Frères et sœurs\n\nApprenez le vocabulaire de vocabulaire des frères et sœurs en russe.", "concept_type": "vocabulary" }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:50.260461Z", "updated_at": "2026-01-17T18:41:50.260471Z" } ], "exercises": [], "total_words": 8, "is_unlocked": false, "is_completed": false, "progress": { "words_mastered": 0, "total_words": 8, "completion_percentage": 0.0, "steps": [] }, "is_active": true, "created_at": "2026-01-17T18:41:50.253362Z", "updated_at": "2026-01-17T18:41:50.253373Z" }, { "id": 37, "level": 8, "level_display": "Famille", "sub_level": 3, "title": "Vocabulaire des grands-parents et de la famille élargie", "description": "Grands-parents et famille élargie", "order": 3, "word_pairs": [ { "id": 552, "french_word": "cousin", "russian_word": "двоюродный брат", "category": "family", "category_display": "Family", "level": 1, "level_display": "Famille", "comment": "Cousin (masculine)", "tags": [ { "id": 17, "name": "family", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:50.085654Z", "updated_at": "2026-01-17T18:41:50.085664Z" } ], "created_at": "2026-01-17T18:41:50.201960Z", "updated_at": "2026-01-17T18:41:50.201972Z", "is_active": true }, { "id": 553, "french_word": "cousine", "russian_word": "двоюродная сестра", "category": "family", "category_display": "Family", "level": 1, "level_display": "Famille", "comment": "Cousin (feminine)", "tags": [ { "id": 17, "name": "family", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:50.085654Z", "updated_at": "2026-01-17T18:41:50.085664Z" } ], "created_at": "2026-01-17T18:41:50.207115Z", "updated_at": "2026-01-17T18:41:50.207128Z", "is_active": true }, { "id": 549, "french_word": "grand-mère", "russian_word": "бабушка", "category": "family", "category_display": "Family", "level": 1, "level_display": "Famille", "comment": "Grandmother", "tags": [ { "id": 17, "name": "family", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:50.085654Z", "updated_at": "2026-01-17T18:41:50.085664Z" } ], "created_at": "2026-01-17T18:41:50.187686Z", "updated_at": "2026-01-17T18:41:50.187697Z", "is_active": true }, { "id": 548, "french_word": "grand-père", "russian_word": "дедушка", "category": "family", "category_display": "Family", "level": 1, "level_display": "Famille", "comment": "Grandfather", "tags": [ { "id": 17, "name": "family", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:50.085654Z", "updated_at": "2026-01-17T18:41:50.085664Z" } ], "created_at": "2026-01-17T18:41:50.183081Z", "updated_at": "2026-01-17T18:41:50.183094Z", "is_active": true }, { "id": 550, "french_word": "oncle", "russian_word": "дядя", "category": "family", "category_display": "Family", "level": 1, "level_display": "Famille", "comment": "Uncle", "tags": [ { "id": 17, "name": "family", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:50.085654Z", "updated_at": "2026-01-17T18:41:50.085664Z" } ], "created_at": "2026-01-17T18:41:50.192327Z", "updated_at": "2026-01-17T18:41:50.192337Z", "is_active": true }, { "id": 551, "french_word": "tante", "russian_word": "тётя", "category": "family", "category_display": "Family", "level": 1, "level_display": "Famille", "comment": "Aunt", "tags": [ { "id": 17, "name": "family", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:50.085654Z", "updated_at": "2026-01-17T18:41:50.085664Z" } ], "created_at": "2026-01-17T18:41:50.197197Z", "updated_at": "2026-01-17T18:41:50.197207Z", "is_active": true } ], "steps": [ { "id": 144, "sub_level": 37, "order": 1, "step_type": "learning_card", "step_type_display": "Learning Card", "title": "Introduction à Vocabulaire des grands-parents et de la famille élargie", "description": "Grands-parents et famille élargie\n\nApprenez le vocabulaire de vocabulaire des grands-parents et de la famille élargie en russe.", "is_required": true, "config": { "content": "Grands-parents et famille élargie\n\nApprenez le vocabulaire de vocabulaire des grands-parents et de la famille élargie en russe.", "concept_type": "vocabulary" }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:50.279410Z", "updated_at": "2026-01-17T18:41:50.279427Z" }, { "id": 145, "sub_level": 37, "order": 2, "step_type": "game_flashcard", "step_type_display": "Game - Flashcard", "title": "Exercice 1 - Flashcard", "description": "Exercice 1 - Flashcard", "is_required": false, "config": { "game_mode": "flashcard", "instructions": "Pratiquez le vocabulaire de vocabulaire des grands-parents et de la famille élargie avec le mode flashcard.", "min_score": 70, "level": 1, "sub_level": 3 }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:50.282717Z", "updated_at": "2026-01-17T18:41:50.282727Z" }, { "id": 146, "sub_level": 37, "order": 3, "step_type": "game_matching", "step_type_display": "Game - Matching", "title": "Exercice 2 - Matching", "description": "Exercice 2 - Matching", "is_required": false, "config": { "game_mode": "matching", "instructions": "Pratiquez le vocabulaire de vocabulaire des grands-parents et de la famille élargie avec le mode matching.", "min_score": 70, "level": 1, "sub_level": 3 }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:50.285893Z", "updated_at": "2026-01-17T18:41:50.285902Z" }, { "id": 147, "sub_level": 37, "order": 4, "step_type": "game_multiple_choice", "step_type_display": "Game - Multiple Choice", "title": "Exercice 3 - Multiple Choice", "description": "Exercice 3 - Multiple Choice", "is_required": false, "config": { "game_mode": "multiple_choice", "instructions": "Pratiquez le vocabulaire de vocabulaire des grands-parents et de la famille élargie avec le mode multiple_choice.", "min_score": 70, "level": 1, "sub_level": 3 }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:50.288890Z", "updated_at": "2026-01-17T18:41:50.288900Z" } ], "videos": [], "learning_cards": [ { "id": 144, "sub_level": 37, "order": 1, "step_type": "learning_card", "step_type_display": "Learning Card", "title": "Introduction à Vocabulaire des grands-parents et de la famille élargie", "description": "Grands-parents et famille élargie\n\nApprenez le vocabulaire de vocabulaire des grands-parents et de la famille élargie en russe.", "is_required": true, "config": { "content": "Grands-parents et famille élargie\n\nApprenez le vocabulaire de vocabulaire des grands-parents et de la famille élargie en russe.", "concept_type": "vocabulary" }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:50.279410Z", "updated_at": "2026-01-17T18:41:50.279427Z" } ], "exercises": [], "total_words": 6, "is_unlocked": false, "is_completed": false, "progress": { "words_mastered": 0, "total_words": 6, "completion_percentage": 0.0, "steps": [] }, "is_active": true, "created_at": "2026-01-17T18:41:50.272327Z", "updated_at": "2026-01-17T18:41:50.272337Z" }, { "id": 38, "level": 8, "level_display": "Famille", "sub_level": 4, "title": "Vocabulaire des relations conjugales", "description": "Relations conjugales", "order": 4, "word_pairs": [ { "id": 555, "french_word": "femme", "russian_word": "жена", "category": "family", "category_display": "Family", "level": 1, "level_display": "Famille", "comment": "Wife", "tags": [ { "id": 17, "name": "family", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:50.085654Z", "updated_at": "2026-01-17T18:41:50.085664Z" } ], "created_at": "2026-01-17T18:41:50.217846Z", "updated_at": "2026-01-17T18:41:50.217856Z", "is_active": true }, { "id": 556, "french_word": "fiancé", "russian_word": "жених", "category": "family", "category_display": "Family", "level": 1, "level_display": "Famille", "comment": "Fiancé", "tags": [ { "id": 17, "name": "family", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:50.085654Z", "updated_at": "2026-01-17T18:41:50.085664Z" } ], "created_at": "2026-01-17T18:41:50.222493Z", "updated_at": "2026-01-17T18:41:50.222503Z", "is_active": true }, { "id": 557, "french_word": "fiancée", "russian_word": "невеста", "category": "family", "category_display": "Family", "level": 1, "level_display": "Famille", "comment": "Fiancée", "tags": [ { "id": 17, "name": "family", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:50.085654Z", "updated_at": "2026-01-17T18:41:50.085664Z" } ], "created_at": "2026-01-17T18:41:50.227302Z", "updated_at": "2026-01-17T18:41:50.227312Z", "is_active": true }, { "id": 554, "french_word": "mari", "russian_word": "муж", "category": "family", "category_display": "Family", "level": 1, "level_display": "Famille", "comment": "Husband", "tags": [ { "id": 17, "name": "family", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:50.085654Z", "updated_at": "2026-01-17T18:41:50.085664Z" } ], "created_at": "2026-01-17T18:41:50.212140Z", "updated_at": "2026-01-17T18:41:50.212151Z", "is_active": true } ], "steps": [ { "id": 148, "sub_level": 38, "order": 1, "step_type": "learning_card", "step_type_display": "Learning Card", "title": "Introduction à Vocabulaire des relations conjugales", "description": "Relations conjugales\n\nApprenez le vocabulaire de vocabulaire des relations conjugales en russe.", "is_required": true, "config": { "content": "Relations conjugales\n\nApprenez le vocabulaire de vocabulaire des relations conjugales en russe.", "concept_type": "vocabulary" }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:50.300985Z", "updated_at": "2026-01-17T18:41:50.301002Z" }, { "id": 149, "sub_level": 38, "order": 2, "step_type": "game_flashcard", "step_type_display": "Game - Flashcard", "title": "Exercice 1 - Flashcard", "description": "Exercice 1 - Flashcard", "is_required": false, "config": { "game_mode": "flashcard", "instructions": "Pratiquez le vocabulaire de vocabulaire des relations conjugales avec le mode flashcard.", "min_score": 70, "level": 1, "sub_level": 4 }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:50.305481Z", "updated_at": "2026-01-17T18:41:50.305498Z" }, { "id": 150, "sub_level": 38, "order": 3, "step_type": "game_matching", "step_type_display": "Game - Matching", "title": "Exercice 2 - Matching", "description": "Exercice 2 - Matching", "is_required": false, "config": { "game_mode": "matching", "instructions": "Pratiquez le vocabulaire de vocabulaire des relations conjugales avec le mode matching.", "min_score": 70, "level": 1, "sub_level": 4 }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:50.310510Z", "updated_at": "2026-01-17T18:41:50.310527Z" }, { "id": 151, "sub_level": 38, "order": 4, "step_type": "game_multiple_choice", "step_type_display": "Game - Multiple Choice", "title": "Exercice 3 - Multiple Choice", "description": "Exercice 3 - Multiple Choice", "is_required": false, "config": { "game_mode": "multiple_choice", "instructions": "Pratiquez le vocabulaire de vocabulaire des relations conjugales avec le mode multiple_choice.", "min_score": 70, "level": 1, "sub_level": 4 }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:50.314872Z", "updated_at": "2026-01-17T18:41:50.314889Z" } ], "videos": [], "learning_cards": [ { "id": 148, "sub_level": 38, "order": 1, "step_type": "learning_card", "step_type_display": "Learning Card", "title": "Introduction à Vocabulaire des relations conjugales", "description": "Relations conjugales\n\nApprenez le vocabulaire de vocabulaire des relations conjugales en russe.", "is_required": true, "config": { "content": "Relations conjugales\n\nApprenez le vocabulaire de vocabulaire des relations conjugales en russe.", "concept_type": "vocabulary" }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:50.300985Z", "updated_at": "2026-01-17T18:41:50.301002Z" } ], "exercises": [], "total_words": 4, "is_unlocked": false, "is_completed": false, "progress": { "words_mastered": 0, "total_words": 4, "completion_percentage": 0.0, "steps": [] }, "is_active": true, "created_at": "2026-01-17T18:41:50.291431Z", "updated_at": "2026-01-17T18:41:50.291441Z" }, { "id": 39, "level": 9, "level_display": "Nourriture", "sub_level": 1, "title": "Vocabulaire des fruits et légumes", "description": "Fruits et légumes", "order": 1, "word_pairs": [ { "id": 583, "french_word": "ail", "russian_word": "чеснок", "category": "food", "category_display": "Food", "level": 2, "level_display": "Nourriture", "comment": "Garlic", "tags": [ { "id": 18, "name": "food", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:50.323097Z", "updated_at": "2026-01-17T18:41:50.323114Z" } ], "created_at": "2026-01-17T18:41:50.460021Z", "updated_at": "2026-01-17T18:41:50.460040Z", "is_active": true }, { "id": 574, "french_word": "ananas", "russian_word": "ананас", "category": "food", "category_display": "Food", "level": 2, "level_display": "Nourriture", "comment": "Pineapple", "tags": [ { "id": 18, "name": "food", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:50.323097Z", "updated_at": "2026-01-17T18:41:50.323114Z" } ], "created_at": "2026-01-17T18:41:50.414307Z", "updated_at": "2026-01-17T18:41:50.414317Z", "is_active": true }, { "id": 587, "french_word": "aubergine", "russian_word": "баклажан", "category": "food", "category_display": "Food", "level": 2, "level_display": "Nourriture", "comment": "Eggplant", "tags": [ { "id": 18, "name": "food", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:50.323097Z", "updated_at": "2026-01-17T18:41:50.323114Z" } ], "created_at": "2026-01-17T18:41:50.489782Z", "updated_at": "2026-01-17T18:41:50.489805Z", "is_active": true }, { "id": 562, "french_word": "banane", "russian_word": "банан", "category": "food", "category_display": "Food", "level": 2, "level_display": "Nourriture", "comment": "Banana", "tags": [ { "id": 18, "name": "food", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:50.323097Z", "updated_at": "2026-01-17T18:41:50.323114Z" } ], "created_at": "2026-01-17T18:41:50.352900Z", "updated_at": "2026-01-17T18:41:50.352925Z", "is_active": true }, { "id": 579, "french_word": "brocoli", "russian_word": "брокколи", "category": "food", "category_display": "Food", "level": 2, "level_display": "Nourriture", "comment": "Broccoli", "tags": [ { "id": 18, "name": "food", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:50.323097Z", "updated_at": "2026-01-17T18:41:50.323114Z" } ], "created_at": "2026-01-17T18:41:50.440141Z", "updated_at": "2026-01-17T18:41:50.440152Z", "is_active": true }, { "id": 565, "french_word": "carotte", "russian_word": "морковь", "category": "food", "category_display": "Food", "level": 2, "level_display": "Nourriture", "comment": "Carrot", "tags": [ { "id": 18, "name": "food", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:50.323097Z", "updated_at": "2026-01-17T18:41:50.323114Z" } ], "created_at": "2026-01-17T18:41:50.370320Z", "updated_at": "2026-01-17T18:41:50.370331Z", "is_active": true }, { "id": 569, "french_word": "cerise", "russian_word": "вишня", "category": "food", "category_display": "Food", "level": 2, "level_display": "Nourriture", "comment": "Cherry", "tags": [ { "id": 18, "name": "food", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:50.323097Z", "updated_at": "2026-01-17T18:41:50.323114Z" } ], "created_at": "2026-01-17T18:41:50.389887Z", "updated_at": "2026-01-17T18:41:50.389898Z", "is_active": true }, { "id": 580, "french_word": "chou", "russian_word": "капуста", "category": "food", "category_display": "Food", "level": 2, "level_display": "Nourriture", "comment": "Cabbage", "tags": [ { "id": 18, "name": "food", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:50.323097Z", "updated_at": "2026-01-17T18:41:50.323114Z" } ], "created_at": "2026-01-17T18:41:50.445122Z", "updated_at": "2026-01-17T18:41:50.445135Z", "is_active": true }, { "id": 572, "french_word": "citron", "russian_word": "лимон", "category": "food", "category_display": "Food", "level": 2, "level_display": "Nourriture", "comment": "Lemon", "tags": [ { "id": 18, "name": "food", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:50.323097Z", "updated_at": "2026-01-17T18:41:50.323114Z" } ], "created_at": "2026-01-17T18:41:50.404811Z", "updated_at": "2026-01-17T18:41:50.404823Z", "is_active": true }, { "id": 585, "french_word": "concombre", "russian_word": "огурец", "category": "food", "category_display": "Food", "level": 2, "level_display": "Nourriture", "comment": "Cucumber", "tags": [ { "id": 18, "name": "food", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:50.323097Z", "updated_at": "2026-01-17T18:41:50.323114Z" } ], "created_at": "2026-01-17T18:41:50.477703Z", "updated_at": "2026-01-17T18:41:50.477727Z", "is_active": true }, { "id": 586, "french_word": "courgette", "russian_word": "кабачок", "category": "food", "category_display": "Food", "level": 2, "level_display": "Nourriture", "comment": "Zucchini", "tags": [ { "id": 18, "name": "food", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:50.323097Z", "updated_at": "2026-01-17T18:41:50.323114Z" } ], "created_at": "2026-01-17T18:41:50.483303Z", "updated_at": "2026-01-17T18:41:50.483323Z", "is_active": true }, { "id": 567, "french_word": "fraise", "russian_word": "клубника", "category": "food", "category_display": "Food", "level": 2, "level_display": "Nourriture", "comment": "Strawberry", "tags": [ { "id": 18, "name": "food", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:50.323097Z", "updated_at": "2026-01-17T18:41:50.323114Z" } ], "created_at": "2026-01-17T18:41:50.379995Z", "updated_at": "2026-01-17T18:41:50.380009Z", "is_active": true }, { "id": 576, "french_word": "kiwi", "russian_word": "киви", "category": "food", "category_display": "Food", "level": 2, "level_display": "Nourriture", "comment": "Kiwi", "tags": [ { "id": 18, "name": "food", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:50.323097Z", "updated_at": "2026-01-17T18:41:50.323114Z" } ], "created_at": "2026-01-17T18:41:50.424181Z", "updated_at": "2026-01-17T18:41:50.424195Z", "is_active": true }, { "id": 573, "french_word": "lime", "russian_word": "лайм", "category": "food", "category_display": "Food", "level": 2, "level_display": "Nourriture", "comment": "Lime", "tags": [ { "id": 18, "name": "food", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:50.323097Z", "updated_at": "2026-01-17T18:41:50.323114Z" } ], "created_at": "2026-01-17T18:41:50.409531Z", "updated_at": "2026-01-17T18:41:50.409543Z", "is_active": true }, { "id": 575, "french_word": "mangue", "russian_word": "манго", "category": "food", "category_display": "Food", "level": 2, "level_display": "Nourriture", "comment": "Mango", "tags": [ { "id": 18, "name": "food", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:50.323097Z", "updated_at": "2026-01-17T18:41:50.323114Z" } ], "created_at": "2026-01-17T18:41:50.419216Z", "updated_at": "2026-01-17T18:41:50.419227Z", "is_active": true }, { "id": 578, "french_word": "melon", "russian_word": "дыня", "category": "food", "category_display": "Food", "level": 2, "level_display": "Nourriture", "comment": "Melon", "tags": [ { "id": 18, "name": "food", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:50.323097Z", "updated_at": "2026-01-17T18:41:50.323114Z" } ], "created_at": "2026-01-17T18:41:50.435209Z", "updated_at": "2026-01-17T18:41:50.435219Z", "is_active": true }, { "id": 582, "french_word": "oignon", "russian_word": "лук", "category": "food", "category_display": "Food", "level": 2, "level_display": "Nourriture", "comment": "Onion", "tags": [ { "id": 18, "name": "food", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:50.323097Z", "updated_at": "2026-01-17T18:41:50.323114Z" } ], "created_at": "2026-01-17T18:41:50.454882Z", "updated_at": "2026-01-17T18:41:50.454894Z", "is_active": true }, { "id": 563, "french_word": "orange", "russian_word": "апельсин", "category": "food", "category_display": "Food", "level": 2, "level_display": "Nourriture", "comment": "Orange", "tags": [ { "id": 18, "name": "food", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:50.323097Z", "updated_at": "2026-01-17T18:41:50.323114Z" } ], "created_at": "2026-01-17T18:41:50.359243Z", "updated_at": "2026-01-17T18:41:50.359266Z", "is_active": true }, { "id": 577, "french_word": "pastèque", "russian_word": "арбуз", "category": "food", "category_display": "Food", "level": 2, "level_display": "Nourriture", "comment": "Watermelon", "tags": [ { "id": 18, "name": "food", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:50.323097Z", "updated_at": "2026-01-17T18:41:50.323114Z" } ], "created_at": "2026-01-17T18:41:50.430323Z", "updated_at": "2026-01-17T18:41:50.430333Z", "is_active": true }, { "id": 571, "french_word": "poire", "russian_word": "груша", "category": "food", "category_display": "Food", "level": 2, "level_display": "Nourriture", "comment": "Pear", "tags": [ { "id": 18, "name": "food", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:50.323097Z", "updated_at": "2026-01-17T18:41:50.323114Z" } ], "created_at": "2026-01-17T18:41:50.400073Z", "updated_at": "2026-01-17T18:41:50.400085Z", "is_active": true }, { "id": 584, "french_word": "poivron", "russian_word": "перец", "category": "food", "category_display": "Food", "level": 2, "level_display": "Nourriture", "comment": "Bell pepper", "tags": [ { "id": 18, "name": "food", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:50.323097Z", "updated_at": "2026-01-17T18:41:50.323114Z" } ], "created_at": "2026-01-17T18:41:50.471284Z", "updated_at": "2026-01-17T18:41:50.471314Z", "is_active": true }, { "id": 561, "french_word": "pomme", "russian_word": "яблоко", "category": "food", "category_display": "Food", "level": 2, "level_display": "Nourriture", "comment": "Apple", "tags": [ { "id": 18, "name": "food", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:50.323097Z", "updated_at": "2026-01-17T18:41:50.323114Z" } ], "created_at": "2026-01-17T18:41:50.346357Z", "updated_at": "2026-01-17T18:41:50.346377Z", "is_active": true }, { "id": 566, "french_word": "pomme de terre", "russian_word": "картофель", "category": "food", "category_display": "Food", "level": 2, "level_display": "Nourriture", "comment": "Potato", "tags": [ { "id": 18, "name": "food", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:50.323097Z", "updated_at": "2026-01-17T18:41:50.323114Z" } ], "created_at": "2026-01-17T18:41:50.375151Z", "updated_at": "2026-01-17T18:41:50.375164Z", "is_active": true }, { "id": 570, "french_word": "pêche", "russian_word": "персик", "category": "food", "category_display": "Food", "level": 2, "level_display": "Nourriture", "comment": "Peach", "tags": [ { "id": 18, "name": "food", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:50.323097Z", "updated_at": "2026-01-17T18:41:50.323114Z" } ], "created_at": "2026-01-17T18:41:50.394745Z", "updated_at": "2026-01-17T18:41:50.394758Z", "is_active": true }, { "id": 568, "french_word": "raisin", "russian_word": "виноград", "category": "food", "category_display": "Food", "level": 2, "level_display": "Nourriture", "comment": "Grape", "tags": [ { "id": 18, "name": "food", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:50.323097Z", "updated_at": "2026-01-17T18:41:50.323114Z" } ], "created_at": "2026-01-17T18:41:50.384994Z", "updated_at": "2026-01-17T18:41:50.385014Z", "is_active": true }, { "id": 564, "french_word": "tomate", "russian_word": "помидор", "category": "food", "category_display": "Food", "level": 2, "level_display": "Nourriture", "comment": "Tomato", "tags": [ { "id": 18, "name": "food", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:50.323097Z", "updated_at": "2026-01-17T18:41:50.323114Z" } ], "created_at": "2026-01-17T18:41:50.365148Z", "updated_at": "2026-01-17T18:41:50.365165Z", "is_active": true }, { "id": 581, "french_word": "épinard", "russian_word": "шпинат", "category": "food", "category_display": "Food", "level": 2, "level_display": "Nourriture", "comment": "Spinach", "tags": [ { "id": 18, "name": "food", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:50.323097Z", "updated_at": "2026-01-17T18:41:50.323114Z" } ], "created_at": "2026-01-17T18:41:50.449923Z", "updated_at": "2026-01-17T18:41:50.449936Z", "is_active": true } ], "steps": [ { "id": 152, "sub_level": 39, "order": 1, "step_type": "learning_card", "step_type_display": "Learning Card", "title": "Introduction à Vocabulaire des fruits et légumes", "description": "Fruits et légumes\n\nApprenez le vocabulaire de vocabulaire des fruits et légumes en russe.", "is_required": true, "config": { "content": "Fruits et légumes\n\nApprenez le vocabulaire de vocabulaire des fruits et légumes en russe.", "concept_type": "vocabulary" }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:50.770579Z", "updated_at": "2026-01-17T18:41:50.770595Z" }, { "id": 153, "sub_level": 39, "order": 2, "step_type": "game_flashcard", "step_type_display": "Game - Flashcard", "title": "Exercice 1 - Flashcard", "description": "Exercice 1 - Flashcard", "is_required": false, "config": { "game_mode": "flashcard", "instructions": "Pratiquez le vocabulaire de vocabulaire des fruits et légumes avec le mode flashcard.", "min_score": 70, "level": 2, "sub_level": 1 }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:50.774266Z", "updated_at": "2026-01-17T18:41:50.774277Z" }, { "id": 154, "sub_level": 39, "order": 3, "step_type": "game_matching", "step_type_display": "Game - Matching", "title": "Exercice 2 - Matching", "description": "Exercice 2 - Matching", "is_required": false, "config": { "game_mode": "matching", "instructions": "Pratiquez le vocabulaire de vocabulaire des fruits et légumes avec le mode matching.", "min_score": 70, "level": 2, "sub_level": 1 }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:50.777524Z", "updated_at": "2026-01-17T18:41:50.777534Z" }, { "id": 155, "sub_level": 39, "order": 4, "step_type": "game_multiple_choice", "step_type_display": "Game - Multiple Choice", "title": "Exercice 3 - Multiple Choice", "description": "Exercice 3 - Multiple Choice", "is_required": false, "config": { "game_mode": "multiple_choice", "instructions": "Pratiquez le vocabulaire de vocabulaire des fruits et légumes avec le mode multiple_choice.", "min_score": 70, "level": 2, "sub_level": 1 }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:50.780741Z", "updated_at": "2026-01-17T18:41:50.780751Z" } ], "videos": [], "learning_cards": [ { "id": 152, "sub_level": 39, "order": 1, "step_type": "learning_card", "step_type_display": "Learning Card", "title": "Introduction à Vocabulaire des fruits et légumes", "description": "Fruits et légumes\n\nApprenez le vocabulaire de vocabulaire des fruits et légumes en russe.", "is_required": true, "config": { "content": "Fruits et légumes\n\nApprenez le vocabulaire de vocabulaire des fruits et légumes en russe.", "concept_type": "vocabulary" }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:50.770579Z", "updated_at": "2026-01-17T18:41:50.770595Z" } ], "exercises": [], "total_words": 27, "is_unlocked": false, "is_completed": false, "progress": { "words_mastered": 0, "total_words": 27, "completion_percentage": 0.0, "steps": [] }, "is_active": true, "created_at": "2026-01-17T18:41:50.760298Z", "updated_at": "2026-01-17T18:41:50.760310Z" }, { "id": 40, "level": 9, "level_display": "Nourriture", "sub_level": 2, "title": "Vocabulaire des produits de base", "description": "Produits de base", "order": 2, "word_pairs": [ { "id": 592, "french_word": "beurre", "russian_word": "масло", "category": "food", "category_display": "Food", "level": 2, "level_display": "Nourriture", "comment": "Butter", "tags": [ { "id": 18, "name": "food", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:50.323097Z", "updated_at": "2026-01-17T18:41:50.323114Z" } ], "created_at": "2026-01-17T18:41:50.517419Z", "updated_at": "2026-01-17T18:41:50.517461Z", "is_active": true }, { "id": 603, "french_word": "confiture", "russian_word": "варенье", "category": "food", "category_display": "Food", "level": 2, "level_display": "Nourriture", "comment": "Jam", "tags": [ { "id": 18, "name": "food", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:50.323097Z", "updated_at": "2026-01-17T18:41:50.323114Z" } ], "created_at": "2026-01-17T18:41:50.581522Z", "updated_at": "2026-01-17T18:41:50.581542Z", "is_active": true }, { "id": 601, "french_word": "crème", "russian_word": "сливки", "category": "food", "category_display": "Food", "level": 2, "level_display": "Nourriture", "comment": "Cream", "tags": [ { "id": 18, "name": "food", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:50.323097Z", "updated_at": "2026-01-17T18:41:50.323114Z" } ], "created_at": "2026-01-17T18:41:50.570898Z", "updated_at": "2026-01-17T18:41:50.570918Z", "is_active": true }, { "id": 589, "french_word": "eau", "russian_word": "вода", "category": "food", "category_display": "Food", "level": 2, "level_display": "Nourriture", "comment": "Water", "tags": [ { "id": 18, "name": "food", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:50.323097Z", "updated_at": "2026-01-17T18:41:50.323114Z" } ], "created_at": "2026-01-17T18:41:50.500661Z", "updated_at": "2026-01-17T18:41:50.500682Z", "is_active": true }, { "id": 597, "french_word": "farine", "russian_word": "мука", "category": "food", "category_display": "Food", "level": 2, "level_display": "Nourriture", "comment": "Flour", "tags": [ { "id": 18, "name": "food", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:50.323097Z", "updated_at": "2026-01-17T18:41:50.323114Z" } ], "created_at": "2026-01-17T18:41:50.545223Z", "updated_at": "2026-01-17T18:41:50.545246Z", "is_active": true }, { "id": 591, "french_word": "fromage", "russian_word": "сыр", "category": "food", "category_display": "Food", "level": 2, "level_display": "Nourriture", "comment": "Cheese", "tags": [ { "id": 18, "name": "food", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:50.323097Z", "updated_at": "2026-01-17T18:41:50.323114Z" } ], "created_at": "2026-01-17T18:41:50.512023Z", "updated_at": "2026-01-17T18:41:50.512043Z", "is_active": true }, { "id": 593, "french_word": "huile", "russian_word": "масло", "category": "food", "category_display": "Food", "level": 2, "level_display": "Nourriture", "comment": "Oil", "tags": [ { "id": 18, "name": "food", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:50.323097Z", "updated_at": "2026-01-17T18:41:50.323114Z" } ], "created_at": "2026-01-17T18:41:50.522832Z", "updated_at": "2026-01-17T18:41:50.522852Z", "is_active": true }, { "id": 590, "french_word": "lait", "russian_word": "молоко", "category": "food", "category_display": "Food", "level": 2, "level_display": "Nourriture", "comment": "Milk", "tags": [ { "id": 18, "name": "food", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:50.323097Z", "updated_at": "2026-01-17T18:41:50.323114Z" } ], "created_at": "2026-01-17T18:41:50.506477Z", "updated_at": "2026-01-17T18:41:50.506500Z", "is_active": true }, { "id": 602, "french_word": "miel", "russian_word": "мёд", "category": "food", "category_display": "Food", "level": 2, "level_display": "Nourriture", "comment": "Honey", "tags": [ { "id": 18, "name": "food", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:50.323097Z", "updated_at": "2026-01-17T18:41:50.323114Z" } ], "created_at": "2026-01-17T18:41:50.576114Z", "updated_at": "2026-01-17T18:41:50.576135Z", "is_active": true }, { "id": 588, "french_word": "pain", "russian_word": "хлеб", "category": "food", "category_display": "Food", "level": 2, "level_display": "Nourriture", "comment": "Bread", "tags": [ { "id": 18, "name": "food", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:50.323097Z", "updated_at": "2026-01-17T18:41:50.323114Z" } ], "created_at": "2026-01-17T18:41:50.495170Z", "updated_at": "2026-01-17T18:41:50.495190Z", "is_active": true }, { "id": 596, "french_word": "poivre", "russian_word": "перец", "category": "food", "category_display": "Food", "level": 2, "level_display": "Nourriture", "comment": "Pepper", "tags": [ { "id": 18, "name": "food", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:50.323097Z", "updated_at": "2026-01-17T18:41:50.323114Z" } ], "created_at": "2026-01-17T18:41:50.539075Z", "updated_at": "2026-01-17T18:41:50.539097Z", "is_active": true }, { "id": 614, "french_word": "pâtes", "russian_word": "макароны", "category": "food", "category_display": "Food", "level": 2, "level_display": "Nourriture", "comment": "Pasta", "tags": [ { "id": 18, "name": "food", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:50.323097Z", "updated_at": "2026-01-17T18:41:50.323114Z" } ], "created_at": "2026-01-17T18:41:50.646539Z", "updated_at": "2026-01-17T18:41:50.646555Z", "is_active": true }, { "id": 613, "french_word": "riz", "russian_word": "рис", "category": "food", "category_display": "Food", "level": 2, "level_display": "Nourriture", "comment": "Rice", "tags": [ { "id": 18, "name": "food", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:50.323097Z", "updated_at": "2026-01-17T18:41:50.323114Z" } ], "created_at": "2026-01-17T18:41:50.641670Z", "updated_at": "2026-01-17T18:41:50.641684Z", "is_active": true }, { "id": 595, "french_word": "sel", "russian_word": "соль", "category": "food", "category_display": "Food", "level": 2, "level_display": "Nourriture", "comment": "Salt", "tags": [ { "id": 18, "name": "food", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:50.323097Z", "updated_at": "2026-01-17T18:41:50.323114Z" } ], "created_at": "2026-01-17T18:41:50.533791Z", "updated_at": "2026-01-17T18:41:50.533815Z", "is_active": true }, { "id": 594, "french_word": "sucre", "russian_word": "сахар", "category": "food", "category_display": "Food", "level": 2, "level_display": "Nourriture", "comment": "Sugar", "tags": [ { "id": 18, "name": "food", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:50.323097Z", "updated_at": "2026-01-17T18:41:50.323114Z" } ], "created_at": "2026-01-17T18:41:50.528573Z", "updated_at": "2026-01-17T18:41:50.528592Z", "is_active": true }, { "id": 600, "french_word": "yaourt", "russian_word": "йогурт", "category": "food", "category_display": "Food", "level": 2, "level_display": "Nourriture", "comment": "Yogurt", "tags": [ { "id": 18, "name": "food", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:50.323097Z", "updated_at": "2026-01-17T18:41:50.323114Z" } ], "created_at": "2026-01-17T18:41:50.565762Z", "updated_at": "2026-01-17T18:41:50.565782Z", "is_active": true }, { "id": 598, "french_word": "œuf", "russian_word": "яйцо", "category": "food", "category_display": "Food", "level": 2, "level_display": "Nourriture", "comment": "Egg", "tags": [ { "id": 18, "name": "food", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:50.323097Z", "updated_at": "2026-01-17T18:41:50.323114Z" } ], "created_at": "2026-01-17T18:41:50.551070Z", "updated_at": "2026-01-17T18:41:50.551093Z", "is_active": true }, { "id": 599, "french_word": "œufs", "russian_word": "яйца", "category": "food", "category_display": "Food", "level": 2, "level_display": "Nourriture", "comment": "Eggs", "tags": [ { "id": 18, "name": "food", "category": "category", "category_display": "category", "description": "", "is_active": true, "created_at": "2026-01-17T18:41:50.323097Z", "updated_at": "2026-01-17T18:41:50.323114Z" } ], "created_at": "2026-01-17T18:41:50.560728Z", "updated_at": "2026-01-17T18:41:50.560751Z", "is_active": true } ], "steps": [ { "id": 156, "sub_level": 40, "order": 1, "step_type": "learning_card", "step_type_display": "Learning Card", "title": "Introduction à Vocabulaire des produits de base", "description": "Produits de base\n\nApprenez le vocabulaire de vocabulaire des produits de base en russe.", "is_required": true, "config": { "content": "Produits de base\n\nApprenez le vocabulaire de vocabulaire des produits de base en russe.", "concept_type": "vocabulary" }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:50.791506Z", "updated_at": "2026-01-17T18:41:50.791519Z" }, { "id": 157, "sub_level": 40, "order": 2, "step_type": "game_flashcard", "step_type_display": "Game - Flashcard", "title": "Exercice 1 - Flashcard", "description": "Exercice 1 - Flashcard", "is_required": false, "config": { "game_mode": "flashcard", "instructions": "Pratiquez le vocabulaire de vocabulaire des produits de base avec le mode flashcard.", "min_score": 70, "level": 2, "sub_level": 2 }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:50.794864Z", "updated_at": "2026-01-17T18:41:50.794876Z" }, { "id": 158, "sub_level": 40, "order": 3, "step_type": "game_matching", "step_type_display": "Game - Matching", "title": "Exercice 2 - Matching", "description": "Exercice 2 - Matching", "is_required": false, "config": { "game_mode": "matching", "instructions": "Pratiquez le vocabulaire de vocabulaire des produits de base avec le mode matching.", "min_score": 70, "level": 2, "sub_level": 2 }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:50.798017Z", "updated_at": "2026-01-17T18:41:50.798030Z" }, { "id": 159, "sub_level": 40, "order": 4, "step_type": "game_multiple_choice", "step_type_display": "Game - Multiple Choice", "title": "Exercice 3 - Multiple Choice", "description": "Exercice 3 - Multiple Choice", "is_required": false, "config": { "game_mode": "multiple_choice", "instructions": "Pratiquez le vocabulaire de vocabulaire des produits de base avec le mode multiple_choice.", "min_score": 70, "level": 2, "sub_level": 2 }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:50.801225Z", "updated_at": "2026-01-17T18:41:50.801238Z" } ], "videos": [], "learning_cards": [ { "id": 156, "sub_level": 40, "order": 1, "step_type": "learning_card", "step_type_display": "Learning Card", "title": "Introduction à Vocabulaire des produits de base", "description": "Produits de base\n\nApprenez le vocabulaire de vocabulaire des produits de base en russe.", "is_required": true, "config": { "content": "Produits de base\n\nApprenez le vocabulaire de vocabulaire des produits de base en russe.", "concept_type": "vocabulary" }, "is_active": true, "is_completed": false, "progress": { "is_completed": false, "completed_at": null, "score": null, "attempts": 0, "best_score": null }, "created_at": "2026-01-17T18:41:50.791506Z", "updated_at": "2026-01-17T18:41:50.791519Z" } ], "exercises": [], "total_words": 18, "is_unlocked": false, "is_completed": false, "progress": { "words_mastered": 0, "total_words": 18, "completion_percentage": 0.0, "steps": [] }, "is_active": true, "created_at": "2026-01-17T18:41:50.783418Z", "updated_at": "2026-01-17T18:41:50.783438Z" } ] }