Skip to content

Latest commit

 

History

History
286 lines (212 loc) · 16.7 KB

README_fa.md

File metadata and controls

286 lines (212 loc) · 16.7 KB

پیگیری مطالبات

این پروژه یک سیستم مدیریت و وبلاگ برای نمایش و مدیریت اطلاعات مناطق مختلف مانند شهرستان‌ها، شهرها، دهستان‌ها و روستاها است. برای هر منطقه، اطلاعاتی از قبیل فرصت‌ها، تهدیدها، ضعف‌ها و ظرفیت‌ها ثبت و مدیریت می‌شود.

پروژه مرتبط

این پروژه بک‌اند به وبسایتی که با Vue.js توسعه داده شده است، متصل و همگام‌سازی شده است. وبسایت به کاربران این امکان را می‌دهد که با بک‌اند ارتباط برقرار کرده و اطلاعات و خدمات مورد نیاز خود را دریافت کنند. برای کسب اطلاعات بیشتر درباره‌ی وبسایت Vue.js، لطفاً به پیگیری مطالبات مراجعه کنید.

ویژگی‌های پروژه

  • دسته‌بندی مناطق: شامل شهرستان‌ها، شهرها، دهستان‌ها، روستاها و ...
  • ویژگی‌های کلیدی: هر بخش دارای ویژگی‌های فرصت، تهدید، ضعف و ظرفیت است که هر کدام زیرویژگی‌های خاص خود را دارند.
  • اتصال زیرویژگی‌ها به مناطق: هر زیرویژگی به یک بخش از منطقه (مانند روستا یا شهر) متصل می‌شود و شامل اطلاعاتی مانند عنوان، توضیحات، عکس و ...
  • پاسخ‌دهی ارگان‌ها: برای هر ویژگی می‌توان مشخص کرد که کدام ارگان یا نهاد مسئول پاسخ‌دهی است و جواب آن‌ها نیز ذخیره می‌شود.
  • اطلاعات محله: شامل نام، عکس و افراد مشهور آن محله است.
  • شفافیت اطلاعات: تمامی اطلاعات از جمله ویژگی‌ها و پاسخ‌ها در بخش وبلاگ به‌صورت عمومی قابل مشاهده هستند تا شفافیت در ارائه اطلاعات به صورت تأکیدی رعایت شود.

مدل‌های کلیدی

1. APIKEY

این مدل برای مدیریت کلیدهای API استفاده می‌شود و مشخص می‌کند که کلید برای چه منظوری (پنل یا وبلاگ) مورد استفاده قرار می‌گیرد.

2. Character

این مدل شخصیت‌های مختلف را با سطوح دسترسی (مدیر اصلی، نماینده و مسئول) مشخص می‌کند. هر شخصیت یک سطح دسترسی دارد که تعیین می‌کند چه نوع دسترسی‌هایی به بخش‌های مختلف سیستم خواهد داشت.

3. Manager

مدل مدیران اطلاعات شخصی و حرفه‌ای مدیرانی که هر منطقه را مدیریت می‌کنند را ذخیره می‌کند. این اطلاعات شامل نام، شماره تماس، کد ملی، رمز عبور و شخصیت (character) مدیر است. همچنین امکان حذف و ویرایش مدیر وجود دارد.

4. LocationBelongToManager

این مدل نشان می‌دهد که کدام مدیر مسئول کدام منطقه است. ارتباط بین یک مدیر و مناطق تحت مدیریت او از طریق این مدل مدیریت می‌شود.

5. BigCity, City, CityPart, BigVillage, Village

این مدل‌ها به ترتیب برای ذخیره‌سازی اطلاعات مکان‌های مختلف از شهرهای بزرگ تا روستاها طراحی شده‌اند. هر مدل شامل اطلاعاتی مانند کد، نام، جمعیت، تعداد خانوارها، تصاویر و توضیحات درباره منطقه است. ارتباط بین مناطق مختلف نیز به کمک این مدل‌ها انجام می‌شود؛ مثلاً یک روستا به یک دهستان بزرگ و یک شهر به یک شهر بزرگ متصل می‌شود.

6. Proper

