feat: add parser source dashboard and scheduling

This commit is contained in:
2026-04-27 23:36:28 +02:00
parent 199d871923
commit 5da808167d
94 changed files with 14985 additions and 255 deletions

View File

@@ -3,17 +3,16 @@
import random
from datetime import timedelta
from django.utils import timezone
import factory
from apps.parsers.models import (
GenericParserRecord,
IndustrialCertificateRecord,
InspectionRecord,
ManufacturerRecord,
ParserLoadLog,
Proxy,
)
from django.utils import timezone
# === Хелперы для генерации реалистичных данных ===
@@ -320,7 +319,9 @@ class InspectionRecordFactory(factory.django.DjangoModelFactory):
lambda _: random.choice(["плановая", "внеплановая"])
)
inspection_form = factory.LazyAttribute(
lambda _: random.choice(["документарная", "выездная", "документарная и выездная"])
lambda _: random.choice(
["документарная", "выездная", "документарная и выездная"]
)
)
start_date = factory.LazyAttribute(
lambda _: (timezone.now() - timedelta(days=random.randint(1, 180))).strftime(
@@ -339,9 +340,35 @@ class InspectionRecordFactory(factory.django.DjangoModelFactory):
lambda _: random.choice(["294-ФЗ", "248-ФЗ", "184-ФЗ"])
)
result = factory.LazyAttribute(
lambda _: random.choice(
["нарушения не выявлены", "выявлены нарушения", ""]
)
lambda _: random.choice(["нарушения не выявлены", "выявлены нарушения", ""])
if random.random() > 0.3
else ""
)
class GenericParserRecordFactory(factory.django.DjangoModelFactory):
"""Factory for GenericParserRecord model."""
class Meta:
model = GenericParserRecord
load_batch = factory.Sequence(lambda n: n + 1)
source = ParserLoadLog.Source.FNS_FINANCIAL
external_id = factory.Sequence(lambda n: f"GEN-{n:06d}")
inn = factory.LazyFunction(generate_inn_legal)
ogrn = factory.LazyFunction(generate_ogrn)
organisation_name = factory.LazyFunction(generate_company_name)
title = factory.LazyAttribute(lambda obj: f"Запись {obj.external_id}")
record_date = factory.LazyAttribute(lambda _: timezone.now().strftime("%Y-%m-%d"))
amount = "1000000.00"
status = "active"
url = factory.LazyAttribute(
lambda obj: f"https://example.com/records/{obj.external_id}"
)
payload = factory.LazyAttribute(
lambda obj: {
"external_id": obj.external_id,
"inn": obj.inn,
"organisation_name": obj.organisation_name,
}
)