fix: align reporting forms and demo analytics
All checks were successful
CI/CD Pipeline / Code Quality Checks (push) Successful in 2m21s
CI/CD Pipeline / Run Tests (push) Successful in 4m23s
CI/CD Pipeline / Build and Push Dev Images (push) Successful in 32s
CI/CD Pipeline / Deploy Dev via Compose (push) Successful in 52s

This commit is contained in:
2026-07-28 11:07:47 +02:00
parent ff0b2bdfca
commit df0f41b9c0
31 changed files with 1627 additions and 328 deletions

View File

@@ -90,10 +90,16 @@ class EconomicsRatioNormativesSerializer(serializers.Serializer):
ebitda_margin = serializers.FloatField(allow_null=True)
class EconomicsReportPeriodSerializer(serializers.Serializer):
year = serializers.IntegerField()
report_half_year = serializers.IntegerField(allow_null=True)
class EconomicsResponseSerializer(serializers.Serializer):
organization_id = serializers.UUIDField()
group = serializers.CharField()
periods = serializers.ListField(child=serializers.IntegerField())
report_periods = EconomicsReportPeriodSerializer(many=True)
data_available = serializers.BooleanField()
message = serializers.CharField(allow_null=True)
kpis = EconomicsKpisSerializer()
@@ -106,10 +112,10 @@ class PersonnelHeadcountSerializer(serializers.Serializer):
average_employees = serializers.IntegerField()
avg_payroll_employees = serializers.IntegerField()
payroll_fund = serializers.IntegerField()
production_workers = serializers.IntegerField()
engineering_workers = serializers.IntegerField()
administrative_workers = serializers.IntegerField()
workers_needed = serializers.IntegerField()
production_workers = serializers.IntegerField(allow_null=True)
engineering_workers = serializers.IntegerField(allow_null=True)
administrative_workers = serializers.IntegerField(allow_null=True)
workers_needed = serializers.IntegerField(allow_null=True)
class PersonnelAgeDistributionSerializer(serializers.Serializer):
@@ -119,16 +125,18 @@ class PersonnelAgeDistributionSerializer(serializers.Serializer):
class PersonnelHistorySerializer(serializers.Serializer):
year = serializers.IntegerField()
report_month = serializers.IntegerField(allow_null=True)
average_employees = serializers.IntegerField()
avg_payroll_employees = serializers.IntegerField()
average_age = serializers.FloatField()
average_age = serializers.FloatField(allow_null=True)
payroll_fund = serializers.IntegerField()
class PersonnelResponseSerializer(serializers.Serializer):
organization_id = serializers.UUIDField()
report_year = serializers.IntegerField()
average_age = serializers.FloatField()
report_month = serializers.IntegerField(allow_null=True)
average_age = serializers.FloatField(allow_null=True)
headcount = PersonnelHeadcountSerializer()
age_distribution = PersonnelAgeDistributionSerializer(many=True)
history = PersonnelHistorySerializer(many=True)
@@ -137,13 +145,13 @@ class PersonnelResponseSerializer(serializers.Serializer):
class EquipmentSummarySerializer(serializers.Serializer):
total_equipment = serializers.IntegerField()
machine_tools_and_equipment = serializers.IntegerField()
domestic_equipment = serializers.IntegerField()
domestic_equipment = serializers.IntegerField(allow_null=True)
imported_equipment = serializers.IntegerField()
physical_wear_percent = serializers.FloatField()
weighted_wear_percent = serializers.FloatField()
utilization_rate = serializers.FloatField()
avg_shift_work = serializers.FloatField()
equipment_needed = serializers.IntegerField()
weighted_wear_percent = serializers.FloatField(allow_null=True)
utilization_rate = serializers.FloatField(allow_null=True)
avg_shift_work = serializers.FloatField(allow_null=True)
equipment_needed = serializers.IntegerField(allow_null=True)
average_age_years = serializers.FloatField()
commissioned_equipment = serializers.IntegerField()
decommissioned_equipment = serializers.IntegerField()
@@ -152,19 +160,19 @@ class EquipmentSummarySerializer(serializers.Serializer):
class EquipmentAgeDistributionSerializer(serializers.Serializer):
bucket = serializers.CharField()
units_count = serializers.IntegerField()
imported_equipment = serializers.IntegerField()
utilization_rate = serializers.FloatField()
imported_equipment = serializers.IntegerField(allow_null=True)
utilization_rate = serializers.FloatField(allow_null=True)
lease_share_itn_percent = serializers.FloatField(allow_null=True)
weighted_wear_percent = serializers.FloatField()
weighted_wear_percent = serializers.FloatField(allow_null=True)
class EquipmentCategorySerializer(serializers.Serializer):
category = serializers.CharField()
total_equipment = serializers.IntegerField()
domestic_equipment = serializers.IntegerField()
domestic_equipment = serializers.IntegerField(allow_null=True)
imported_equipment = serializers.IntegerField()
physical_wear_percent = serializers.FloatField()
weighted_wear_percent = serializers.FloatField()
physical_wear_percent = serializers.FloatField(allow_null=True)
weighted_wear_percent = serializers.FloatField(allow_null=True)
utilization_rate = serializers.FloatField(allow_null=True)
lease_share_itn_percent = serializers.FloatField(allow_null=True)