توضیحات

مستندات کامل API پروژه اتوماسیون ملک سلطانی — داشبورد مدیریت املاک


معرفی پروژه

اتوماسیون ملک سلطانی یک بک‌اند مبتنی بر Django REST Framework برای مدیریت روزمره دفاتر املاک است: احراز هویت، مدیریت مشاوران و منشی‌ها، ثبت/پیگیری فایل‌های ملکی، و داده‌های پایه (شهر، منطقه، نوع ملک، مالک).

تکنولوژی‌ها
  • Backend: Django + Django REST Framework
  • Database: PostgreSQL
  • Auth: JWT (SimpleJWT) + OTP
  • Cache: Django Cache Framework (LocMem در لوکال)
  • Docs: HTML Docs + Swagger/ReDoc (drf-spectacular)
  • Editor: CKEditor 5
ماژول‌ها
  • Accounts — OTP، JWT، me
  • RBAC — نقش سازمانی کارمند + دسترسی ریزدانه‌ای بخش‌ها
  • Agents — پروفایل مشاور
  • Properties — ملک + داده‌های پایه
  • Staff — پرسنل با نقش سازمانی (منشی، CRM، ...)
  • Tracking — رصد ملک بعد از تأیید (ورک‌لاین + مهلت‌ها)
  • Notifications — اعلان و badge
  • Notes — یادداشت شخصی روزانه
  • Tasks — تسک مرحله‌ای، ارجاع و پیگیری کامل
  • Reports — آمار داشبورد و گزارش‌های عملیاتی
  • Documents — همین مستندات
Base URL

مسیرها بدون پیشوند /api/ هستند:

http://127.0.0.1:8000/auth/
http://127.0.0.1:8000/agents/
http://127.0.0.1:8000/properties/
http://127.0.0.1:8000/staff/

Swagger: /api/schema/swagger-ui/ — ReDoc: /api/schema/redoc/

احراز هویت
  • Access Token: ۶۰ دقیقه
  • Refresh Token: ۳۰ روز
  • Header: Authorization: Bearer <access_token>

جزئیات در Accounts API.

نکات مهم فرانت
  • آپلود فایل‌ها با multipart/form-data
  • سایر درخواست‌ها با application/json
  • خطاها JSON هستند و معمولاً کلید detail یا فیلدبه فیلد
نمونه‌های خطا
400 Bad Request
{
  "title": ["این فیلد نمی‌تواند خالی باشد."],
  "location": ["منطقه انتخابی متعلق به شهر انتخابی نیست."]
}
401 Unauthorized
{"detail": "اعتبارنامه احراز هویت ارائه نشده است."}
403 Forbidden
{"detail": "شما دسترسی لازم را ندارید."}
404 Not Found
{"detail": "یافت نشد."}
429 Too Many Requests (OTP)
{"detail": "درخواست‌های شما بیش از حد مجاز است. لطفاً بعداً دوباره تلاش کنید."}
کدهای وضعیت
  • 200 OK — موفق / تکراری قابل ویرایش در create
  • 201 Created — ایجاد موفق
  • 204 No Content — حذف موفق
  • 400 / 401 / 403 / 404 / 429
Pagination

لیست املاک:

{
  "count": 150,
  "page": 1,
  "page_size": 20,
  "total_pages": 8,
  "next": 2,
  "previous": null,
  "results": []
}

نکته: next/previous شماره صفحه هستند نه URL.

نقش‌ها
نقشکاربرد
adminدسترسی کامل مدیریتی
staffمنشی؛ لیست املاک فقط ok؛ نوشتن داده‌های پایه
agentمشاور؛ فایل‌های خودش + خواندن داده‌های پایه
صفحات مستندات