این مدل ویژگی‌های اضافی یا "خاص" مربوط به مکان‌ها و مردم را تعریف می‌کند. این ویژگی‌ها شامل اطلاعاتی مانند املاک، زیرساخت‌ها و ... می‌شوند که می‌توانند به مکان‌های مختلف مرتبط شوند.

7. PeopleBelongLocation

این مدل اطلاعات افراد مرتبط با یک منطقه خاص را ذخیره می‌کند، از جمله نام، خانواده، ویژگی خاص (Proper) و فایلی پیوست شده از آن شخص (اگر وجود داشته باشد). این مدل همچنین می‌تواند افراد مشهور یا مرتبط با آن منطقه را شناسایی کند.

8. Property و SubProperty

این مدل‌ها برای تعریف ویژگی‌های کلی و زیرویژگی‌ها (SubProperty) استفاده می‌شوند. ویژگی‌هایی مانند فرصت‌ها، تهدیدها، ضعف‌ها و ظرفیت‌ها از طریق این مدل‌ها مدیریت می‌شوند و به هر مکان خاصی (مانند روستا، شهر یا دهستان) متصل می‌شوند.

9. PropertyBelongPlace

این مدل ویژگی‌های خاصی (مانند زیرساخت‌ها، فرصت‌های اقتصادی و ...) را به مکان‌های خاص متصل می‌کند. این مدل شامل اطلاعاتی مانند عنوان ویژگی، توضیحات، تصاویر و وضعیت خصوصی یا عمومی بودن ویژگی است.

10. AnswerToProperty

این مدل پاسخ‌هایی که توسط ارگان‌ها یا مدیران به هر ویژگی خاص داده می‌شود را ذخیره می‌کند. پاسخ‌ها شامل محتوا، فایل‌های پیوست و زمان ویرایش آخرین پاسخ هستند.

11. RedundantInformation

این مدل اطلاعات اضافی و غیرضروری مربوط به مکان‌های مختلف را ذخیره می‌کند. اطلاعاتی که ممکن است در ابتدا ضروری به نظر نرسند ولی در آینده مفید واقع شوند.

12. ReInformationValue

این مدل برای ذخیره مقادیر مرتبط با اطلاعات اضافی از مدل "RedundantInformation" استفاده می‌شود. هر مقدار اضافی به یک مکان خاص (مانند شهر یا روستا) تعلق دارد و مقدار آن به صورت متنی ذخیره می‌شود.

13. Section

این مدل برای تعریف بخش‌های مختلف سیستم استفاده می‌شود. هر شخصیت در سیستم می‌تواند دسترسی به بخش‌های خاصی از طریق این مدل داشته باشد.

14. AccessCharacter

این مدل مشخص می‌کند که هر شخصیت به کدام بخش‌ها از سیستم دسترسی دارد. برای مثال، یک مدیر ارشد ممکن است دسترسی به همه بخش‌ها داشته باشد در حالی که یک مسئول فقط به بخش خاصی دسترسی دارد.

15. ExportPropertyList

این مدل لیست ویژگی‌های مرتبط با مکان‌ها را برای صدور (Export) مدیریت می‌کند و می‌تواند به فرمت‌های مختلف خروجی داده شود.

16. Organization

این مدل اطلاعات مربوط به ارگان‌ها یا سازمان‌هایی که با پروژه در ارتباط هستند و ممکن است مسئول پاسخگویی به ویژگی‌ها باشند را ذخیره می‌کند.

17. SolutionBelongToProperty

این مدل برای ذخیره راه‌حل‌هایی که توسط سازمان‌ها برای ویژگی‌های مختلف ارائه می‌شود، استفاده می‌شود. هر راه‌حل به یک ویژگی خاص و سازمان خاص مرتبط است.

18. Slider

این مدل تصاویر مربوط به اسلایدر صفحه وبلاگ یا پنل مدیریت را ذخیره می‌کند و شامل اطلاعاتی مانند تصویر و زمان ثبت آن است.

پیش‌نیازها

برای اجرای این پروژه نیاز به نصب نرم‌افزارها و ابزارهای زیر دارید:

  • Python نسخه 3.8 یا بالاتر
  • Django نسخه 3.2 یا بالاتر

