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.2.2
whitenoise==6.11.0
# سرور با همین اجرا می‌شود (یونیتِ systemd آن را از venv صدا می‌زند؛ تنظیمات در gunicorn.conf.py).
gunicorn==26.2.0
# وابستگیِ غیرمستقیمِ requests و qdrant-client؛ نسخه‌های پایین‌تر آسیب‌پذیریِ شناخته‌شده دارند
# (GHSA-8988-9cw3-xx77، GHSA-vxq7-64xx-v4gw، GHSA-gh4c-6fx4-qh6g).
urllib3==2.8.0

# نسخه‌ها همان‌هایی‌اند که روی سرور نصب بود (۲۰۲۶-۱۰-۰۷، pip freeze)؛ ارتقا یعنی عوض‌کردنِ عمدیِ یک خط.
# RAG / AI tutor (اپ rag). کلاینت‌ها lazy import می‌شن؛ نبودِ این‌ها فقط
# مسیرِ RAG رو از کار می‌ندازه، نه بقیه‌ی پروژه رو.
openai==2.54.0
qdrant-client==1.19.0

# فقط برای ingestِ PDF (اختیاری). pdf2image به poppler سیستمی نیاز داره
# (macOS: brew install poppler). نبودشون فقط endpointِ /api/rag/ingest/pdf
# رو با خطای صریح از کار می‌ندازه.
pymupdf==1.28.2
pdf2image==1.17.0
pillow==12.3.0
psycopg[binary]==3.3.6
# pool اتصالِ Postgres (OPTIONS.pool در config/settings.py). یک بار با pip نصب می‌شود؛ deploy.sh در
# دیپلوهای بعد فقط «already satisfied» می‌گوید.
psycopg-pool==3.3.3
