feat(api): полное API для всех парсеров с документацией
This commit is contained in:
@@ -1,13 +1,164 @@
|
||||
"""
|
||||
Сериализаторы для приложения парсеров.
|
||||
|
||||
Все сериализаторы read-only, так как данные загружаются только через парсеры.
|
||||
"""
|
||||
|
||||
from apps.parsers.models import FinancialReport, FinancialReportLine
|
||||
from apps.parsers.models import (
|
||||
FinancialReport,
|
||||
FinancialReportLine,
|
||||
IndustrialCertificateRecord,
|
||||
InspectionRecord,
|
||||
ManufacturerRecord,
|
||||
ParserLoadLog,
|
||||
ProcurementRecord,
|
||||
Proxy,
|
||||
)
|
||||
from rest_framework import serializers
|
||||
|
||||
# =============================================================================
|
||||
# Минпромторг - Сертификаты промышленного производства
|
||||
# =============================================================================
|
||||
|
||||
|
||||
class IndustrialCertificateSerializer(serializers.ModelSerializer):
|
||||
"""
|
||||
Сертификат промышленного производства РФ.
|
||||
|
||||
Данные загружаются из Минпромторга.
|
||||
"""
|
||||
|
||||
class Meta:
|
||||
model = IndustrialCertificateRecord
|
||||
fields = [
|
||||
"id",
|
||||
"load_batch",
|
||||
"issue_date",
|
||||
"certificate_number",
|
||||
"expiry_date",
|
||||
"certificate_file_url",
|
||||
"organisation_name",
|
||||
"inn",
|
||||
"ogrn",
|
||||
"created_at",
|
||||
"updated_at",
|
||||
]
|
||||
read_only_fields = fields
|
||||
|
||||
|
||||
# =============================================================================
|
||||
# Минпромторг - Реестр производителей
|
||||
# =============================================================================
|
||||
|
||||
|
||||
class ManufacturerSerializer(serializers.ModelSerializer):
|
||||
"""
|
||||
Производитель из реестра Минпромторга.
|
||||
|
||||
Данные загружаются из Минпромторга.
|
||||
"""
|
||||
|
||||
class Meta:
|
||||
model = ManufacturerRecord
|
||||
fields = [
|
||||
"id",
|
||||
"load_batch",
|
||||
"full_legal_name",
|
||||
"inn",
|
||||
"ogrn",
|
||||
"address",
|
||||
"created_at",
|
||||
"updated_at",
|
||||
]
|
||||
read_only_fields = fields
|
||||
|
||||
|
||||
# =============================================================================
|
||||
# Единый реестр проверок (proverki.gov.ru)
|
||||
# =============================================================================
|
||||
|
||||
|
||||
class InspectionSerializer(serializers.ModelSerializer):
|
||||
"""
|
||||
Проверка из Единого реестра проверок.
|
||||
|
||||
Поддерживает ФЗ-294 и ФЗ-248.
|
||||
"""
|
||||
|
||||
class Meta:
|
||||
model = InspectionRecord
|
||||
fields = [
|
||||
"id",
|
||||
"load_batch",
|
||||
"registration_number",
|
||||
"inn",
|
||||
"ogrn",
|
||||
"organisation_name",
|
||||
"control_authority",
|
||||
"inspection_type",
|
||||
"inspection_form",
|
||||
"start_date",
|
||||
"end_date",
|
||||
"status",
|
||||
"legal_basis",
|
||||
"result",
|
||||
"is_federal_law_248",
|
||||
"data_year",
|
||||
"data_month",
|
||||
"created_at",
|
||||
"updated_at",
|
||||
]
|
||||
read_only_fields = fields
|
||||
|
||||
|
||||
# =============================================================================
|
||||
# Государственные закупки (zakupki.gov.ru)
|
||||
# =============================================================================
|
||||
|
||||
|
||||
class ProcurementSerializer(serializers.ModelSerializer):
|
||||
"""
|
||||
Государственная закупка из ЕИС zakupki.gov.ru.
|
||||
|
||||
Поддерживает 44-ФЗ и 223-ФЗ.
|
||||
"""
|
||||
|
||||
class Meta:
|
||||
model = ProcurementRecord
|
||||
fields = [
|
||||
"id",
|
||||
"load_batch",
|
||||
"purchase_number",
|
||||
"purchase_name",
|
||||
"customer_inn",
|
||||
"customer_kpp",
|
||||
"customer_ogrn",
|
||||
"customer_name",
|
||||
"max_price",
|
||||
"currency_code",
|
||||
"placement_method",
|
||||
"publish_date",
|
||||
"end_date",
|
||||
"status",
|
||||
"law_type",
|
||||
"purchase_object_info",
|
||||
"href",
|
||||
"region_code",
|
||||
"data_year",
|
||||
"data_month",
|
||||
"created_at",
|
||||
"updated_at",
|
||||
]
|
||||
read_only_fields = fields
|
||||
|
||||
|
||||
# =============================================================================
|
||||
# ФНС - Бухгалтерская отчетность
|
||||
# =============================================================================
|
||||
|
||||
|
||||
class FinancialReportLineSerializer(serializers.ModelSerializer):
|
||||
"""Сериализатор строки финансового отчета."""
|
||||
"""Строка финансового отчета."""
|
||||
|
||||
class Meta:
|
||||
model = FinancialReportLine
|
||||
@@ -23,7 +174,11 @@ class FinancialReportLineSerializer(serializers.ModelSerializer):
|
||||
|
||||
|
||||
class FinancialReportSerializer(serializers.ModelSerializer):
|
||||
"""Сериализатор финансового отчета."""
|
||||
"""
|
||||
Финансовый отчет ФНС.
|
||||
|
||||
Данные загружаются из Excel файлов.
|
||||
"""
|
||||
|
||||
lines_count = serializers.SerializerMethodField()
|
||||
|
||||
@@ -50,7 +205,7 @@ class FinancialReportSerializer(serializers.ModelSerializer):
|
||||
|
||||
|
||||
class FinancialReportDetailSerializer(FinancialReportSerializer):
|
||||
"""Сериализатор финансового отчета с детализацией строк."""
|
||||
"""Финансовый отчет с детализацией строк."""
|
||||
|
||||
lines = FinancialReportLineSerializer(many=True, read_only=True)
|
||||
|
||||
@@ -59,7 +214,11 @@ class FinancialReportDetailSerializer(FinancialReportSerializer):
|
||||
|
||||
|
||||
class FNSFileUploadSerializer(serializers.Serializer):
|
||||
"""Сериализатор для загрузки файлов FNS."""
|
||||
"""
|
||||
Сериализатор для загрузки файлов FNS.
|
||||
|
||||
Принимает список Excel файлов в формате fin_{id}_{ogrn}.xlsx
|
||||
"""
|
||||
|
||||
files = serializers.ListField(
|
||||
child=serializers.FileField(),
|
||||
@@ -81,3 +240,55 @@ class FNSFileUploadSerializer(serializers.Serializer):
|
||||
)
|
||||
|
||||
return value
|
||||
|
||||
|
||||
# =============================================================================
|
||||
# Служебные модели
|
||||
# =============================================================================
|
||||
|
||||
|
||||
class ParserLoadLogSerializer(serializers.ModelSerializer):
|
||||
"""
|
||||
Лог загрузки парсера.
|
||||
|
||||
Информация о каждой загрузке данных из внешнего источника.
|
||||
"""
|
||||
|
||||
source_display = serializers.CharField(source="get_source_display", read_only=True)
|
||||
|
||||
class Meta:
|
||||
model = ParserLoadLog
|
||||
fields = [
|
||||
"id",
|
||||
"batch_id",
|
||||
"source",
|
||||
"source_display",
|
||||
"records_count",
|
||||
"status",
|
||||
"error_message",
|
||||
"created_at",
|
||||
"updated_at",
|
||||
]
|
||||
read_only_fields = fields
|
||||
|
||||
|
||||
class ProxySerializer(serializers.ModelSerializer):
|
||||
"""
|
||||
Прокси-сервер для парсеров.
|
||||
|
||||
Используется для обхода блокировок при парсинге.
|
||||
"""
|
||||
|
||||
class Meta:
|
||||
model = Proxy
|
||||
fields = [
|
||||
"id",
|
||||
"address",
|
||||
"is_active",
|
||||
"last_used_at",
|
||||
"fail_count",
|
||||
"description",
|
||||
"created_at",
|
||||
"updated_at",
|
||||
]
|
||||
read_only_fields = fields
|
||||
|
||||
Reference in New Issue
Block a user