Subjects per grade (math, calculus, geometry, stats, discrete), 5 new textbooks, 202 new islands, long islands split, hand-written figures and lesson texts for the new books

- content.Subject + Unit.subject, /api/home?subject=, tutor grounded in the chosen book
- 5 new books ingested; ~1150 hand-written questions, islands named by hand
- node_split: islands over 7 lessons split into parts of <=6 (lesson ids and progress kept)
- Lesson.figures hand-authored and visually checked for 653 lessons of the new books;
  gen_lesson_figures got --subject and survives network errors
- seed files re-exported

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-12 05:35:18 +03:30
parent 3d51b3b83a
commit 8cb1ecb85e
32 changed files with 81218 additions and 4486 deletions

View File

@@ -451,6 +451,24 @@ preferred setup, because there is then no key to leak. **Never let the server ru
`django-insecure-…` fallback from `config/settings.py`: that string is committed here, so
anyone who can read this repo can forge a token for any user.**
## کتاب‌ها (Subject)، جزیره‌های بیشتر و شکلِ درس‌های کتاب‌های تازه — ۲۰۲۶-۱۰-۱۲
- **`Subject`** (`content.0014..0018`): ریاضی، حسابان، هندسه، آمار و احتمال، گسسته؛ `Unit.subject` اجباری است.
`/api/home?subject=<key>` (کتابِ بی‌ربط ۴۰۰)؛ `subjects` در پاسخ فقط کتاب‌های همان پایه است (دهم: ریاضی و هندسه؛
یازدهم: حسابان، هندسه، آمار؛ دوازدهم: حسابان، هندسه، گسسته) و نوارِ فرانت (`SubjectBar`) فقط وقتی بیش از یکی باشد می‌آید.
فصلِ رایگان = اولین فصلِ **هر کتاب**. فایل‌های seed حالا `subject` دارند و بی‌آن رد می‌شوند.
- **پنج کتابِ تازه** (هندسه ۱۰/۱۱/۱۲، آمار ۱۱، گسسته ۱۲) روی Qdrant خوانده شده‌اند. ۲۰۲ جزیره‌ی تازه با نامِ دستی،
۱۱۳۰ + ۲۰ سوالِ نوشته‌ی خودم (حلِ مستقل، نه از کلیدِ کتاب)، و مثال/قدم برای همه‌ی درس‌های هندسه (و برای درس‌های آمار/گسسته‌ای که شکل دارند).
- **شکل‌ها را دستی نوشتم، نه با API.** `gen_lesson_figures` روی هندسه حدود نیمی غلط داد و کنار گذاشته شد (بازبینیِ چشمی). حالا
`Lesson.figures` برای ۵۰۳ درسِ هندسه (از ۵۸۹)، ۸۲ درسِ آمار و ۶۸ درسِ گسسته با مشخصه‌ی `rag.services.diagram` نوشته و با
`rag.services.diagram.validate` اعتبارسنجی شده؛ هر شکل با Chrome رندر و با چشم دیده شد (دو دور روی نمونه‌ی تصادفی).
ندارند: درس‌های جبریِ ماتریس‌ها، اثبات‌های جبری، چند درس‌ِ آمار/گسسته‌ی مفهومی.
جدول‌های درستی با `kind: table` کشیده شده‌اند؛ ترتیبِ ستون‌ها در پیش‌نمایشِ من راست‌به‌چپ بود (به نمایشِ زنده نگاه کن).
- **تقسیمِ جزیره‌ها** (`content/node_split.py`، `0018`): جزیره‌ی بیش از ۷ درس به قسمت‌های ≤۶ درسی شکسته می‌شود؛ شناسه‌ی درس
و پیشرفتِ کاربر حفظ می‌شود. نامِ قسمت‌ها در کتاب‌های قدیمی «عنوان (۲)…» است و دستی نام‌گذاری نشده.
- `gen_lesson_figures` حالا `--subject` دارد و خطای شبکه یک درس را رد می‌کند (کلِ اجرا نمی‌افتد). نکته: `--dry-run` هم API را صدا می‌زند.
- **سوالِ جزیره‌ها:** چهار جزیره‌ی تقسیم‌شده‌ی پایه‌های ۳ تا ۷ خالی بودند و سوال گرفتند؛ آزمونِ `test_every_topic_has_at_least_one_question` نگهشان می‌دارد.
## ظرفیت زیرِ بار — روی سرور از ۲۰۲۶-۱۰-۱۱ (بک‌اند `98bf05f`، فرانت `16cf5c9`)
گزارشِ سینیور: `~/Desktop/گزارشات Tadrisino/گزارش-۳۳/ظرفیتِ-اپ-زیرِ-بار.html` (و PDF). بکاپِ تغییرهای یک‌باره‌ی