وابستگی‌های پروژه

پکیج‌های زیر در این پروژه استفاده شده‌اند:

  • Django==5.0.1
  • django-cors-headers==4.3.0
  • django-jalali==6.0.1
  • djangorestframework==3.14.0
  • jdatetime==5.0.0

نصب و راه‌اندازی

برای راه‌اندازی پروژه، مراحل زیر را دنبال کنید:

  1. این مخزن را کلون کنید.

    git clone https://github.com/Bestsenator/DemandTracking.git
  2. وارد دایرکتوری پروژه شوید:

    cd DemandTracking
  3. یک محیط مجازی پایتون ایجاد کنید:

    python -m venv venv
  4. محیط مجازی را فعال کنید:

    • در سیستم‌عامل ویندوز:
      venv\Scripts\activate
    • در سیستم‌عامل مک یا لینوکس:
      source venv/bin/activate
  5. وابستگی‌های پروژه را نصب کنید:

    pip install -r req.txt
  6. فایل .env را براساس نمونه .env.example تنظیم کنید.

  7. مهاجرت‌های پایگاه داده را اعمال کنید:

    python manage.py migrate
  8. سرور را اجرا کنید:

    python manage.py runserver
  9. پروژه اکنون در http://localhost:8000 در دسترس است.

API Endpoints

در این پروژه، API‌های زیر برای تعامل با داده‌ها و مدیریت بخش‌های مختلف فراهم شده است:

Authentication & Session Management

  • POST /loginCheck/: بررسی ورود به سیستم.
  • GET /checkSession/: بررسی وضعیت جلسه کاربری.

Location Management

  • GET /getLocationListByFilter/: دریافت لیست مکان‌ها با فیلتر.
  • GET /getRedundantLocation/: دریافت مکان‌های اضافی.
  • GET /getAllRedundant/: دریافت تمام مکان‌های اضافی.
  • POST /addRedundantForLocation/: افزودن مکان اضافی برای مکان.
  • POST /editRedundantForLocation/: ویرایش مکان اضافی برای مکان.
  • POST /deleteRedundantForLocation/: حذف مکان اضافی برای مکان.
  • POST /addPlace/: افزودن مکان جدید.
  • GET /getCityList/: دریافت لیست شهرها.
  • GET /getBigCityList/: دریافت لیست کلان‌شهرها.
  • GET /getCityPartList/: دریافت لیست بخش‌های شهر.
  • GET /getBigVillageList/: دریافت لیست دهستان‌های بزرگ.
  • GET /getVillageList/: دریافت لیست روستاها.
  • POST /deletePlace/: حذف مکان.
  • POST /editPlace/: ویرایش مکان.
  • GET /getInfoPlace/: دریافت اطلاعات مکان.

Property Management

  • GET /getPropertyListByFilter/: دریافت لیست ویژگی‌ها با فیلتر.
  • GET /getInfoPropertyBToPlace/: دریافت اطلاعات ویژگی مربوط به مکان.
  • POST /deletePropertyBelongToPlace/: حذف ویژگی مربوط به مکان.
  • GET /getPropertyNameList/: دریافت لیست نام‌های ویژگی‌ها.
  • GET /getAllSubPropertyNameList/: دریافت لیست تمامی نام‌های زیر ویژگی‌ها.
  • GET /getSubPropertyNameList/: دریافت لیست نام‌های زیر ویژگی‌ها.
  • POST /addPropertyToPlace/: افزودن ویژگی به مکان.
  • POST /editPropertyToPlace/: ویرایش ویژگی مربوط به مکان.
  • POST /addSubProperty/: افزودن زیر ویژگی.
  • POST /editSubProperty/: ویرایش زیر ویژگی.
  • POST /deleteSubProperty/: حذف زیر ویژگی.

People Management

  • GET /getProperList/: دریافت لیست اشخاص.
  • GET /getPeopleBelongToPlaceList/: دریافت لیست افراد مربوط به مکان.
  • GET /getInfoPeopleBelongToPlace/: دریافت اطلاعات فرد مربوط به مکان.
  • POST /addPeopleBelongToPlace/: افزودن فرد به مکان.
  • POST /editPeopleBelongToPlace/: ویرایش فرد مربوط به مکان.
  • POST /deletePeopleBelongToPlace/: حذف فرد از مکان.

