feat: expand platform APIs, sources, and test coverage
Some checks failed
CI/CD Pipeline / Run Tests (pull_request) Successful in 1m53s
CI/CD Pipeline / Telegram Notify Success (push) Has been cancelled
CI/CD Pipeline / Run Tests (push) Has been cancelled
CI/CD Pipeline / Code Quality Checks (push) Has been cancelled
CI/CD Pipeline / Code Quality Checks (pull_request) Failing after 2m54s
CI/CD Pipeline / Telegram Notify Success (pull_request) Has been skipped
Some checks failed
CI/CD Pipeline / Run Tests (pull_request) Successful in 1m53s
CI/CD Pipeline / Telegram Notify Success (push) Has been cancelled
CI/CD Pipeline / Run Tests (push) Has been cancelled
CI/CD Pipeline / Code Quality Checks (push) Has been cancelled
CI/CD Pipeline / Code Quality Checks (pull_request) Failing after 2m54s
CI/CD Pipeline / Telegram Notify Success (pull_request) Has been skipped
This commit is contained in:
@@ -8,6 +8,7 @@ from apps.parsers.models import (
|
||||
FinancialReport,
|
||||
FinancialReportLine,
|
||||
IndustrialCertificateRecord,
|
||||
IndustrialProductRecord,
|
||||
InspectionRecord,
|
||||
ManufacturerRecord,
|
||||
ParserLoadLog,
|
||||
@@ -77,6 +78,34 @@ class ManufacturerSerializer(serializers.ModelSerializer):
|
||||
read_only_fields = fields
|
||||
|
||||
|
||||
class IndustrialProductSerializer(serializers.ModelSerializer):
|
||||
"""
|
||||
Промышленная продукция из реестра Минпромторга.
|
||||
|
||||
Данные загружаются из Минпромторга.
|
||||
"""
|
||||
|
||||
class Meta:
|
||||
model = IndustrialProductRecord
|
||||
fields = [
|
||||
"id",
|
||||
"load_batch",
|
||||
"full_organisation_name",
|
||||
"ogrn",
|
||||
"inn",
|
||||
"registry_number",
|
||||
"product_name",
|
||||
"product_model",
|
||||
"okpd2_code",
|
||||
"tnved_code",
|
||||
"regulatory_document",
|
||||
"registry_organization",
|
||||
"created_at",
|
||||
"updated_at",
|
||||
]
|
||||
read_only_fields = fields
|
||||
|
||||
|
||||
# =============================================================================
|
||||
# Единый реестр проверок (proverki.gov.ru)
|
||||
# =============================================================================
|
||||
@@ -304,3 +333,124 @@ class ProxySerializer(serializers.ModelSerializer):
|
||||
"updated_at",
|
||||
]
|
||||
read_only_fields = fields
|
||||
|
||||
|
||||
class SourceCardRefreshParamSerializer(serializers.Serializer):
|
||||
"""Описание параметра ручного обновления карточки источника."""
|
||||
|
||||
name = serializers.CharField(read_only=True)
|
||||
label = serializers.CharField(read_only=True)
|
||||
description = serializers.CharField(read_only=True)
|
||||
required = serializers.BooleanField(read_only=True)
|
||||
type = serializers.CharField(read_only=True)
|
||||
default = serializers.JSONField(read_only=True)
|
||||
|
||||
|
||||
class SourceCardLoadSerializer(serializers.Serializer):
|
||||
"""Сводка по последней загрузке источника."""
|
||||
|
||||
batch_id = serializers.IntegerField(read_only=True)
|
||||
source = serializers.CharField(read_only=True)
|
||||
source_display = serializers.CharField(read_only=True)
|
||||
records_count = serializers.IntegerField(read_only=True)
|
||||
status = serializers.CharField(read_only=True)
|
||||
error_message = serializers.CharField(read_only=True)
|
||||
created_at = serializers.DateTimeField(read_only=True)
|
||||
updated_at = serializers.DateTimeField(read_only=True)
|
||||
|
||||
|
||||
class SourceCardTaskSerializer(serializers.Serializer):
|
||||
"""Краткая информация по фоновой задаче карточки."""
|
||||
|
||||
task_id = serializers.CharField(read_only=True)
|
||||
task_name = serializers.CharField(read_only=True)
|
||||
status = serializers.CharField(read_only=True)
|
||||
progress = serializers.IntegerField(read_only=True)
|
||||
progress_message = serializers.CharField(read_only=True)
|
||||
started_at = serializers.DateTimeField(read_only=True)
|
||||
created_at = serializers.DateTimeField(read_only=True)
|
||||
meta = serializers.JSONField(read_only=True)
|
||||
|
||||
|
||||
class SourceCardItemSerializer(serializers.Serializer):
|
||||
"""Подисточник внутри агрегированной карточки."""
|
||||
|
||||
code = serializers.CharField(read_only=True)
|
||||
title = serializers.CharField(read_only=True)
|
||||
description = serializers.CharField(read_only=True)
|
||||
parser_source = serializers.CharField(read_only=True, allow_null=True)
|
||||
parser_source_display = serializers.CharField(read_only=True, allow_null=True)
|
||||
records_count = serializers.IntegerField(read_only=True)
|
||||
organizations_count = serializers.IntegerField(read_only=True)
|
||||
last_updated_at = serializers.DateTimeField(read_only=True, allow_null=True)
|
||||
latest_load = SourceCardLoadSerializer(read_only=True, allow_null=True)
|
||||
latest_success_load = SourceCardLoadSerializer(read_only=True, allow_null=True)
|
||||
|
||||
|
||||
class SourceCardSerializer(serializers.Serializer):
|
||||
"""Serializer for frontend source cards list."""
|
||||
|
||||
slug = serializers.CharField(read_only=True)
|
||||
title = serializers.CharField(read_only=True)
|
||||
description = serializers.CharField(read_only=True)
|
||||
order = serializers.IntegerField(read_only=True)
|
||||
is_available = serializers.BooleanField(read_only=True)
|
||||
status = serializers.CharField(read_only=True)
|
||||
status_label = serializers.CharField(read_only=True)
|
||||
progress = serializers.IntegerField(read_only=True)
|
||||
records_count = serializers.IntegerField(read_only=True)
|
||||
organizations_count = serializers.IntegerField(read_only=True)
|
||||
last_updated_at = serializers.DateTimeField(read_only=True, allow_null=True)
|
||||
next_update_at = serializers.DateTimeField(read_only=True, allow_null=True)
|
||||
error_message = serializers.CharField(read_only=True)
|
||||
task_names = serializers.ListField(child=serializers.CharField(), read_only=True)
|
||||
refresh_requires_params = serializers.BooleanField(read_only=True)
|
||||
refresh_params = SourceCardRefreshParamSerializer(many=True, read_only=True)
|
||||
|
||||
|
||||
class SourceTaskStatusSerializer(serializers.Serializer):
|
||||
"""Табличная строка статуса источника для экрана задач парсинга."""
|
||||
|
||||
row_number = serializers.IntegerField(read_only=True)
|
||||
slug = serializers.CharField(read_only=True)
|
||||
source = serializers.CharField(read_only=True)
|
||||
status = serializers.CharField(read_only=True)
|
||||
status_label = serializers.CharField(read_only=True)
|
||||
actualized_at = serializers.DateTimeField(read_only=True, allow_null=True)
|
||||
next_update_at = serializers.DateTimeField(read_only=True, allow_null=True)
|
||||
records_count = serializers.IntegerField(read_only=True)
|
||||
organizations_count = serializers.IntegerField(read_only=True)
|
||||
progress = serializers.IntegerField(read_only=True)
|
||||
error_message = serializers.CharField(read_only=True)
|
||||
active_tasks = SourceCardTaskSerializer(many=True, read_only=True)
|
||||
|
||||
|
||||
class SourceCardDetailSerializer(SourceCardSerializer):
|
||||
"""Detailed serializer for a single frontend source card."""
|
||||
|
||||
active_tasks = SourceCardTaskSerializer(many=True, read_only=True)
|
||||
source_items = SourceCardItemSerializer(many=True, read_only=True)
|
||||
latest_load = SourceCardLoadSerializer(read_only=True, allow_null=True)
|
||||
latest_success_load = SourceCardLoadSerializer(read_only=True, allow_null=True)
|
||||
|
||||
|
||||
class SourceCardRefreshRequestSerializer(serializers.Serializer):
|
||||
"""Request body for manual card refresh."""
|
||||
|
||||
params = serializers.DictField(required=False)
|
||||
|
||||
|
||||
class SourceCardRefreshTaskSerializer(serializers.Serializer):
|
||||
"""Queued task info after refresh start."""
|
||||
|
||||
task_id = serializers.CharField(read_only=True)
|
||||
task_name = serializers.CharField(read_only=True)
|
||||
|
||||
|
||||
class SourceCardRefreshResponseSerializer(serializers.Serializer):
|
||||
"""Response serializer for manual card refresh."""
|
||||
|
||||
source_card = serializers.CharField(read_only=True)
|
||||
status = serializers.CharField(read_only=True)
|
||||
requested_at = serializers.DateTimeField(read_only=True)
|
||||
tasks = SourceCardRefreshTaskSerializer(many=True, read_only=True)
|
||||
|
||||
Reference in New Issue
Block a user