Extend organization analytics contract and fix test warnings
Some checks failed
CI/CD Pipeline / Code Quality Checks (push) Failing after 1m42s
CI/CD Pipeline / Run Tests (push) Successful in 1m45s
CI/CD Pipeline / Build Docker Images (push) Has been skipped
CI/CD Pipeline / Push to Gitea Registry (push) Has been skipped
CI/CD Pipeline / Deploy to Server (push) Has been skipped
Some checks failed
CI/CD Pipeline / Code Quality Checks (push) Failing after 1m42s
CI/CD Pipeline / Run Tests (push) Successful in 1m45s
CI/CD Pipeline / Build Docker Images (push) Has been skipped
CI/CD Pipeline / Push to Gitea Registry (push) Has been skipped
CI/CD Pipeline / Deploy to Server (push) Has been skipped
This commit is contained in:
347
src/apps/organization/contract_serializers.py
Normal file
347
src/apps/organization/contract_serializers.py
Normal file
@@ -0,0 +1,347 @@
|
||||
"""Serializer contracts for OpenAPI documentation."""
|
||||
|
||||
from rest_framework import serializers
|
||||
|
||||
from apps.organization.serializers import (
|
||||
CorporationScopeDictionarySerializer,
|
||||
OrganizationCatalogDetailSerializer,
|
||||
OrganizationCatalogListSerializer,
|
||||
)
|
||||
|
||||
|
||||
class OrganizationCatalogListResponseSerializer(serializers.Serializer):
|
||||
count = serializers.IntegerField()
|
||||
next = serializers.CharField(allow_null=True)
|
||||
previous = serializers.CharField(allow_null=True)
|
||||
results = OrganizationCatalogListSerializer(many=True)
|
||||
|
||||
|
||||
class CorporationScopeDictionaryResponseSerializer(serializers.Serializer):
|
||||
results = CorporationScopeDictionarySerializer(many=True)
|
||||
|
||||
|
||||
class FinancialSummaryMetricSerializer(serializers.Serializer):
|
||||
amount = serializers.IntegerField()
|
||||
previous_amount = serializers.IntegerField()
|
||||
delta_percent = serializers.FloatField()
|
||||
|
||||
|
||||
class FinancialSummaryReportPeriodSerializer(serializers.Serializer):
|
||||
year = serializers.IntegerField()
|
||||
quarter = serializers.IntegerField(allow_null=True)
|
||||
|
||||
|
||||
class FinancialSummaryResponseSerializer(serializers.Serializer):
|
||||
organization_id = serializers.UUIDField()
|
||||
report_period = FinancialSummaryReportPeriodSerializer()
|
||||
revenue = FinancialSummaryMetricSerializer()
|
||||
net_profit = FinancialSummaryMetricSerializer()
|
||||
taxes_paid = FinancialSummaryMetricSerializer()
|
||||
insurance_contributions = FinancialSummaryMetricSerializer()
|
||||
|
||||
|
||||
class EconomicsKpiSerializer(serializers.Serializer):
|
||||
value = serializers.IntegerField()
|
||||
unit = serializers.CharField()
|
||||
|
||||
|
||||
class EconomicsKpisSerializer(serializers.Serializer):
|
||||
revenue = EconomicsKpiSerializer(required=False)
|
||||
ebitda = EconomicsKpiSerializer(required=False)
|
||||
net_profit = EconomicsKpiSerializer(required=False)
|
||||
gross_profit = EconomicsKpiSerializer(required=False)
|
||||
operating_profit = EconomicsKpiSerializer(required=False)
|
||||
net_debt = EconomicsKpiSerializer(required=False)
|
||||
loans = EconomicsKpiSerializer(required=False)
|
||||
assets = EconomicsKpiSerializer(required=False)
|
||||
capex = EconomicsKpiSerializer(required=False)
|
||||
rd_expenses = EconomicsKpiSerializer(required=False)
|
||||
|
||||
|
||||
class EconomicsPointSerializer(serializers.Serializer):
|
||||
period = serializers.IntegerField()
|
||||
value = serializers.IntegerField()
|
||||
|
||||
|
||||
class EconomicsMetricSeriesSerializer(serializers.Serializer):
|
||||
metric = serializers.CharField()
|
||||
unit = serializers.CharField()
|
||||
points = EconomicsPointSerializer(many=True)
|
||||
|
||||
|
||||
class EconomicsRatioSerializer(serializers.Serializer):
|
||||
period = serializers.IntegerField()
|
||||
ros = serializers.FloatField()
|
||||
roa = serializers.FloatField()
|
||||
roe = serializers.FloatField()
|
||||
ebitda_margin = serializers.FloatField()
|
||||
|
||||
|
||||
class EconomicsRatioNormativesSerializer(serializers.Serializer):
|
||||
ros = serializers.FloatField(allow_null=True)
|
||||
roa = serializers.FloatField(allow_null=True)
|
||||
roe = serializers.FloatField(allow_null=True)
|
||||
ebitda_margin = serializers.FloatField(allow_null=True)
|
||||
|
||||
|
||||
class EconomicsResponseSerializer(serializers.Serializer):
|
||||
organization_id = serializers.UUIDField()
|
||||
group = serializers.CharField()
|
||||
periods = serializers.ListField(child=serializers.IntegerField())
|
||||
kpis = EconomicsKpisSerializer()
|
||||
series = EconomicsMetricSeriesSerializer(many=True)
|
||||
ratios = EconomicsRatioSerializer(many=True)
|
||||
ratio_normatives = EconomicsRatioNormativesSerializer()
|
||||
|
||||
|
||||
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()
|
||||
|
||||
|
||||
class PersonnelAgeDistributionSerializer(serializers.Serializer):
|
||||
age_group = serializers.CharField()
|
||||
employees_count = serializers.IntegerField()
|
||||
|
||||
|
||||
class PersonnelHistorySerializer(serializers.Serializer):
|
||||
year = serializers.IntegerField()
|
||||
average_employees = serializers.IntegerField()
|
||||
|
||||
|
||||
class PersonnelResponseSerializer(serializers.Serializer):
|
||||
organization_id = serializers.UUIDField()
|
||||
report_year = serializers.IntegerField()
|
||||
average_age = serializers.FloatField()
|
||||
headcount = PersonnelHeadcountSerializer()
|
||||
age_distribution = PersonnelAgeDistributionSerializer(many=True)
|
||||
history = PersonnelHistorySerializer(many=True)
|
||||
|
||||
|
||||
class EquipmentSummarySerializer(serializers.Serializer):
|
||||
total_equipment = serializers.IntegerField()
|
||||
domestic_equipment = serializers.IntegerField()
|
||||
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()
|
||||
average_age_years = serializers.FloatField()
|
||||
commissioned_equipment = serializers.IntegerField()
|
||||
decommissioned_equipment = serializers.IntegerField()
|
||||
|
||||
|
||||
class EquipmentAgeDistributionSerializer(serializers.Serializer):
|
||||
bucket = serializers.CharField()
|
||||
units_count = serializers.IntegerField()
|
||||
|
||||
|
||||
class EquipmentCategorySerializer(serializers.Serializer):
|
||||
category = serializers.CharField()
|
||||
total_equipment = serializers.IntegerField()
|
||||
domestic_equipment = serializers.IntegerField()
|
||||
imported_equipment = serializers.IntegerField()
|
||||
physical_wear_percent = serializers.FloatField()
|
||||
weighted_wear_percent = serializers.FloatField()
|
||||
utilization_rate = serializers.FloatField(allow_null=True)
|
||||
lease_share_itn_percent = serializers.FloatField(allow_null=True)
|
||||
|
||||
|
||||
class EquipmentDynamicsPointSerializer(serializers.Serializer):
|
||||
period = serializers.IntegerField()
|
||||
value = serializers.IntegerField()
|
||||
|
||||
|
||||
class EquipmentDynamicsSeriesSerializer(serializers.Serializer):
|
||||
metric = serializers.CharField()
|
||||
label = serializers.CharField()
|
||||
points = EquipmentDynamicsPointSerializer(many=True)
|
||||
|
||||
|
||||
class EquipmentResponseSerializer(serializers.Serializer):
|
||||
organization_id = serializers.UUIDField()
|
||||
report_year = serializers.IntegerField()
|
||||
summary = EquipmentSummarySerializer()
|
||||
age_distribution = EquipmentAgeDistributionSerializer(many=True)
|
||||
categories = EquipmentCategorySerializer(many=True)
|
||||
dynamics_series = EquipmentDynamicsSeriesSerializer(many=True)
|
||||
|
||||
|
||||
class ProductsSummarySerializer(serializers.Serializer):
|
||||
military_output_amount = serializers.IntegerField()
|
||||
civilian_output_amount = serializers.IntegerField()
|
||||
hightech_output_amount = serializers.IntegerField()
|
||||
rd_volume_amount = serializers.IntegerField()
|
||||
shipped_goods_amount = serializers.IntegerField()
|
||||
|
||||
|
||||
class ProductsProductionSeriesSerializer(serializers.Serializer):
|
||||
period = serializers.CharField()
|
||||
military_output_amount = serializers.IntegerField()
|
||||
civilian_output_amount = serializers.IntegerField()
|
||||
hightech_output_amount = serializers.IntegerField()
|
||||
|
||||
|
||||
class ProductsSalesSeriesSerializer(serializers.Serializer):
|
||||
period = serializers.CharField()
|
||||
military_domestic_amount = serializers.IntegerField()
|
||||
military_export_amount = serializers.IntegerField()
|
||||
civilian_domestic_amount = serializers.IntegerField()
|
||||
civilian_export_amount = serializers.IntegerField()
|
||||
|
||||
|
||||
class ProductsRdVolumeSeriesSerializer(serializers.Serializer):
|
||||
period = serializers.CharField()
|
||||
rd_volume_amount = serializers.IntegerField()
|
||||
|
||||
|
||||
class ProductsShippedGoodsSeriesSerializer(serializers.Serializer):
|
||||
period = serializers.CharField()
|
||||
shipped_goods_amount = serializers.IntegerField()
|
||||
|
||||
|
||||
class ProductsTableRowSerializer(serializers.Serializer):
|
||||
period = serializers.CharField()
|
||||
military_output_amount = serializers.IntegerField()
|
||||
civilian_output_amount = serializers.IntegerField()
|
||||
hightech_output_amount = serializers.IntegerField()
|
||||
rd_volume_amount = serializers.IntegerField()
|
||||
shipped_goods_amount = serializers.IntegerField()
|
||||
|
||||
|
||||
class ProductsResponseSerializer(serializers.Serializer):
|
||||
organization_id = serializers.UUIDField()
|
||||
report_year = serializers.IntegerField()
|
||||
frequency = serializers.CharField()
|
||||
price_mode = serializers.CharField()
|
||||
summary = ProductsSummarySerializer()
|
||||
production_series = ProductsProductionSeriesSerializer(many=True)
|
||||
sales_series = ProductsSalesSeriesSerializer(many=True)
|
||||
rd_volume_series = ProductsRdVolumeSeriesSerializer(many=True)
|
||||
shipped_goods_series = ProductsShippedGoodsSeriesSerializer(many=True)
|
||||
table = ProductsTableRowSerializer(many=True)
|
||||
|
||||
|
||||
class RiskProfileResponseSerializer(serializers.Serializer):
|
||||
organization_id = serializers.UUIDField()
|
||||
financial_reports_available = serializers.BooleanField()
|
||||
tax_reports_available = serializers.BooleanField()
|
||||
in_defense_unreliable_suppliers_registry = serializers.BooleanField()
|
||||
in_275_fz_registry = serializers.BooleanField()
|
||||
bankruptcy_messages_found = serializers.BooleanField()
|
||||
risk_level = serializers.CharField()
|
||||
updated_at = serializers.CharField()
|
||||
|
||||
|
||||
class ForecastRowSerializer(serializers.Serializer):
|
||||
year = serializers.IntegerField()
|
||||
revenue_amount = serializers.IntegerField()
|
||||
net_profit_amount = serializers.IntegerField()
|
||||
margin_percent = serializers.FloatField()
|
||||
|
||||
|
||||
class ForecastSummarySerializer(serializers.Serializer):
|
||||
revenue_cagr_percent = serializers.FloatField()
|
||||
net_profit_cagr_percent = serializers.FloatField()
|
||||
horizon_margin_percent = serializers.FloatField()
|
||||
horizon_revenue_amount = serializers.IntegerField()
|
||||
|
||||
|
||||
class ForecastProductivityRowSerializer(serializers.Serializer):
|
||||
year = serializers.IntegerField()
|
||||
revenue_per_employee_amount = serializers.IntegerField()
|
||||
|
||||
|
||||
class ForecastHeadcountRowSerializer(serializers.Serializer):
|
||||
year = serializers.IntegerField()
|
||||
average_employees = serializers.IntegerField()
|
||||
|
||||
|
||||
class ForecastInvestmentRowSerializer(serializers.Serializer):
|
||||
year = serializers.IntegerField()
|
||||
capex_amount = serializers.IntegerField()
|
||||
|
||||
|
||||
class ForecastRdRowSerializer(serializers.Serializer):
|
||||
year = serializers.IntegerField()
|
||||
rd_volume_amount = serializers.IntegerField()
|
||||
|
||||
|
||||
class ForecastTableRowSerializer(serializers.Serializer):
|
||||
year = serializers.IntegerField()
|
||||
revenue_amount = serializers.IntegerField()
|
||||
net_profit_amount = serializers.IntegerField()
|
||||
margin_percent = serializers.FloatField()
|
||||
revenue_per_employee_amount = serializers.IntegerField()
|
||||
average_employees = serializers.IntegerField()
|
||||
capex_amount = serializers.IntegerField()
|
||||
rd_volume_amount = serializers.IntegerField()
|
||||
|
||||
|
||||
class ForecastRiskFactorSerializer(serializers.Serializer):
|
||||
code = serializers.CharField()
|
||||
name = serializers.CharField()
|
||||
impact_level = serializers.CharField()
|
||||
probability_level = serializers.CharField()
|
||||
comment = serializers.CharField()
|
||||
|
||||
|
||||
class ForecastResponseSerializer(serializers.Serializer):
|
||||
organization_id = serializers.UUIDField()
|
||||
scenario = serializers.CharField()
|
||||
horizon_years = serializers.IntegerField()
|
||||
base_year = serializers.IntegerField()
|
||||
summary = ForecastSummarySerializer()
|
||||
forecast = ForecastRowSerializer(many=True)
|
||||
table = ForecastTableRowSerializer(many=True)
|
||||
productivity_series = ForecastProductivityRowSerializer(many=True)
|
||||
headcount_series = ForecastHeadcountRowSerializer(many=True)
|
||||
investment_series = ForecastInvestmentRowSerializer(many=True)
|
||||
rd_series = ForecastRdRowSerializer(many=True)
|
||||
risk_factors = ForecastRiskFactorSerializer(many=True)
|
||||
opportunity_factors = ForecastRiskFactorSerializer(many=True)
|
||||
|
||||
|
||||
class DashboardDistributionSerializer(serializers.Serializer):
|
||||
cluster = serializers.CharField()
|
||||
cluster_label = serializers.CharField(required=False)
|
||||
organizations_share_percent = serializers.FloatField()
|
||||
|
||||
|
||||
class DashboardExecutorsSerializer(serializers.Serializer):
|
||||
cluster = serializers.CharField()
|
||||
executors_count = serializers.IntegerField()
|
||||
|
||||
|
||||
class DashboardHeadcountGrowthSerializer(serializers.Serializer):
|
||||
cluster = serializers.CharField()
|
||||
growth_percent = serializers.FloatField()
|
||||
|
||||
|
||||
class DashboardResponseSerializer(serializers.Serializer):
|
||||
corporation_scope = serializers.CharField(allow_null=True)
|
||||
distribution_by_cluster = DashboardDistributionSerializer(many=True)
|
||||
executors_by_cluster = DashboardExecutorsSerializer(many=True)
|
||||
headcount_growth_by_cluster = DashboardHeadcountGrowthSerializer(many=True)
|
||||
bankruptcy_free_share_by_cluster = DashboardDistributionSerializer(many=True)
|
||||
|
||||
|
||||
__all__ = [
|
||||
"CorporationScopeDictionaryResponseSerializer",
|
||||
"EconomicsResponseSerializer",
|
||||
"EquipmentResponseSerializer",
|
||||
"FinancialSummaryResponseSerializer",
|
||||
"ForecastResponseSerializer",
|
||||
"OrganizationCatalogDetailSerializer",
|
||||
"OrganizationCatalogListResponseSerializer",
|
||||
"PersonnelResponseSerializer",
|
||||
"ProductsResponseSerializer",
|
||||
"RiskProfileResponseSerializer",
|
||||
"DashboardResponseSerializer",
|
||||
]
|
||||
Reference in New Issue
Block a user