Docs brought to the current state: CLAUDE.md rewritten, README formal, handbook and diagrams redrawn
- CLAUDE.md: 1,225 → ~430 lines, current state only (the dated status log stays in git history). Server rules moved to the top: what is ours on 249/247 and what is not, non-negotiable rules, announce-before-acting, password handling, and the full "deploy it" procedure with verification. - README: formal entry page with current numbers (10 grades, 18,522 questions, 61 API operations, 973 tests, PostgreSQL/Redis). - Removed docs/frontend/ (Figma-era guide with guest login and its own api.ts; the frontend repo has the real client). Swagger's external-docs link now points at the frontend repo. - architecture/operations/security/content-authoring/loadtest/textbooks: SQLite, guest login, demo accounts, question packs and the port-80 note replaced by what is true now. - Technical handbook text updated throughout; all seven diagrams redrawn (PostgreSQL, phone-only login, subscriptions, current data model); PDF rebuilt. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -10,13 +10,17 @@
|
||||
|
||||
| فایل | محتوا |
|
||||
|---|---|
|
||||
| `curriculum.json` | ۸ پایه، ۵۸ فصل، ۲۶۳ نود، ۲٬۶۱۷ درس |
|
||||
| `questions.json` | ۲٬۵۴۵ سوالِ چندگزینهای |
|
||||
| `curriculum.json` | ۱۰ پایه (سوم تا دوازدهم)، ۵ کتاب، ۸۹ فصل، ۱٬۱۴۵ جزیره، ۵٬۴۰۶ درس؛ با `subject`، متنِ درس، مثال، قدمها و شکلِ درس (`figures`) |
|
||||
| `questions.json` | ۱۸٬۵۲۲ سوالِ چهارگزینهای، بعضی با شکل (`figure`) |
|
||||
|
||||
هر فصل باید `subject` داشته باشد (ریاضی، حسابان، هندسه، آمار و احتمال، گسسته)؛ فایلِ بیآن رد میشود. شکلها
|
||||
(`Lesson.figures`، `Question.figure`) با `rag.services.diagram.validate` در ورود اعتبارسنجی میشوند و شکلِ نامعتبر کلِ
|
||||
فایل را رد میکند. هیچ LaTeX یا markdownی وارد نمیشود: `content/plain_math.py` متن را در ورود ساده میکند.
|
||||
|
||||
`deploy.sh` در هر انتشار `seed_content` را اجرا میکند، پس یک سرورِ تازه خودش
|
||||
را با یک فرمان پر میکند — **بدونِ Qdrant، بدونِ اعتبارِ API، بدونِ نشستِ SSH.**
|
||||
|
||||
> **کد و محتوا دو مسیرِ جدا دارند.** `db.sqlite3` در gitignore است. سوالی که
|
||||
> **کد و محتوا دو مسیرِ جدا دارند.** دیتابیس در گیت نیست. سوالی که
|
||||
> فقط در دیتابیسِ محلیِ شماست به سرور نمیرسد مگر از راهِ
|
||||
> `seed_content --export --only questions` و کامیتِ `content/seed/questions.json`.
|
||||
> پوش کردنِ کد بهتنهایی محتوا را نمیبرد.
|
||||
@@ -38,6 +42,10 @@
|
||||
دیتابیسِ بیمحتوا (سرورِ تازه) دفتر را نادیده میگیرد و همهچیز را از فایل میسازد.
|
||||
نتیجهاش این است که برای برگرداندنِ چیزی که در ادمین پاک شده، همانجا دوباره بسازیدش
|
||||
(یا ردیفِ `SeedRecord`ش را پاک کنید)؛ دیپلوی دیگر آن را برنمیگرداند.
|
||||
- **مثال، قدمها و شکلِ درس فقط در خانهی خالی نشانده میشوند.** برای عوض کردنِ شکلِ درسی که روی سرور هست، `figures`
|
||||
آن درس را در ادمین خالی کنید و دوباره دیپلو کنید. شناسهی درس روی سرور با لپتاپ فرق دارد.
|
||||
- **جزیرههای تمرین («تمرین: …») استثنا هستند:** گزینههای سوالِ موجودشان در جا (با همان شناسه) با فایل یکی میشود و
|
||||
سوالی که از فایل حذف شده و هنوز جوابی ندارد پاک میشود (`seed_sync._refresh_practice`). سوالِ دستیِ ادمین هرگز.
|
||||
|
||||
`seed_content --export` فایلها را از دیتابیسِ محلی بازنویسی میکند. اگر
|
||||
دیتابیس سوالی نداشته باشد از بازنویسیِ یک `questions.json` غیرخالی خودداری
|
||||
@@ -114,6 +122,12 @@ python manage.py generate_questions_from_chunks --subject ریاضی --grade ن
|
||||
`solution_verdict='agrees'` تضمینِ کامل نیست، فقط فیلترِ اول: چند بار خطای
|
||||
حسابِ خودِ کتاب در همین مرحله گرفته شده است.
|
||||
|
||||
## بازخوردِ دانشآموز
|
||||
|
||||
زیرِ هر سوالِ آزمون و هر درس سه دکمه است: «خوب بود»، «خوب نبود» و «گزارشِ ایراد». در ادمین، فهرستِ سوالها و درسها
|
||||
ستونِ 👍/👎 دارد و «گزارشهای سوال» و «گزارشهای درس» صفِ بررسیاند. اینها نخستین جاییاند که سوالِ غلط یا مبهم پیدا
|
||||
میشود.
|
||||
|
||||
## دادهی ساختگی برای توسعه
|
||||
|
||||
`seed_test_data` یک دیتاستِ کوچک و idempotent میسازد که همهی اپها را پوشش
|
||||
|
||||
Reference in New Issue
Block a user