No LaTeX/markdown anywhere students read (seed, import, DB migration 0021, tutor history, frontend guard); quiz of an island is fixed per user again

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-12 12:15:28 +03:30
parent dd10ff83f4
commit e662914efc
11 changed files with 855 additions and 670 deletions

View File

@@ -460,8 +460,11 @@ anyone who can read this repo can forge a token for any user.**
عوض می‌شوند)، پس تنوعِ مفهومی کمتر از سوالِ دست‌نویس است.
- **`Question.figure`** (`content.0019`): همان قالبِ `Lesson.figures[].diagram`، با `rag.services.diagram.validate` در ورودِ فایل اعتبارسنجی می‌شود (شکلِ
نامعتبر فایل را رد می‌کند، نه بی‌صدا حذف). `/api/nodes/{id}/quiz` و `/api/lessons/{id}/questions` آن را برمی‌گردانند؛ فرانت (`QuizScreen`) زیرِ صورتِ سوال می‌کشد.
- **آزمونِ دوباره‌بازی** (`NodeQuizView`): مبنای درهم‌ریزی شمارِ آزمون‌های تمام‌شده‌ی کاربر روی همان جزیره است؛ رفرش همان آزمون را می‌دهد و بعد از پایان آزمونِ تازه.
بی‌`?seed=` و فقط برای کاربرِ واردشده. با استخرِ بزرگ معنی دارد؛ **نسنجیده** اثرش روی کشِ فرانت.
- **آزمونِ هر جزیره ثابت است** (تصمیمِ مالک ۲۰۲۶-۱۰-۱۲): مبنای درهم‌ریزی `nodeId:userId` است و هیچ‌چیزِ دیگری (شمارِ دفعات، زمان) در آن نیست؛ دانش‌آموز هر بار همان سوال‌ها را می‌بیند. `content/tests_node_completion.py::NodeQuizStabilityTests`.
- **هیچ LaTeX/markdownی به دانش‌آموز نمی‌رسد** (تصمیمِ مالک ۲۰۲۶-۱۰-۱۲): چهار لایه، هر چهار با یک تبدیل: (۱) `content/plain_math.py::convert` روی seed و روی ورودِ
سوال در `question_io`؛ (۲) migration `content.0021` روی سوال/گزینه/درس/پیام‌های دستیارِ دیتابیس (و حذفِ سوالِ تکراریِ بعد از تبدیل)؛ (۳) `rag.services.mathtext.to_plain`
روی پاسخِ زنده و تاریخچه‌ی دستیار (`ai_tutor/views.py`)؛ (۴) `MathApp_frontend/src/lib/plainMath.ts` در `MathText` به‌عنوانِ آخرین تور (دو پیاده‌سازی باید هم‌رفتار بمانند).
توانِ پیچیده به‌صورتِ «a به توانِ (…)» نوشته می‌شود، نه `^`. تست: `content/tests_plain_math.py` (seed بدونِ نشانه)، `ai_tutor/tests_plain_history.py`.
- جزیره‌های تمرین آخرِ هر فصل‌اند و قفلِ ترتیبی دارند؛ فصلِ اولِ هر کتاب رایگان است، پس تمرین‌هایش هم رایگان‌اند.
## کتاب‌ها (Subject)، جزیره‌های بیشتر و شکلِ درس‌های کتاب‌های تازه — ۲۰۲۶-۱۰-۱۲