گازبان یک پروژه کامل شامل بکاند و اپلیکیشن موبایل است که با استفاده از فریمورک Django و فلاتر توسعه یافته است. این پروژه برای مدیریت افرادی که به عنوان قرائتکننده شماره کنتورهای گاز فعالیت میکنند، طراحی شده است. سیستم امکان مدیریت مناطق، ثبت و پیگیری مرخصیها، و ارسال و مدیریت اطلاعیهها را فراهم میکند. همچنین، اطلاعات مرتبط با هر فرد قرائتکننده و مناطق فعالیت وی به دقت مدیریت میشود.
این ریپازیتوری شامل هر دو بخش بکاند و اپلیکیشن موبایل است. بخش بکاند با استفاده از Django توسعه یافته و وظیفه مدیریت دادهها و عملیات سمت سرور را بر عهده دارد. اپلیکیشن موبایل نیز با فلاتر توسعه یافته و به قرائتکنندگان اجازه میدهد تا به اطلاعات خود دسترسی داشته باشند و عملیات مختلفی از جمله درخواست مرخصی و مشاهده اطلاعیهها را انجام دهند.
- مدیریت مناطق فعالیت: امکان تعیین و مشاهده مناطق کاری برای هر قرائتکننده.
- ثبت و پیگیری مرخصی: قابلیت ثبت درخواست مرخصی و پیگیری وضعیت آن توسط قرائتکنندگان.
- ارسال و مدیریت اطلاعیهها: ارسال و دریافت اطلاعیههای مهم به قرائتکنندگان.
- اپلیکیشن موبایل Flutter: اپلیکیشنی که به قرائتکنندگان اجازه میدهد به آسانی با سیستم بکاند ارتباط برقرار کرده و عملیات مورد نیاز خود را انجام دهند.
- یکپارچگی کامل در یک ریپازیتوری: هر دو بخش بکاند (Django) و اپلیکیشن موبایل (Flutter) در این ریپازیتوری قرار دارند.
کلاس GasEmployee
برای ذخیره اطلاعات قرائتکنندگان گاز استفاده میشود. این کلاس شامل اطلاعات شخصی، منطقه فعالیت و روستاهای تحت پوشش هر گازبان است. همچنین اطلاعات مرتبط با معینهای گازبان نیز در این کلاس ذخیره میشود.
کلاس Representative
برای ذخیره اطلاعات نمایندگان گاز استفاده میشود. هر نماینده شامل اطلاعات فردی، کد ملی، شماره پیمان و منطقه فعالیت خود است.
کلاس Rescuer
برای ذخیره اطلاعات امدادگران استفاده میشود. هر امدادگر دارای اطلاعات شخصی، کد منطقه فعالیت و نشست کاربر است.
کلاس HeadCity
برای مدیریت اطلاعات رؤسای شهرها استفاده میشود. این کلاس شامل مشخصات فردی رئیس و کدهای شهر و منطقهای است که در آن فعالیت دارد.
کلاس HeadRelief
برای ذخیره اطلاعات رؤسای امداد استفاده میشود. این کلاس شامل مشخصات فردی و شهرهای تحت پوشش رئیس امداد است.
کلاس HeadArea
برای ذخیره اطلاعات رؤسای مناطق مختلف استفاده میشود. هر رئیس منطقه دارای مشخصات فردی و اطلاعات منطقه فعالیت خود است.
کلاس DailyRequest
برای ثبت و مدیریت درخواستهای مرخصی روزانه گازبانان استفاده میشود. درخواستها شامل تأییدیههای معین، نماینده و رئیس شهر یا رئیس امداد هستند.
کلاس HourlyRequest
برای ثبت و مدیریت درخواستهای مرخصی ساعتی گازبانان استفاده میشود. درخواستهای ساعتی نیز نیاز به تأیید معین و نماینده دارند.
کلاس City
برای ذخیره اطلاعات شهرها استفاده میشود. هر شهر شامل یک کد یکتا، نام و منطقه مربوطه است.
کلاس Village
برای ذخیره اطلاعات روستاها استفاده میشود. هر روستا مرتبط با یک شهر است و شامل نام و کد روستا است.
کلاس Announcement
برای ثبت اطلاعیههای مربوط به مناطق مختلف استفاده میشود. اطلاعیهها میتوانند دارای عنوان، محتوا، اولویت و تصویر باشند.
پکیجهای زیر در این پروژه استفاده شدهاند:
Django==5.0.1
django-cors-headers==4.3.0
django-jalali==6.0.1
djangorestframework==3.14.0
jdatetime==5.0.0
برای راهاندازی پروژه، مراحل زیر را دنبال کنید:
-
این مخزن را کلون کنید:
git https://github.com/Bestsenator/Gazban.git
-
وارد دایرکتوری پروژه شوید:
cd Web
-
یک محیط مجازی پایتون ایجاد کنید:
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
در دسترس است.
برای اجرای این پروژه نیاز به نصب نرمافزارها و ابزارهای زیر دارید:
- Flutter نسخه 3.0 یا بالاتر
- Dart نسخه 3.3 یا بالاتر
- Android Studio یا Visual Studio Code برای توسعه
پکیجهای زیر در این پروژه استفاده شدهاند و در فایل pubspec.yaml
تعریف شدهاند
برای راهاندازی پروژه، مراحل زیر را دنبال کنید:
-
کلون کردن مخزن:
git clone https://github.com/Bestsenator/Gazban.git
-
ورود به دایرکتوری پروژه:
cd app/
-
نصب وابستگیها:
flutter pub get
-
تنظیمات لازم برای پروژه:
تنظیمات اطلاعات نماینده و اپلیکیشن:
فایل
static_data.dart
در مسیرapp/lib/Data/static_data.dart
را ویرایش کرده و مقادیر زیر را تنظیم کنید:- نسخه اپلیکیشن
- کد نماینده
- نام نماینده
- API Key
- آدرس سرور
- تصویر نماینده
تنظیم نام اپلیکیشن:
نام اپلیکیشن را در فایل
AndroidManifest.xml
واقع درHamiSho/candidate/android/app/src/main/AndroidManifest.xml
تنظیم کنید.تنظیم اپلیکیشن آیدی:
اپلیکیشن آیدی را در فایل
build.gradle
واقع درHamiSho/candidate/android/app/build.gradle
تنظیم کنید. -
اجرای اپلیکیشن:
flutter run
لیستی از endpoint های موجود در API:
-
POST /checkSession/
بررسی وضعیت نشست کاربر و شناسایی نوع کاربر. -
POST /login/
ورود کاربر با استفاده از نام کاربری و رمز عبور. -
POST /addRequest/
افزودن درخواست مرخصی ساعتی یا روزانه. -
POST /acceptRequest/
پذیرش درخواست مرخصی توسط کاربر. -
POST /getListCharacter/
دریافت لیست کاراکترها بر اساس کد منطقه و نوع کاربر. -
POST /deleteCharacter/
حذف کاراکترها بر اساس کد مشخص شده. -
POST /editCharacterInfo/
ویرایش اطلاعات یک شخصیت با توجه به نوع شخصیت (کارمند گاز، نماینده، رئیس شهر، رئیس امداد) و کدهای مربوطه. -
POST /addPerson/
افزودن یک شخصیت جدید به سیستم با توجه به نوع شخصیت و اطلاعات مربوطه. -
POST /getMList/
دریافت لیست کارمندان تحت مدیریت کارمند گاز با کد مشخص. -
POST /getReportRequest/
دریافت گزارش درخواستها بر اساس تاریخهای مشخص و کد کارمند گاز. -
POST /getLocation/
دریافت اطلاعات مربوط به روستاها و شهرها بر اساس کد منطقه. -
POST /getAnnouncement/
دریافت اطلاعات اعلانها بر اساس کد منطقه. -
POST /addAnnouncement/
افزودن اعلان جدید به سیستم با اطلاعات مربوطه مانند عنوان، محتوا، اولویت و تصویر (اختیاری).
اگر مایل به مشارکت در این پروژه هستید، میتوانید:
- این مخزن را فورک کنید.
- یک شاخه جدید برای ویژگی یا باگ جدید ایجاد کنید (
git checkout -b feature/AmazingFeature
). - تغییرات خود را کامیت کنید (
git commit -m 'Add some AmazingFeature'
). - شاخه خود را پوش کنید (
git push origin feature/AmazingFeature
). - یک Pull Request باز کنید.