From 4d941b73109bb84323e1cbd8735f837c14f53cc8 Mon Sep 17 00:00:00 2001 From: viktot14-ai Date: Wed, 9 Sep 2026 22:30:14 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A1=D0=B8=D0=B4=20=D0=BF=D0=BE=D0=B4=D1=80?= =?UTF-8?q?=D0=B0=D0=B7=D0=B4=D0=B5=D0=BB=D0=B5=D0=BD=D0=B8=D0=B9:=20?= =?UTF-8?q?=D0=BF=D0=BE=D0=BB=D0=BD=D1=8B=D0=B9=20=D1=81=D0=BF=D0=B8=D1=81?= =?UTF-8?q?=D0=BE=D0=BA=20=D0=A0=D0=92=D0=A1=20=E2=80=94=20=D0=A0=D0=A6?= =?UTF-8?q?=D0=A3=20=D0=A0=D0=A7=D0=A1=20=E2=86=92=206=20=D0=9E=D0=A3?= =?UTF-8?q?=D0=9C=D0=A7=D0=A1=20=E2=86=92=20135=20=D0=A0=D0=9E=D0=A7=D0=A1?= =?UTF-8?q?/=D0=93=D0=9E=D0=A7=D0=A1/=D0=93=D0=A0=D0=9E=D0=A7=D0=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Названия областей в краткой форме РВС (Минское ОУМЧС и т.д.). Старые демо-записи с длинными названиями областей подлежат разовой чистке на стенде. --- backend/seed_units.py | 185 ++++++++++++++++++++++++++++++++++++------ 1 file changed, 158 insertions(+), 27 deletions(-) diff --git a/backend/seed_units.py b/backend/seed_units.py index 17fbf06..39dd240 100644 --- a/backend/seed_units.py +++ b/backend/seed_units.py @@ -1,5 +1,6 @@ -"""E2-сид: справочник подразделений МЧС (иерархия РЦУ РЧС → ОУМЧС → Г(Р)ОЧС). +"""E2-сид: справочник подразделений МЧС — полный список из РВС. +РЦУ РЧС → 6 ОУМЧС → Г(Р)ОЧС (РОЧС/ГОЧС/ГРОЧС, 135 шт. из podr.json РВС). Идемпотентный: существующие названия не дублируются. Запуск: docker exec vector-backend sh -c 'cd /app && python backend/seed_units.py' """ @@ -13,21 +14,155 @@ sys.path.insert(0, str(Path(__file__).resolve().parents[1])) from backend.database import SessionLocal # noqa: E402 from backend.models import MchsUnit # noqa: E402 -OBLASTS = [ - ('Минское областное управление МЧС', 'oblast'), - ('Брестское областное управление МЧС', 'oblast'), - ('Витебское областное управление МЧС', 'oblast'), - ('Гомельское областное управление МЧС', 'oblast'), - ('Гродненское областное управление МЧС', 'oblast'), - ('Могилёвское областное управление МЧС', 'oblast'), -] - -# Демо-набор Г(Р)ОЧС по одной области (Минская) — реальный справочник наполняется -# региональными админами через админку/скрипт при развёртывании. -MINSK_RAYONS = [ - 'Борисовский ГРОЧС', 'Жодинский ГРОЧС', 'Слуцкий ГРОЧС', - 'Молодечненский ГРОЧС', 'Столбцовский ГРОЧС', -] +UNITS = { + 'Брестское ОУМЧС': [ + 'Барановичский ГРОЧС', + 'Березовский РОЧС', + 'Брестский ГОЧС', + 'Брестский ПАСО', + 'Брестский РОЧС', + 'Ганцевичский РОЧС', + 'Дрогичинский РОЧС', + 'Жабинковский РОЧС', + 'Ивановский РОЧС', + 'Ивацевичский РОЧС', + 'Каменецкий РОЧС', + 'Кобринский РОЧС', + 'Лунинецкий РОЧС', + 'Ляховичский РОЧС', + 'Малоритский РОЧС', + 'Пинский ГРОЧС', + 'Пружанский РОЧС', + 'Столинский РОЧС', + ], + 'Витебское ОУМЧС': [ + 'Бешенковичский РОЧС', + 'Браславский РОЧС', + 'Верхнедвинский РОЧС', + 'Витебский ГОЧС', + 'Витебский ПАСО', + 'Витебский РОЧС', + 'Глубокский РОЧС', + 'Городокский РОЧС', + 'Докшицкий РОЧС', + 'Дубровенский РОЧС', + 'Лепельский РОЧС', + 'Лиозненский РОЧС', + 'Миорский РОЧС', + 'Новополоцкий ГОЧС', + 'Новополоцкий ПАСО', + 'Оршанский ГРОЧС', + 'Полоцкий ГРОЧС', + 'Поставский РОЧС', + 'Россонский РОЧС', + 'Сенненский РОЧС', + 'Толочинский РОЧС', + 'Ушачский РОЧС', + 'Чашникский РОЧС', + 'Шарковщинский РОЧС', + 'Шумилинский РОЧС', + ], + 'Гомельское ОУМЧС': [ + 'Брагинский РОЧС', + 'Буда-Кошелевский РОЧС', + 'Ветковский РОЧС', + 'Гомельский ГОЧС', + 'Гомельский ПАСО', + 'Гомельский РОЧС', + 'Добрушский РОЧС', + 'Ельский РОЧС', + 'Житковичский РОЧС', + 'Жлобинский РОЧС', + 'Калинковичский РОЧС', + 'Кормянский РОЧС', + 'Лельчицкий РОЧС', + 'Лоевский РОЧС', + 'Мозырский ГРОЧС', + 'Мозырский ПАСО', + 'Наровлянский РОЧС', + 'Октябрьский РОЧС', + 'Петриковский РОЧС', + 'Речицкий ПАСО', + 'Речицкий РОЧС', + 'Рогачевский РОЧС', + 'Светлогорский РОЧС', + 'Хойникский РОЧС', + 'Чечерский РОЧС', + ], + 'Гродненское ОУМЧС': [ + 'Берестовицкий РОЧС', + 'Волковысский РОЧС', + 'Вороновский РОЧС', + 'Гродненский ГОЧС', + 'Гродненский ПАСО', + 'Гродненский РОЧС', + 'Дятловский РОЧС', + 'Зельвенский РОЧС', + 'Ивьевский РОЧС', + 'Кореличский РОЧС', + 'Лидский РОЧС', + 'Мостовский РОЧС', + 'Новогрудский РОЧС', + 'Островецкий РОЧС', + 'Ошмянский РОЧС', + 'Свислочский РОЧС', + 'Слонимский РОЧС', + 'Сморгонский РОЧС', + 'Щучинский РОЧС', + ], + 'Минское ОУМЧС': [ + 'Березинский РОЧС', + 'Борисовский ГРОЧС', + 'Вилейский РОЧС', + 'Воложинский РОЧС', + 'Дзержинский РОЧС', + 'Жодинский ГОЧС', + 'Клецкий РОЧС', + 'Копыльский РОЧС', + 'Крупский РОЧС', + 'Логойский РОЧС', + 'Любанский РОЧС', + 'Минский ПАСО', + 'Минский РОЧС', + 'Молодечненский ГРОЧС', + 'Мядельский РОЧС', + 'Несвижский РОЧС', + 'Пуховичский РОЧС', + 'Слуцкий РОЧС', + 'Смолевичский РОЧС', + 'Солигорский ГРОЧС', + 'Стародорожский РОЧС', + 'Столбцовский РОЧС', + 'Узденский РОЧС', + 'Червенский РОЧС', + ], + 'Могилевское ОУМЧС': [ + 'Белыничский РОЧС', + 'Бобруйский ГРОЧС', + 'Бобруйский ПАСО', + 'Быховский РОЧС', + 'Глусский РОЧС', + 'Горецкий РОЧС', + 'Дрибинский РОЧС', + 'Кировский РОЧС', + 'Климовичский РОЧС', + 'Кличевский РОЧС', + 'Костюковичский РОЧС', + 'Краснопольский РОЧС', + 'Кричевский РОЧС', + 'Круглянский РОЧС', + 'Могилевский ГОЧС', + 'Могилевский ПАСО', + 'Могилевский РОЧС', + 'Мстиславский РОЧС', + 'Осиповичский РОЧС', + 'Славгородский РОЧС', + 'Хотимский РОЧС', + 'Чаусский РОЧС', + 'Чериковский РОЧС', + 'Шкловский РОЧС', + ], +} def get_or_create(db, name, kind, parent_id=None): @@ -45,17 +180,13 @@ def main(): try: rcu = get_or_create(db, 'РЦУ РЧС', 'rcu') created = 0 - for name, kind in OBLASTS: - before = db.query(MchsUnit).filter_by(name=name).count() - oblast = get_or_create(db, name, kind, rcu.id) - if not before: - created += 1 - minsk = db.query(MchsUnit).filter_by(name=OBLASTS[0][0]).first() - for name in MINSK_RAYONS: - before = db.query(MchsUnit).filter_by(name=name).count() - get_or_create(db, name, 'gor_rayon', minsk.id) - if not before: - created += 1 + for oblast_name, grochs_list in UNITS.items(): + oblast = get_or_create(db, oblast_name, 'oblast', rcu.id) + for g in grochs_list: + before = db.query(MchsUnit).filter_by(name=g).count() + get_or_create(db, g, 'gor_rayon', oblast.id) + if not before: + created += 1 db.commit() total = db.query(MchsUnit).count() print(f'сид подразделений: создано {created}, всего {total}')