feat(parsers): add proverki.gov.ru parser with sync_inspections task
- Add InspectionRecord model with is_federal_law_248, data_year, data_month fields - Add ProverkiClient with Playwright support for JS-rendered portal - Add streaming XML parser for large files (>50MB) - Add sync_inspections task with incremental loading logic - Starts from 01.01.2025 if DB is empty - Loads both FZ-294 and FZ-248 inspections - Stops after 2 consecutive empty months - Add InspectionService methods: get_last_loaded_period, has_data_for_period - Add Minpromtorg parsers (certificates, manufacturers) - Add Django Admin for parser models - Update README with parsers documentation and changelog
This commit is contained in:
90
src/apps/parsers/clients/proverki/schemas.py
Normal file
90
src/apps/parsers/clients/proverki/schemas.py
Normal file
@@ -0,0 +1,90 @@
|
||||
"""
|
||||
Dataclass схемы для данных proverki.gov.ru.
|
||||
|
||||
Эти классы представляют данные о проверках, возвращаемые клиентом.
|
||||
Они не зависят от Django ORM и используются как DTO.
|
||||
"""
|
||||
|
||||
from dataclasses import dataclass
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class Inspection:
|
||||
"""
|
||||
Проверка из Единого реестра проверок.
|
||||
|
||||
Источник: ФГИС "Единый реестр проверок" (proverki.gov.ru).
|
||||
|
||||
Содержит данные о проведённых или запланированных проверках
|
||||
юридических лиц и индивидуальных предпринимателей.
|
||||
|
||||
Поддерживает два типа проверок:
|
||||
- ФЗ-294 (традиционные проверки)
|
||||
- ФЗ-248 (новые проверки с 2021 года)
|
||||
"""
|
||||
|
||||
registration_number: str
|
||||
"""Учётный номер проверки в реестре."""
|
||||
|
||||
inn: str
|
||||
"""ИНН проверяемого лица."""
|
||||
|
||||
ogrn: str
|
||||
"""ОГРН проверяемого лица."""
|
||||
|
||||
organisation_name: str
|
||||
"""Наименование проверяемого лица."""
|
||||
|
||||
control_authority: str
|
||||
"""Наименование контрольного (надзорного) органа."""
|
||||
|
||||
inspection_type: str
|
||||
"""Тип проверки (плановая/внеплановая)."""
|
||||
|
||||
inspection_form: str
|
||||
"""Форма проверки (документарная/выездная)."""
|
||||
|
||||
start_date: str
|
||||
"""Дата начала проверки (строка формата YYYY-MM-DD или DD.MM.YYYY)."""
|
||||
|
||||
end_date: str
|
||||
"""Дата окончания проверки."""
|
||||
|
||||
status: str
|
||||
"""Статус проверки."""
|
||||
|
||||
legal_basis: str
|
||||
"""Правовое основание проверки (ФЗ-294, ФЗ-248 и т.д.)."""
|
||||
|
||||
result: str = ""
|
||||
"""Результат проверки (если завершена)."""
|
||||
|
||||
is_federal_law_248: bool = False
|
||||
"""Признак проверки по ФЗ-248 (новые проверки с 2021 года)."""
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class InspectionPlan:
|
||||
"""
|
||||
План проверок на определённый период.
|
||||
|
||||
Содержит метаданные о плане проверок (год, период, количество записей).
|
||||
"""
|
||||
|
||||
year: int
|
||||
"""Год плана проверок."""
|
||||
|
||||
month: int | None
|
||||
"""Месяц (если план помесячный, иначе None)."""
|
||||
|
||||
file_url: str
|
||||
"""URL файла с данными плана."""
|
||||
|
||||
file_name: str
|
||||
"""Имя файла."""
|
||||
|
||||
records_count: int = 0
|
||||
"""Количество записей в плане (если известно)."""
|
||||
|
||||
file_format: str = "xml"
|
||||
"""Формат файла (xml, csv, xlsx)."""
|
||||
Reference in New Issue
Block a user