- 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
91 lines
2.9 KiB
Python
91 lines
2.9 KiB
Python
"""
|
||
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)."""
|