From b0587a42d8ef42911d5798f20a5225cf220863b2 Mon Sep 17 00:00:00 2001 From: AliReza_Zareian Date: Tue, 11 Aug 2026 16:54:25 +0330 Subject: [PATCH] Update README.md --- README.md | 66 +++++++++++++++++++++++++++---------------------------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/README.md b/README.md index 27ae74b..62ca4cb 100644 --- a/README.md +++ b/README.md @@ -1,45 +1,45 @@ -# Tadrisino API — فاز ۱ (۴ از ۱۱ اپ) +Tadrisino API -پیاده‌سازی اولیه‌ی ۴ اپ اول (از ۱۱ اپ طراحی‌شده): `accounts`, `content`, `progress`, `ai_tutor`. -بقیه‌ی اپ‌ها (subscription, payment, discount, affiliate, support, notifications, family) در فاز بعدی اضافه می‌شن. +Backend پروژه Tadrisino با Django و Django REST Framework پیاده‌سازی شده و شامل بخش‌های اصلی احراز هویت، محتوای آموزشی، پیشرفت کاربر، اشتراک، پرداخت، تخفیف، پشتیبانی، اعلان‌ها، خانواده و سیستم‌های مرتبط است. -## اجرا +اجرا -```bash python3 -m venv venv -source venv/bin/activate # ویندوز: venv\Scripts\activate +source venv/bin/activate pip install -r requirements.txt python manage.py migrate -python manage.py createsuperuser # اختیاری، برای /admin +python manage.py createsuperuser python manage.py runserver -``` -## تست با Swagger -مرورگر: **http://127.0.0.1:8000/api/docs/** -(Redoc هم هست: `/api/redoc/`، و پنل ادمین: `/admin/`) +مستندات API -## جریان تست پیشنهادی -1. `POST /api/auth/session` با `{"type":"guest","deviceId":"d_test1"}` → یک `token` می‌گیرید. -2. توی Swagger روی دکمه‌ی **Authorize** بزنید و فقط خودِ `token` رو بدون کلمه‌ی Bearer وارد کنید. -3. حالا endpointهای نیازمند auth (مثل `/api/user/grade`, `/api/user/summary`, `/api/ai/ask`) کار می‌کنن. -4. برای تست لاگین با شماره: `POST /api/auth/otp/request` بزنید (کد OTP رو در پاسخ برمی‌گردونه چون SMS واقعی وصل نیست)، یا مستقیم کد **0000** رو با هر شماره‌ای در `/api/auth/login` امتحان کنید (فقط در حالت توسعه). -5. برای تست محتوا: از پنل `/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` رو تست کنید. +Swagger: -## نکات مهم / اصلاحات نسبت به سند اولیه -- **مدل `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 واقعی). +http://127.0.0.1:8000/api/docs/ -## ساختار -``` -config/ تنظیمات پروژه (settings, urls اصلی) -accounts/ Identity & Profile -content/ Curriculum -progress/ Progress & Gamification -ai_tutor/ AI Tutor -``` +Redoc: -## اپ‌های باقی‌مونده (فاز بعدی) -subscription, payment, discount, affiliate, support, notifications, family +http://127.0.0.1:8000/api/redoc/ + +پنل مدیریت: + +http://127.0.0.1:8000/admin/ + +ساختار پروژه + +config/ +accounts/ +content/ +progress/ +ai_tutor/ +subscription/ +payment/ +discount/ +affiliate/ +support/ +notifications/ +family/ + +هر بخش دارای مدل‌ها، serializerها، viewها، URLها، migration و تنظیمات مربوط به خود است. + +برای تست API می‌توان از Swagger و همچنین پنل مدیریت Django استفاده کرد. \ No newline at end of file