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:

  1. POST /api/auth/session با {"type":"guest","deviceId":"d_test1"} → یک token بگیرید.
  2. روی دکمه‌ی Authorize بزنید و فقط خودِ token رو (بدون کلمه‌ی Bearer) وارد کنید.
  3. برای تست لاگین با شماره: 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
No description provided
Readme 67 MiB
Languages
Python 96.8%
Shell 2.2%
HTML 0.9%