feat(lessons): implement comprehensive lesson configurator, session runner and AI debrief (Beta)

This commit is contained in:
2026-10-07 13:03:16 +03:00
parent 31e105b2c2
commit 718e9797eb
12 changed files with 4093 additions and 1 deletions
+34
View File
@@ -385,6 +385,40 @@ def _migrate(conn: sqlite3.Connection):
conn.execute("CREATE INDEX IF NOT EXISTS idx_bg_tasks_user_status ON background_tasks(user_id, status);")
conn.execute("CREATE INDEX IF NOT EXISTS idx_bg_tasks_status ON background_tasks(status);")
# Ensure lesson_presets and lesson_sessions tables exist (Lesson Configurator & Runner)
conn.execute("""
CREATE TABLE IF NOT EXISTS lesson_presets (
id INTEGER PRIMARY KEY AUTOINCREMENT,
user_id INTEGER NOT NULL,
name TEXT NOT NULL,
icon TEXT DEFAULT '🚀',
description TEXT DEFAULT '',
estimated_min INTEGER DEFAULT 15,
config_json TEXT NOT NULL,
is_default INTEGER DEFAULT 0,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
);
""")
conn.execute("CREATE INDEX IF NOT EXISTS idx_lesson_presets_user ON lesson_presets(user_id);")
conn.execute("""
CREATE TABLE IF NOT EXISTS lesson_sessions (
id INTEGER PRIMARY KEY AUTOINCREMENT,
user_id INTEGER NOT NULL,
preset_name TEXT NOT NULL,
duration_seconds INTEGER DEFAULT 0,
total_score INTEGER DEFAULT 0,
grade TEXT DEFAULT 'A',
steps_summary_json TEXT NOT NULL,
errors_json TEXT NOT NULL,
ai_report_json TEXT NOT NULL,
completed_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
);
""")
conn.execute("CREATE INDEX IF NOT EXISTS idx_lesson_sess_user_date ON lesson_sessions(user_id, completed_at DESC);")
# Repair legacy cards with placeholder blanks or mismatched context
repair_mismatched_cefr_contexts(conn)