e1d830f6a99eb27a805a1c67be14a483cd55ee2e
Tadrisino API — فاز ۱ (۴ از ۱۱ اپ)
پیادهسازی اولیهی ۴ اپ اول (از ۱۱ اپ طراحیشده): accounts, content, progress, ai_tutor.
بقیهی اپها (subscription, payment, discount, affiliate, support, notifications, family) در فاز بعدی اضافه میشن.
اجرا
python3 -m venv venv
source venv/bin/activate # ویندوز: venv\Scripts\activate
pip install -r requirements.txt
python manage.py migrate
python manage.py createsuperuser # اختیاری، برای /admin
python manage.py runserver
تست با Swagger
مرورگر: http://127.0.0.1:8000/api/docs/
(Redoc هم هست: /api/redoc/، و پنل ادمین: /admin/)
جریان تست پیشنهادی
POST /api/auth/sessionبا{"type":"guest","deviceId":"d_test1"}→ یکtokenمیگیرید.- توی Swagger روی دکمهی Authorize بزنید و فقط خودِ
tokenرو بدون کلمهی Bearer وارد کنید. - حالا endpointهای نیازمند auth (مثل
/api/user/grade,/api/user/summary,/api/ai/ask) کار میکنن. - برای تست لاگین با شماره:
POST /api/auth/otp/requestبزنید (کد OTP رو در پاسخ برمیگردونه چون SMS واقعی وصل نیست)، یا مستقیم کد 0000 رو با هر شمارهای در/api/auth/loginامتحان کنید (فقط در حالت توسعه). - برای تست محتوا: از پنل
/admin/چندGrade → Unit → Node → Lesson → Question → Choiceبسازید (حتماً یک Choice روis_correct=Trueکنید)، بعد/api/home?userId=1&grade=1،/api/lessons/{id}/questions،/api/questions/{id}/answer?userId=1رو تست کنید.
نکات مهم / اصلاحات نسبت به سند اولیه
- مدل
Choiceدر سند شما فیلدis_correctنداشت (خودتون هم توی سند بهش اشاره کرده بودید که شاید سهواً جا افتاده). بدون این فیلد امکان پیادهسازیPOST /api/questions/{id}/answerنبود، پس اضافهش کردم (کامنت توضیح درcontent/models.py). - احراز هویت: از یک Bearer token امضاشده و stateless (بدون کتابخونهی JWT خارجی، با
django.core.signing) استفاده شده که دقیقاً با فیلدهای مدلSessionشما (که فقطrefresh_tokenداره، نه access token) سازگاره. - اپ
accounts.UserعمداًAUTH_USER_MODELجنگو نیست؛ یک مدل بیزنسی مستقله، طبق طراحی خودتون. - endpoint
POST /api/ai/askفعلاً پاسخ stub برمیگردونه (بدون اتصال به مدل واقعی هوش مصنوعی) — محل اتصال با کامنت مشخص شده (ai_tutor/views.pyتابعgenerate_tutor_answer). - endpoint کمکی که در سند نبود ولی برای تستپذیری اضافه شد:
POST /api/auth/otp/request(گرفتن کد OTP بدون SMS واقعی).
ساختار
config/ تنظیمات پروژه (settings, urls اصلی)
accounts/ Identity & Profile
content/ Curriculum
progress/ Progress & Gamification
ai_tutor/ AI Tutor
اپهای باقیمونده (فاز بعدی)
subscription, payment, discount, affiliate, support, notifications, family
Description
Languages
Python
96.8%
Shell
2.2%
HTML
0.9%