این پروژه یک سیستم مدیریت و وبلاگ برای نمایش و مدیریت اطلاعات مناطق مختلف مانند شهرستانها، شهرها، دهستانها و روستاها است. برای هر منطقه، اطلاعاتی از قبیل فرصتها، تهدیدها، ضعفها و ظرفیتها ثبت و مدیریت میشود.
این پروژه بکاند به وبسایتی که با Vue.js توسعه داده شده است، متصل و همگامسازی شده است. وبسایت به کاربران این امکان را میدهد که با بکاند ارتباط برقرار کرده و اطلاعات و خدمات مورد نیاز خود را دریافت کنند. برای کسب اطلاعات بیشتر دربارهی وبسایت Vue.js، لطفاً به پیگیری مطالبات مراجعه کنید.
- دستهبندی مناطق: شامل شهرستانها، شهرها، دهستانها، روستاها و ...
- ویژگیهای کلیدی: هر بخش دارای ویژگیهای فرصت، تهدید، ضعف و ظرفیت است که هر کدام زیرویژگیهای خاص خود را دارند.
- اتصال زیرویژگیها به مناطق: هر زیرویژگی به یک بخش از منطقه (مانند روستا یا شهر) متصل میشود و شامل اطلاعاتی مانند عنوان، توضیحات، عکس و ...
- پاسخدهی ارگانها: برای هر ویژگی میتوان مشخص کرد که کدام ارگان یا نهاد مسئول پاسخدهی است و جواب آنها نیز ذخیره میشود.
- اطلاعات محله: شامل نام، عکس و افراد مشهور آن محله است.
- شفافیت اطلاعات: تمامی اطلاعات از جمله ویژگیها و پاسخها در بخش وبلاگ بهصورت عمومی قابل مشاهده هستند تا شفافیت در ارائه اطلاعات به صورت تأکیدی رعایت شود.
این مدل برای مدیریت کلیدهای API استفاده میشود و مشخص میکند که کلید برای چه منظوری (پنل یا وبلاگ) مورد استفاده قرار میگیرد.
این مدل شخصیتهای مختلف را با سطوح دسترسی (مدیر اصلی، نماینده و مسئول) مشخص میکند. هر شخصیت یک سطح دسترسی دارد که تعیین میکند چه نوع دسترسیهایی به بخشهای مختلف سیستم خواهد داشت.
مدل مدیران اطلاعات شخصی و حرفهای مدیرانی که هر منطقه را مدیریت میکنند را ذخیره میکند. این اطلاعات شامل نام، شماره تماس، کد ملی، رمز عبور و شخصیت (character) مدیر است. همچنین امکان حذف و ویرایش مدیر وجود دارد.
این مدل نشان میدهد که کدام مدیر مسئول کدام منطقه است. ارتباط بین یک مدیر و مناطق تحت مدیریت او از طریق این مدل مدیریت میشود.
این مدلها به ترتیب برای ذخیرهسازی اطلاعات مکانهای مختلف از شهرهای بزرگ تا روستاها طراحی شدهاند. هر مدل شامل اطلاعاتی مانند کد، نام، جمعیت، تعداد خانوارها، تصاویر و توضیحات درباره منطقه است. ارتباط بین مناطق مختلف نیز به کمک این مدلها انجام میشود؛ مثلاً یک روستا به یک دهستان بزرگ و یک شهر به یک شهر بزرگ متصل میشود.
این مدل ویژگیهای اضافی یا "خاص" مربوط به مکانها و مردم را تعریف میکند. این ویژگیها شامل اطلاعاتی مانند املاک، زیرساختها و ... میشوند که میتوانند به مکانهای مختلف مرتبط شوند.
این مدل اطلاعات افراد مرتبط با یک منطقه خاص را ذخیره میکند، از جمله نام، خانواده، ویژگی خاص (Proper) و فایلی پیوست شده از آن شخص (اگر وجود داشته باشد). این مدل همچنین میتواند افراد مشهور یا مرتبط با آن منطقه را شناسایی کند.
این مدلها برای تعریف ویژگیهای کلی و زیرویژگیها (SubProperty) استفاده میشوند. ویژگیهایی مانند فرصتها، تهدیدها، ضعفها و ظرفیتها از طریق این مدلها مدیریت میشوند و به هر مکان خاصی (مانند روستا، شهر یا دهستان) متصل میشوند.
این مدل ویژگیهای خاصی (مانند زیرساختها، فرصتهای اقتصادی و ...) را به مکانهای خاص متصل میکند. این مدل شامل اطلاعاتی مانند عنوان ویژگی، توضیحات، تصاویر و وضعیت خصوصی یا عمومی بودن ویژگی است.
این مدل پاسخهایی که توسط ارگانها یا مدیران به هر ویژگی خاص داده میشود را ذخیره میکند. پاسخها شامل محتوا، فایلهای پیوست و زمان ویرایش آخرین پاسخ هستند.
این مدل اطلاعات اضافی و غیرضروری مربوط به مکانهای مختلف را ذخیره میکند. اطلاعاتی که ممکن است در ابتدا ضروری به نظر نرسند ولی در آینده مفید واقع شوند.
این مدل برای ذخیره مقادیر مرتبط با اطلاعات اضافی از مدل "RedundantInformation" استفاده میشود. هر مقدار اضافی به یک مکان خاص (مانند شهر یا روستا) تعلق دارد و مقدار آن به صورت متنی ذخیره میشود.
این مدل برای تعریف بخشهای مختلف سیستم استفاده میشود. هر شخصیت در سیستم میتواند دسترسی به بخشهای خاصی از طریق این مدل داشته باشد.
این مدل مشخص میکند که هر شخصیت به کدام بخشها از سیستم دسترسی دارد. برای مثال، یک مدیر ارشد ممکن است دسترسی به همه بخشها داشته باشد در حالی که یک مسئول فقط به بخش خاصی دسترسی دارد.
این مدل لیست ویژگیهای مرتبط با مکانها را برای صدور (Export) مدیریت میکند و میتواند به فرمتهای مختلف خروجی داده شود.
این مدل اطلاعات مربوط به ارگانها یا سازمانهایی که با پروژه در ارتباط هستند و ممکن است مسئول پاسخگویی به ویژگیها باشند را ذخیره میکند.
این مدل برای ذخیره راهحلهایی که توسط سازمانها برای ویژگیهای مختلف ارائه میشود، استفاده میشود. هر راهحل به یک ویژگی خاص و سازمان خاص مرتبط است.
این مدل تصاویر مربوط به اسلایدر صفحه وبلاگ یا پنل مدیریت را ذخیره میکند و شامل اطلاعاتی مانند تصویر و زمان ثبت آن است.
برای اجرای این پروژه نیاز به نصب نرمافزارها و ابزارهای زیر دارید:
پکیجهای زیر در این پروژه استفاده شدهاند:
Django==5.0.1
django-cors-headers==4.3.0
django-jalali==6.0.1
djangorestframework==3.14.0
jdatetime==5.0.0
برای راهاندازی پروژه، مراحل زیر را دنبال کنید:
-
این مخزن را کلون کنید.
git clone https://github.com/Bestsenator/DemandTracking.git
-
وارد دایرکتوری پروژه شوید:
cd DemandTracking
-
یک محیط مجازی پایتون ایجاد کنید:
python -m venv venv
-
محیط مجازی را فعال کنید:
- در سیستمعامل ویندوز:
venv\Scripts\activate
- در سیستمعامل مک یا لینوکس:
source venv/bin/activate
- در سیستمعامل ویندوز:
-
وابستگیهای پروژه را نصب کنید:
pip install -r req.txt
-
فایل
.env
را براساس نمونه.env.example
تنظیم کنید. -
مهاجرتهای پایگاه داده را اعمال کنید:
python manage.py migrate
-
سرور را اجرا کنید:
python manage.py runserver
-
پروژه اکنون در
http://localhost:8000
در دسترس است.
در این پروژه، APIهای زیر برای تعامل با دادهها و مدیریت بخشهای مختلف فراهم شده است:
POST /loginCheck/
: بررسی ورود به سیستم.GET /checkSession/
: بررسی وضعیت جلسه کاربری.
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/
: دریافت اطلاعات مکان.
GET /getPropertyListByFilter/
: دریافت لیست ویژگیها با فیلتر.GET /getInfoPropertyBToPlace/
: دریافت اطلاعات ویژگی مربوط به مکان.POST /deletePropertyBelongToPlace/
: حذف ویژگی مربوط به مکان.GET /getPropertyNameList/
: دریافت لیست نامهای ویژگیها.GET /getAllSubPropertyNameList/
: دریافت لیست تمامی نامهای زیر ویژگیها.GET /getSubPropertyNameList/
: دریافت لیست نامهای زیر ویژگیها.POST /addPropertyToPlace/
: افزودن ویژگی به مکان.POST /editPropertyToPlace/
: ویرایش ویژگی مربوط به مکان.POST /addSubProperty/
: افزودن زیر ویژگی.POST /editSubProperty/
: ویرایش زیر ویژگی.POST /deleteSubProperty/
: حذف زیر ویژگی.
GET /getProperList/
: دریافت لیست اشخاص.GET /getPeopleBelongToPlaceList/
: دریافت لیست افراد مربوط به مکان.GET /getInfoPeopleBelongToPlace/
: دریافت اطلاعات فرد مربوط به مکان.POST /addPeopleBelongToPlace/
: افزودن فرد به مکان.POST /editPeopleBelongToPlace/
: ویرایش فرد مربوط به مکان.POST /deletePeopleBelongToPlace/
: حذف فرد از مکان.
GET /getAnswerPropertyBToPlaceList/
: دریافت لیست پاسخهای ویژگی مربوط به مکان.POST /addAnswerToProperty/
: افزودن پاسخ به ویژگی.POST /editAnswerProperty/
: ویرایش پاسخ به ویژگی.POST /deleteAnswerProperty/
: حذف پاسخ به ویژگی.GET /getFullInfoPropertyBToPlace/
: دریافت اطلاعات کامل ویژگی مربوط به مکان.GET /getSolutionToProperty/
: دریافت راهحلهای مربوط به ویژگی.POST /addSolutionToProperty/
: افزودن راهحل به ویژگی.POST /editSolutionToProperty/
: ویرایش راهحل مربوط به ویژگی.POST /deleteSolutionToProperty/
: حذف راهحل مربوط به ویژگی.
GET /getAccessListManager/
: دریافت لیست دسترسیهای مدیر.GET /getCharacterList/
: دریافت لیست نقشها.POST /addManager/
: افزودن مدیر.POST /editManager/
: ویرایش مدیر.POST /deleteManager/
: حذف مدیر.POST /addLocationToManager/
: افزودن مکان به مدیر.POST /deleteLocationToManager/
: حذف مکان از مدیر.GET /getLocationListByPhrase/
: دریافت لیست مکانها بر اساس عبارت.GET /getInfoPropertyLocation/
: دریافت اطلاعات ویژگی مربوط به مکان.GET /getManagerList/
: دریافت لیست مدیران.GET /getManagerInfo/
: دریافت اطلاعات مدیر.
GET /exportToDatabase/
: صادرات دادهها به پایگاه داده.GET /getSlider/
: دریافت لیست اسلایدرها.POST /addSlider/
: افزودن اسلایدر.POST /deleteSlider/
: حذف اسلایدر.
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
اگر مایل به مشارکت در این پروژه هستید، میتوانید:
- این مخزن را فورک کنید.
- یک شاخه جدید برای ویژگی یا باگ جدید ایجاد کنید (
git checkout -b feature/AmazingFeature
). - تغییرات خود را کامیت کنید (
git commit -m 'Add some AmazingFeature'
). - شاخه خود را پوش کنید (
git push origin feature/AmazingFeature
). - یک Pull Request باز کنید.
تشکر ویژه از برنامهنویس فرانت اند ( vue.js ) که با تلاش و مهارت خود این وبسایت را توسعه داده و به این پروژه بکاند متصل کرده است. بدون زحمات او، امکان ایجاد این سیستم یکپارچه فراهم نمیشد.