chore: update app version to 1.3.36+32, change build mode to release, and enhance user role handling in chicken feature with new routes and DI setup

This commit is contained in:
2025-12-13 16:30:02 +03:30
parent 0d47710e81
commit afbd72404d
121 changed files with 15161 additions and 16 deletions

View File

@@ -1,4 +1,16 @@
/// مدل داده‌ای برای ارسال اطلاعات بازرسی مرغداری به سرور
///
/// این کلاس شامل تمام اطلاعات مربوط به بازرسی یک واحد مرغداری است که شامل:
/// - موقعیت جغرافیایی (عرض و طول جغرافیایی)
/// - شناسه جوجه‌ریزی
/// - نقش کاربر
/// - اطلاعات مختلف بازرسی در بخش‌های مختلف
///
/// این مدل برای ارسال درخواست POST به endpoint `/poultry_science_report/` استفاده می‌شود.
class SubmitInspectionResponse {
/// سازنده کلاس SubmitInspectionResponse
///
/// تمام پارامترها اختیاری هستند و می‌توانند null باشند.
SubmitInspectionResponse({
this.lat,
this.log,
@@ -15,20 +27,49 @@ class SubmitInspectionResponse {
this.inspectionNotes,
});
/// عرض جغرافیایی (Latitude) محل بازرسی
String? lat;
/// طول جغرافیایی (Longitude) محل بازرسی
String? log;
/// شناسه یکتای جوجه‌ریزی که بازرسی برای آن انجام می‌شود
int? poultryHatchingId;
/// نقش کاربری که بازرسی را انجام می‌دهد
String? role;
/// اطلاعات مربوط به شرایط عمومی سالن مرغداری
GeneralConditionHall? generalConditionHall;
/// اطلاعات مربوط به تلفات و خسارات
Casualties? casualties;
/// اطلاعات مربوط به کارشناسان فنی
TechnicalOfficer? technicalOfficer;
/// اطلاعات مربوط به وضعیت نهاده‌ها
InputStatus? inputStatus;
/// اطلاعات مربوط به زیرساخت و انرژی
InfrastructureEnergy? infrastructureEnergy;
/// اطلاعات مربوط به نیروی انسانی
Hr? hr;
/// اطلاعات مربوط به تسهیلات
Facilities? facilities;
/// وضعیت بازرسی (مثلاً: انجام شده، در حال انجام، لغو شده)
String? inspectionStatus;
/// یادداشت‌ها و توضیحات بازرس
String? inspectionNotes;
/// تبدیل شیء به فرمت JSON برای ارسال به سرور
///
/// تمام اطلاعات بازرسی را در یک ساختار JSON سازماندهی می‌کند.
/// بخش‌های مختلف بازرسی در زیر کلید `report_information` قرار می‌گیرند.
Map<String, dynamic> toJson() {
return {
'lat': lat,
@@ -49,6 +90,9 @@ class SubmitInspectionResponse {
};
}
/// ساخت شیء از JSON دریافتی از سرور
///
/// این متد برای تبدیل پاسخ JSON سرور به یک شیء SubmitInspectionResponse استفاده می‌شود.
factory SubmitInspectionResponse.fromJson(Map<String, dynamic> json) {
return SubmitInspectionResponse(
lat: json['lat'].toString(),
@@ -88,7 +132,11 @@ class SubmitInspectionResponse {
}
}
/// اطلاعات مربوط به شرایط عمومی سالن مرغداری
///
/// این کلاس شامل اطلاعاتی در مورد وضعیت سلامت، تهویه، بستر، دما و آب آشامیدنی سالن است.
class GeneralConditionHall {
/// سازنده کلاس GeneralConditionHall
GeneralConditionHall({
this.images,
this.healthStatus,
@@ -99,12 +147,25 @@ class GeneralConditionHall {
this.drinkingWaterQuality,
});
/// لیست آدرس تصاویر مربوط به شرایط سالن
List<String>? images;
/// وضعیت سلامت سالن
String? healthStatus;
/// وضعیت سیستم تهویه
String? ventilationStatus;
/// وضعیت بستر سالن
String? bedCondition;
/// دمای سالن
String? temperature;
/// منبع آب آشامیدنی
String? drinkingWaterSource;
/// کیفیت آب آشامیدنی
String? drinkingWaterQuality;
Map<String, dynamic> toJson() {
@@ -134,7 +195,12 @@ class GeneralConditionHall {
}
}
/// اطلاعات مربوط به تلفات و خسارات
///
/// این کلاس شامل اطلاعاتی در مورد تلفات عادی و غیرعادی، منبع جوجه‌ریزی،
/// علت تلفات غیرعادی، نوع بیماری و نمونه‌برداری است.
class Casualties {
/// سازنده کلاس Casualties
Casualties({
this.normalLosses,
this.abnormalLosses,
@@ -146,13 +212,28 @@ class Casualties {
this.images,
});
/// تعداد تلفات عادی
int? normalLosses;
/// تعداد تلفات غیرعادی
int? abnormalLosses;
/// منبع جوجه‌ریزی
String? sourceOfHatching;
/// علت تلفات غیرعادی
String? causeAbnormalLosses;
/// نوع بیماری (در صورت وجود)
String? typeDisease;
/// آیا نمونه‌برداری انجام شده است؟
bool? samplingDone;
/// نوع نمونه‌برداری انجام شده
String? typeSampling;
/// لیست آدرس تصاویر مربوط به تلفات
List<String>? images;
Map<String, dynamic> toJson() {
@@ -184,13 +265,20 @@ class Casualties {
}
}
/// اطلاعات مربوط به کارشناسان فنی
///
/// این کلاس شامل اطلاعات کارشناس بهداشت و کارشناس فنی مهندسی است.
class TechnicalOfficer {
/// سازنده کلاس TechnicalOfficer
TechnicalOfficer({
this.technicalHealthOfficer,
this.technicalEngineeringOfficer,
});
/// نام یا اطلاعات کارشناس بهداشت
String? technicalHealthOfficer;
/// نام یا اطلاعات کارشناس فنی مهندسی
String? technicalEngineeringOfficer;
Map<String, dynamic> toJson() {
@@ -209,7 +297,12 @@ class TechnicalOfficer {
}
}
/// اطلاعات مربوط به وضعیت نهاده‌ها
///
/// این کلاس شامل اطلاعاتی در مورد نهاده‌های مصرفی مرغداری شامل:
/// وضعیت نهاده، نام شرکت، کد رهگیری، نوع دان، موجودی انبار و درجه دان است.
class InputStatus {
/// سازنده کلاس InputStatus
InputStatus({
this.inputStatus,
this.companyName,
@@ -221,13 +314,28 @@ class InputStatus {
this.images,
});
/// وضعیت نهاده‌ها
String? inputStatus;
/// نام شرکت تامین‌کننده نهاده
String? companyName;
/// کد رهگیری نهاده
String? trackingCode;
/// نوع دان مصرفی
String? typeOfGrain;
/// موجودی نهاده در انبار
String? inventoryInWarehouse;
/// موجودی نهاده تا زمان بازدید
String? inventoryUntilVisit;
/// درجه دان
String? gradeGrain;
/// لیست آدرس تصاویر مربوط به نهاده‌ها
List<String>? images;
Map<String, dynamic> toJson() {
@@ -259,7 +367,12 @@ class InputStatus {
}
}
/// اطلاعات مربوط به زیرساخت و انرژی
///
/// این کلاس شامل اطلاعاتی در مورد ژنراتور، سوخت، قطعی برق و سایر
/// اطلاعات مربوط به زیرساخت انرژی مرغداری است.
class InfrastructureEnergy {
/// سازنده کلاس InfrastructureEnergy
InfrastructureEnergy({
this.generatorType,
this.generatorModel,
@@ -274,16 +387,37 @@ class InfrastructureEnergy {
this.additionalNotes,
});
/// نوع ژنراتور
String? generatorType;
/// مدل ژنراتور
String? generatorModel;
/// تعداد ژنراتورها
String? generatorCount;
/// ظرفیت ژنراتور
String? generatorCapacity;
/// نوع سوخت ژنراتور
String? fuelType;
/// عملکرد ژنراتور
String? generatorPerformance;
/// موجودی سوخت اضطراری
String? emergencyFuelInventory;
/// آیا سابقه قطعی برق وجود دارد؟
bool? hasPowerCutHistory;
/// مدت زمان قطعی برق
String? powerCutDuration;
/// ساعت قطعی برق
String? powerCutHour;
/// یادداشت‌های اضافی
String? additionalNotes;
Map<String, dynamic> toJson() {
@@ -319,7 +453,12 @@ class InfrastructureEnergy {
}
}
/// اطلاعات مربوط به نیروی انسانی
///
/// این کلاس شامل اطلاعاتی در مورد تعداد کارکنان، وضعیت بومی/غیربومی بودن
/// کارکنان، وضعیت قرارداد و آموزش کارکنان است.
class Hr {
/// سازنده کلاس Hr
Hr({
this.numberEmployed,
this.numberIndigenous,
@@ -328,10 +467,19 @@ class Hr {
this.trained,
});
/// تعداد کل کارکنان
int? numberEmployed;
/// تعداد کارکنان بومی
int? numberIndigenous;
/// تعداد کارکنان غیربومی
int? numberNonIndigenous;
/// وضعیت قرارداد کارکنان
String? contractStatus;
/// آیا کارکنان آموزش دیده‌اند؟
bool? trained;
Map<String, dynamic> toJson() {
@@ -355,7 +503,12 @@ class Hr {
}
}
/// اطلاعات مربوط به تسهیلات
///
/// این کلاس شامل اطلاعاتی در مورد تسهیلات دریافتی مرغداری شامل:
/// وجود تسهیلات، نوع تسهیلات، مبلغ، تاریخ و وضعیت بازپرداخت است.
class Facilities {
/// سازنده کلاس Facilities
Facilities({
this.hasFacilities,
this.typeOfFacility,
@@ -365,11 +518,22 @@ class Facilities {
this.requestFacilities,
});
/// آیا تسهیلات دریافت شده است؟
bool? hasFacilities;
/// نوع تسهیلات
String? typeOfFacility;
/// مبلغ تسهیلات
int? amount;
/// تاریخ دریافت تسهیلات
String? date;
/// وضعیت بازپرداخت تسهیلات
String? repaymentStatus;
/// درخواست تسهیلات
String? requestFacilities;
Map<String, dynamic> toJson() {

View File

@@ -0,0 +1,424 @@
{
"description": "ساختار و توضیحات کامل مدل SubmitInspectionResponse برای ارسال اطلاعات بازرسی مرغداری",
"endpoint": "/poultry_science_report/",
"method": "POST",
"schema": {
"lat": {
"type": "string",
"required": false,
"description": "عرض جغرافیایی (Latitude) محل بازرسی",
"example": "35.6892"
},
"log": {
"type": "string",
"required": false,
"description": "طول جغرافیایی (Longitude) محل بازرسی",
"example": "51.3890"
},
"hatching_id": {
"type": "integer",
"required": false,
"description": "شناسه یکتای جوجه‌ریزی که بازرسی برای آن انجام می‌شود",
"example": 12345
},
"role": {
"type": "string",
"required": false,
"description": "نقش کاربری که بازرسی را انجام می‌دهد",
"example": "inspector"
},
"report_information": {
"type": "object",
"required": false,
"description": "اطلاعات کامل بازرسی در بخش‌های مختلف",
"properties": {
"general_condition_hall": {
"type": "object",
"required": false,
"description": "اطلاعات مربوط به شرایط عمومی سالن مرغداری",
"properties": {
"images": {
"type": "array",
"items": {
"type": "string"
},
"required": false,
"description": "لیست آدرس تصاویر مربوط به شرایط سالن"
},
"health_status": {
"type": "string",
"required": false,
"description": "وضعیت سلامت سالن"
},
"ventilation_status": {
"type": "string",
"required": false,
"description": "وضعیت سیستم تهویه"
},
"bed_condition": {
"type": "string",
"required": false,
"description": "وضعیت بستر سالن"
},
"temperature": {
"type": "string",
"required": false,
"description": "دمای سالن"
},
"drinking_water_source": {
"type": "string",
"required": false,
"description": "منبع آب آشامیدنی"
},
"drinking_water_quality": {
"type": "string",
"required": false,
"description": "کیفیت آب آشامیدنی"
}
}
},
"casualties": {
"type": "object",
"required": false,
"description": "اطلاعات مربوط به تلفات و خسارات",
"properties": {
"normal_losses": {
"type": "integer",
"required": false,
"description": "تعداد تلفات عادی",
"example": 50
},
"abnormal_losses": {
"type": "integer",
"required": false,
"description": "تعداد تلفات غیرعادی",
"example": 10
},
"source_of_hatching": {
"type": "string",
"required": false,
"description": "منبع جوجه‌ریزی"
},
"cause_abnormal_losses": {
"type": "string",
"required": false,
"description": "علت تلفات غیرعادی"
},
"type_disease": {
"type": "string",
"required": false,
"description": "نوع بیماری (در صورت وجود)"
},
"sampling_done": {
"type": "boolean",
"required": false,
"description": "آیا نمونه‌برداری انجام شده است؟",
"example": true
},
"type_sampling": {
"type": "string",
"required": false,
"description": "نوع نمونه‌برداری انجام شده"
},
"images": {
"type": "array",
"items": {
"type": "string"
},
"required": false,
"description": "لیست آدرس تصاویر مربوط به تلفات"
}
}
},
"technical_officer": {
"type": "object",
"required": false,
"description": "اطلاعات مربوط به کارشناسان فنی",
"properties": {
"technical_health_officer": {
"type": "string",
"required": false,
"description": "نام یا اطلاعات کارشناس بهداشت"
},
"technical_engineering_officer": {
"type": "string",
"required": false,
"description": "نام یا اطلاعات کارشناس فنی مهندسی"
}
}
},
"input_status": {
"type": "object",
"required": false,
"description": "اطلاعات مربوط به وضعیت نهاده‌ها",
"properties": {
"input_status": {
"type": "string",
"required": false,
"description": "وضعیت نهاده‌ها"
},
"company_name": {
"type": "string",
"required": false,
"description": "نام شرکت تامین‌کننده نهاده"
},
"tracking_code": {
"type": "string",
"required": false,
"description": "کد رهگیری نهاده"
},
"type_of_grain": {
"type": "string",
"required": false,
"description": "نوع دان مصرفی"
},
"inventory_in_warehouse": {
"type": "string",
"required": false,
"description": "موجودی نهاده در انبار"
},
"inventory_until_visit": {
"type": "string",
"required": false,
"description": "موجودی نهاده تا زمان بازدید"
},
"grade_grain": {
"type": "string",
"required": false,
"description": "درجه دان"
},
"images": {
"type": "array",
"items": {
"type": "string"
},
"required": false,
"description": "لیست آدرس تصاویر مربوط به نهاده‌ها"
}
}
},
"infrastructure_energy": {
"type": "object",
"required": false,
"description": "اطلاعات مربوط به زیرساخت و انرژی",
"properties": {
"generator_type": {
"type": "string",
"required": false,
"description": "نوع ژنراتور"
},
"generator_model": {
"type": "string",
"required": false,
"description": "مدل ژنراتور"
},
"generator_count": {
"type": "string",
"required": false,
"description": "تعداد ژنراتورها"
},
"generator_capacity": {
"type": "string",
"required": false,
"description": "ظرفیت ژنراتور"
},
"fuel_type": {
"type": "string",
"required": false,
"description": "نوع سوخت ژنراتور"
},
"generator_performance": {
"type": "string",
"required": false,
"description": "عملکرد ژنراتور"
},
"emergency_fuel_inventory": {
"type": "string",
"required": false,
"description": "موجودی سوخت اضطراری"
},
"has_power_cut_history": {
"type": "boolean",
"required": false,
"description": "آیا سابقه قطعی برق وجود دارد؟",
"example": true
},
"power_cut_duration": {
"type": "string",
"required": false,
"description": "مدت زمان قطعی برق"
},
"power_cut_hour": {
"type": "string",
"required": false,
"description": "ساعت قطعی برق"
},
"additional_notes": {
"type": "string",
"required": false,
"description": "یادداشت‌های اضافی"
}
}
},
"hr": {
"type": "object",
"required": false,
"description": "اطلاعات مربوط به نیروی انسانی",
"properties": {
"number_employed": {
"type": "integer",
"required": false,
"description": "تعداد کل کارکنان",
"example": 15
},
"number_indigenous": {
"type": "integer",
"required": false,
"description": "تعداد کارکنان بومی",
"example": 10
},
"number_non_indigenous": {
"type": "integer",
"required": false,
"description": "تعداد کارکنان غیربومی",
"example": 5
},
"contract_status": {
"type": "string",
"required": false,
"description": "وضعیت قرارداد کارکنان"
},
"trained": {
"type": "boolean",
"required": false,
"description": "آیا کارکنان آموزش دیده‌اند؟",
"example": true
}
}
},
"facilities": {
"type": "object",
"required": false,
"description": "اطلاعات مربوط به تسهیلات",
"properties": {
"has_facilities": {
"type": "boolean",
"required": false,
"description": "آیا تسهیلات دریافت شده است؟",
"example": true
},
"type_of_facility": {
"type": "string",
"required": false,
"description": "نوع تسهیلات"
},
"amount": {
"type": "integer",
"required": false,
"description": "مبلغ تسهیلات",
"example": 500000000
},
"date": {
"type": "string",
"required": false,
"description": "تاریخ دریافت تسهیلات"
},
"repayment_status": {
"type": "string",
"required": false,
"description": "وضعیت بازپرداخت تسهیلات"
},
"request_facilities": {
"type": "string",
"required": false,
"description": "درخواست تسهیلات"
}
}
},
"inspection_status": {
"type": "string",
"required": false,
"description": "وضعیت بازرسی (مثلاً: انجام شده، در حال انجام، لغو شده)"
},
"inspection_notes": {
"type": "string",
"required": false,
"description": "یادداشت‌ها و توضیحات بازرس"
}
}
}
},
"example_request": {
"lat": "35.6892",
"log": "51.3890",
"hatching_id": 12345,
"role": "inspector",
"report_information": {
"general_condition_hall": {
"images": [
"https://example.com/image1.jpg"
],
"health_status": "خوب",
"ventilation_status": "مناسب",
"bed_condition": "تمیز",
"temperature": "25",
"drinking_water_source": "چاه",
"drinking_water_quality": "عالی"
},
"casualties": {
"normal_losses": 50,
"abnormal_losses": 10,
"source_of_hatching": "مرکز جوجه‌کشی",
"cause_abnormal_losses": "بیماری",
"type_disease": "نیوکاسل",
"sampling_done": true,
"type_sampling": "خون",
"images": []
},
"technical_officer": {
"technical_health_officer": "احمد محمدی",
"technical_engineering_officer": "علی رضایی"
},
"input_status": {
"input_status": "کافی",
"company_name": "شرکت دان",
"tracking_code": "TR123456",
"type_of_grain": "استارتر",
"inventory_in_warehouse": "5000 کیلوگرم",
"inventory_until_visit": "4500 کیلوگرم",
"grade_grain": "A",
"images": []
},
"infrastructure_energy": {
"generator_type": "دیزلی",
"generator_model": "کامینز",
"generator_count": "2",
"generator_capacity": "100 کیلووات",
"fuel_type": "گازوئیل",
"generator_performance": "عالی",
"emergency_fuel_inventory": "5000 لیتر",
"has_power_cut_history": true,
"power_cut_duration": "2 ساعت",
"power_cut_hour": "14:00",
"additional_notes": "ژنراتورها به درستی نگهداری می‌شوند"
},
"hr": {
"number_employed": 15,
"number_indigenous": 10,
"number_non_indigenous": 5,
"contract_status": "قراردادی",
"trained": true
},
"facilities": {
"has_facilities": true,
"type_of_facility": "وام",
"amount": 500000000,
"date": "1403/01/15",
"repayment_status": "در حال بازپرداخت",
"request_facilities": "درخواست تسهیلات جدید"
},
"inspection_status": "انجام شده",
"inspection_notes": "بازرسی با موفقیت انجام شد"
}
}
}