Answer & Solution Management

  • GET /getAnswerPropertyBToPlaceList/: دریافت لیست پاسخ‌های ویژگی مربوط به مکان.
  • POST /addAnswerToProperty/: افزودن پاسخ به ویژگی.
  • POST /editAnswerProperty/: ویرایش پاسخ به ویژگی.
  • POST /deleteAnswerProperty/: حذف پاسخ به ویژگی.
  • GET /getFullInfoPropertyBToPlace/: دریافت اطلاعات کامل ویژگی مربوط به مکان.
  • GET /getSolutionToProperty/: دریافت راه‌حل‌های مربوط به ویژگی.
  • POST /addSolutionToProperty/: افزودن راه‌حل به ویژگی.
  • POST /editSolutionToProperty/: ویرایش راه‌حل مربوط به ویژگی.
  • POST /deleteSolutionToProperty/: حذف راه‌حل مربوط به ویژگی.

Manager Management

  • GET /getAccessListManager/: دریافت لیست دسترسی‌های مدیر.
  • GET /getCharacterList/: دریافت لیست نقش‌ها.
  • POST /addManager/: افزودن مدیر.
  • POST /editManager/: ویرایش مدیر.
  • POST /deleteManager/: حذف مدیر.
  • POST /addLocationToManager/: افزودن مکان به مدیر.
  • POST /deleteLocationToManager/: حذف مکان از مدیر.
  • GET /getLocationListByPhrase/: دریافت لیست مکان‌ها بر اساس عبارت.
  • GET /getInfoPropertyLocation/: دریافت اطلاعات ویژگی مربوط به مکان.
  • GET /getManagerList/: دریافت لیست مدیران.
  • GET /getManagerInfo/: دریافت اطلاعات مدیر.

Export & Slider Management

  • GET /exportToDatabase/: صادرات داده‌ها به پایگاه داده.
  • GET /getSlider/: دریافت لیست اسلایدرها.
  • POST /addSlider/: افزودن اسلایدر.
  • POST /deleteSlider/: حذف اسلایدر.

Access Management

  • GET /getAccessLocationList/: دریافت لیست دسترسی‌های مکان.
  • GET /getLocationListBlog/: دریافت لیست مکان‌ها برای وبلاگ.

لازم به ذکر است که API‌ ها با استفاده از نرم‌افزار Postman نوشته شده و کالکشن‌ها در آدرس postmanCollection قرارداده شده است.

ساختار پروژه

DemandTracking/
├── config/
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
├── api/
│   ├── migrations/
│   ├── models.py
│   ├── serializers.py
│   ├── views.py
│   └── urls.py
├── index/
│   ├── migrations/
│   ├── models.py
│   ├── serializers.py
│   ├── views.py
│   └── urls.py
├── funcs/
│   ├── check.py
│   └── verify.py
├── media/
│   ├── locationImage
│   ├── peopleBelongToPlace
│   ├── propertyBelongToPlace
│   └── slider
├── static/
├── manage.py
├── db.sqlite3
├── README.md
├── README_fa.md
├── README_en.md
└── req.txt

مشارکت

اگر مایل به مشارکت در این پروژه هستید، می‌توانید:

  1. این مخزن را فورک کنید.
  2. یک شاخه جدید برای ویژگی یا باگ جدید ایجاد کنید (git checkout -b feature/AmazingFeature).
  3. تغییرات خود را کامیت کنید (git commit -m 'Add some AmazingFeature').
  4. شاخه خود را پوش کنید (git push origin feature/AmazingFeature).
  5. یک Pull Request باز کنید.

تشکر ویژه

Seyed Abasaleh Fatemi

تشکر ویژه از برنامه‌نویس فرانت اند ( vue.js ) که با تلاش و مهارت خود این وبسایت را توسعه داده و به این پروژه بک‌اند متصل کرده است. بدون زحمات او، امکان ایجاد این سیستم یکپارچه فراهم نمی‌شد.