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

@@ -61,7 +61,24 @@ class StatsSerializer(serializers.Serializer):
coins = serializers.IntegerField()
class SubjectSerializer(serializers.Serializer):
key = serializers.CharField(help_text='همان که به `?subject=` داده می‌شود.')
title = serializers.CharField()
icon = serializers.CharField(allow_blank=True, help_text='نامِ آیکنِ lucide.')
color = serializers.CharField(allow_blank=True)
order = serializers.IntegerField()
class HomeResponseSerializer(serializers.Serializer):
subject = SubjectSerializer(
allow_null=True,
help_text='کتابی که `units` از آن است؛ null فقط وقتی پایه هیچ فصلی ندارد.',
)
subjects = SubjectSerializer(
many=True,
help_text='همه‌ی کتاب‌های این پایه. فرانت نوارِ جابه‌جاییِ کتاب را فقط وقتی نشان می‌دهد '
'که بیش از یکی باشد.',
)
units = UnitWithNodesSerializer(many=True)
stats = StatsSerializer()