02d40e1238a05b58e8e8f3813c76137eaccbbfc1
Tadrisino API
بکاند اپلیکیشن آموزشی Tadrisino — Django + Django REST Framework.
احراز هویت با OTP، محتوای درسی و پیشرفت کاربر، دستیار هوش مصنوعی، اشتراک و پرداخت، تخفیف، اعلانها، همکاری در فروش، پشتیبانی و حساب خانواده.
اجرا
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
مستندات API
| Swagger UI | http://127.0.0.1:8000/api/docs/ |
| Redoc | http://127.0.0.1:8000/api/redoc/ |
| پنل ادمین | http://127.0.0.1:8000/admin/ |
شروع سریع در Swagger:
POST /api/auth/sessionبا{"type":"guest","deviceId":"d_test1"}→ یکtokenبگیرید.- روی دکمهی Authorize بزنید و فقط خودِ
tokenرو (بدون کلمهی Bearer) وارد کنید. - برای تست لاگین با شماره:
POST /api/auth/otp/requestبزنید، یا در محیط توسعه کد 0000 رو با هر شمارهای در/api/auth/loginامتحان کنید.
ساختار پروژه
| اپ | مسئولیت | مدلهای اصلی |
|---|---|---|
accounts |
هویت کاربر و session | User, Profile, Session, OTPCode |
content |
محتوای درسی و پیشرفت روی درس | Grade, Unit, Node, Lesson, Question, Choice, NodeProgress |
progress |
آمار، لیدربرد، streak | UserStats, LeaderboardEntry, StreakRecord, UserHearts |
ai_tutor |
دستیار هوش مصنوعی | Conversation, Message, MessageFeedback |
subscription |
پلن و اشتراک | Plan, Subscription |
payment |
سفارش و تراکنش | Order, Transaction |
discount |
کد تخفیف و آفر | DiscountCode, Redemption, Offer, UserOffer |
notifications |
اعلانها | Notification |
affiliate |
همکاری در فروش | AffiliateAccount, Conversion |
support |
تیکت و گزارش باگ | BugReport, Ticket, TicketMessage |
family |
حساب خانواده / کنترل والدین | FamilyLink, ParentalSettings, WeeklyReportLog |
statuslog |
لاگ عمومی تغییر status، مستقل از بقیهی اپها | StatusChangeLog |
config |
تنظیمات و url های اصلی پروژه | — |
نکات فنی مهم
- احراز هویت: Bearer token امضاشده و stateless (
django.core.signing، بدون کتابخانهی JWT خارجی)، هماهنگ با مدلSession. accounts.UserعمداًAUTH_USER_MODELجنگو نیست؛ یک مدل بیزنسی مستقل است.- بین اپها بهجای FK واقعی از ارجاع سبک (
user_id,object_id+label) استفاده شده تا هر اپ در آینده قابل جدا شدن باشد. POST /api/ai/askفعلاً پاسخ stub برمیگرداند؛ محل اتصال مدل واقعی درai_tutor/views.py(تابعgenerate_tutor_answer) مشخص شده.DEV_MASTER_OTP(کد0000) فقط برای تست در توسعه است — پیش از دیپلوی پروداکشن باید حذف یا بهDEBUGمقیّد شود.
قبل از دیپلوی پروداکشن
DEBUG = FalseوSECRET_KEYاز env- حذف/مقیّدسازی
DEV_MASTER_OTPبه محیط توسعه - rate limit روی
auth/otp/requestوauth/login - دیتابیس Postgres بهجای SQLite
Description
Languages
Python
96.8%
Shell
2.2%
HTML
0.9%