سینیور خواست زودتر به فرانتاند وصل شویم تا از آنجا هم تست شود. اینها
سمتِ ما لازم بودند:
CORS با allowlist صریح (نه ALLOW_ALL): احرازِ هویتِ ما توکنِ Bearer در هدر
است، پس origin ناشناس نباید از مرورگرِ کاربر به API ما بزند.
CORS_ALLOW_CREDENTIALS عمداً خاموش میماند — کوکیای در کار نیست و روشن
کردنش فقط سطحِ حمله اضافه میکند. CorsMiddleware بالاتر از CommonMiddleware
گذاشته شد وگرنه ریدایرکتِ APPEND_SLASH و خطای ۴۰۰ هدرِ CORS نمیگیرند و در
مرورگر بهشکلِ خطای مبهمِ شبکه دیده میشوند.
PATCH /api/user/profile اضافه شد؛ تا پیش از این هیچ راهی برای ثبتِ نامِ
کاربر نبود. GET /api/home بدونِ پارامتر حالا پایهی ذخیرهشدهی کاربر را
برمیگرداند و POST /api/ai/ask فقط با lessonId کار میکند — هر دو برای
اینکه فرانت لازم نباشد پایه را خودش نگه دارد. questionCount به
lessons/{id}/intro اضافه شد.
docs/frontend/api.ts و README.md کلاینتِ تایپدار و راهنمای اتصالاند، از
روی OpenAPI واقعیِ همین سرویس تولید شدهاند.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
21 lines
690 B
Plaintext
21 lines
690 B
Plaintext
Django==5.2.17
|
|
djangorestframework==3.18.0
|
|
drf-spectacular==0.30.0
|
|
django-cors-headers==4.9.0
|
|
requests==2.33.1
|
|
redis==5.2.1
|
|
python-dotenv==1.0.1
|
|
whitenoise==6.11.0
|
|
|
|
# RAG / AI tutor (اپ rag). کلاینتها lazy import میشن؛ نبودِ اینها فقط
|
|
# مسیرِ RAG رو از کار میندازه، نه بقیهی پروژه رو.
|
|
openai>=1.40,<3
|
|
qdrant-client>=1.12
|
|
|
|
# فقط برای ingestِ PDF (اختیاری). pdf2image به poppler سیستمی نیاز داره
|
|
# (macOS: brew install poppler). نبودشون فقط endpointِ /api/rag/ingest/pdf
|
|
# رو با خطای صریح از کار میندازه.
|
|
pymupdf>=1.24
|
|
pdf2image>=1.17
|
|
pillow>=10
|