-- 078_prep_tracks.sql -- Система «подготовка к направлению» (ЦТ и др.): флаг ученика + коллекция колод. -- -- МАСТЕР-ФЛАГ: запись student_prep(user_id, track) открывает ученику ВЕСЬ контент -- трека сразу — коллекцию флешкарт (flashcard_decks.collection), курс и пробники -- (content_type='course'/'exam'). Маппинг трек→контент — services/prepTracks.js; -- динамический резолв доступа — services/contentAccess.js (без материализации -- правил content_access) и flashcardController.deckAccess/listDecks. -- -- Управление флагом — учитель (своим ученикам) и админ (см. prepController.js). -- 1) Флаг подготовки ученика по треку. track — ключ направления ('ct-math', …). CREATE TABLE IF NOT EXISTS student_prep ( id INTEGER PRIMARY KEY AUTOINCREMENT, user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE, track TEXT NOT NULL, created_by INTEGER REFERENCES users(id) ON DELETE SET NULL, created_at TEXT NOT NULL DEFAULT (datetime('now')), UNIQUE (user_id, track) ); CREATE INDEX IF NOT EXISTS idx_student_prep_user ON student_prep(user_id); CREATE INDEX IF NOT EXISTS idx_student_prep_track ON student_prep(track); -- 2) Коллекция (папка/направление) колоды. NULL = вне коллекции (поведение как раньше). ALTER TABLE flashcard_decks ADD COLUMN collection TEXT; -- 3) Разметить существующие ЦТ-колоды коллекцией 'ct-math' (заголовки «ЦТ · …»). UPDATE flashcard_decks SET collection = 'ct-math' WHERE title LIKE 'ЦТ ·%';