Files
mostovik-backend/src/apps/parsers/clients/proverki/schemas.py
Aleksandr Meshchriakov 199d871923
Some checks failed
CI/CD Pipeline / Code Quality Checks (push) Failing after 1m28s
CI/CD Pipeline / Build Docker Images (push) Has been cancelled
CI/CD Pipeline / Push to Gitea Registry (push) Has been cancelled
CI/CD Pipeline / Run Tests (push) Has been cancelled
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
2026-01-21 20:16:25 +01:00

91 lines
2.9 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""
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)."""