commit d7ab972517bdf3e02d9f314bf1a433b0403a3e86 Author: Ahmet Gazakbayev Date: Tue Jul 15 16:59:24 2025 +0500 cloned from code.mipt.ru diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0dbf2f2 --- /dev/null +++ b/.gitignore @@ -0,0 +1,170 @@ +# ---> Python +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# UV +# Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +#uv.lock + +# poetry +# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control +#poetry.lock + +# pdm +# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. +#pdm.lock +# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it +# in version control. +# https://pdm.fming.dev/latest/usage/project/#working-with-version-control +.pdm.toml +.pdm-python +.pdm-build/ + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# PyCharm +# JetBrains specific template is maintained in a separate JetBrains.gitignore that can +# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore +# and can be added to the global gitignore or merged into this file. For a more nuclear +# option (not recommended) you can uncomment the following to ignore the entire idea folder. +#.idea/ + diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..58e98a6 --- /dev/null +++ b/LICENSE @@ -0,0 +1,9 @@ +MIT License + +Copyright (c) 2025 ahmet + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..0937ae7 --- /dev/null +++ b/README.md @@ -0,0 +1,167 @@ + +# Движение контингента + +Данный проект является упрощенным вариантом базы данных обучающихся, которая используется образовательными учреждениями для контроля контингента. + +> Все исходники в процессе создания сохраняются в [облаке](https://cloud.gazakbayev.net/index.php/s/5XpDS4Zx287bejj) + +**Этапы проекта:** +- [x] Описание проекта. +- [x] Концептуальная модель. +- [x] Логическая модель. +- [x] Физическая модель. +- [x] Реализация схемы DDL. +- [x] Заполнение схемы DML. +- [x] Составление осмысленных запросов. + +**Технические итерации к выполнению:** +- [x] Индексы (indexes) +- [x] Представления (views) +- [x] Функции и Процедуры (funcs_and_procs) +- [x] Триггеры (triggers) + +## Концептуальная модель + +![Концептуальная модель](https://cloud.gazakbayev.net/index.php/apps/files_sharing/publicpreview/5XpDS4Zx287bejj?file=/Концептуальная%20модель.png&fileId=58551&x=1920&y=1080&a=true&etag=8a8f4beea72faadc1719431bd98e3e92) + +Для редактирования и изменения можно фоспользоваться [.drawio](https://cloud.gazakbayev.net/index.php/s/5XpDS4Zx287bejj?dir=/) файлом сохранения. + +## Логическая модель + +![Логическая модель](https://cloud.gazakbayev.net/index.php/apps/files_sharing/publicpreview/5XpDS4Zx287bejj?file=/Логическая%20модель.jpg&fileId=58597&x=1920&y=1080&a=true&etag=3e95f4e275f2aeea1d869724298b47f6) + +Логическая модель была создана с использованием языка DBML, а также вспомогательных инструментов (среди прочих, drawdb). + +## Физическая модель + +Физическая модель располагается по следующим ссылкам, в зависимости от нужного формата: + +- Таблица-источник, а так же описание форматирования: [docs.google.com](https://docs.google.com/spreadsheets/d/1tKWyQ4CsW6sF9kxRUULqEuPtOp6bD87Umzqr1hbn7I8/edit?usp=sharing) +- PDF-версия: [cloud.gazakbayev.net](https://cloud.gazakbayev.net/index.php/s/5XpDS4Zx287bejj?dir=/&openfile=true) + +## Data Definition + +По вышеприведённым моделям был составлен скрипт schema.sql, которая создаёт отношения с проверкой условий, описанных в физической модели. + +Например, + +``` + access_card VARCHAR(20) NOT NULL CHECK (access_card ~ '^[A-F0-9]{2}(:[A-F0-9]{2}){5}$'), + access_level VARCHAR(10) NOT NULL CHECK (access_level IN ('КАМПУС', 'ОБЩЕЖИТИЯ', 'ПОЛНЫЙ')) +``` + +``` +group_id VARCHAR(10) PRIMARY KEY CHECK (group_id ~ '^[АБМ]\d{2}-\d{3}[а-я]?$'), +``` + +![DDL](https://cloud.gazakbayev.net/index.php/apps/files_sharing/publicpreview/5XpDS4Zx287bejj?file=/dbeaver/dbeaver_ddl.png&fileId=58554&x=1920&y=1080&a=true&etag=d5aa1cbf64917e9a923c020654a1dc75) + +## Data Manipulation + +С помощью библиотеку Faker и скриптов на языке Python были сгенерированы данные для дальнейшего взаимодействия с базой. + +![DML1](https://cloud.gazakbayev.net/index.php/apps/files_sharing/publicpreview/5XpDS4Zx287bejj?file=/dbeaver/dbeaver_dml_persons.png&fileId=58553&x=1920&y=1080&a=true&etag=8f5891b2415e6bda3499db299447e09b) + +![DML2](https://cloud.gazakbayev.net/index.php/apps/files_sharing/publicpreview/5XpDS4Zx287bejj?file=/dbeaver/dbeaver_dml_students.png&fileId=58581&x=1920&y=1080&a=true&etag=58b5092cb8d7060275e6ba467439f082) + +*Да, можно посмеяться с того, что фамилии и имена не согласуются, и вообще Faker - генерирует какую-то абсолютно рандомную фигню :)* + +## Requests + +В файле requests.sql приведены достаточно интересные запросы с использованием всех требуемых операторов, подзапросов и оконных функций: + +- Студенты с одинаковыми фамилиями + +![r1](https://cloud.gazakbayev.net/index.php/apps/files_sharing/publicpreview/5XpDS4Zx287bejj?file=/dbeaver/dbeaver_r_1.png&fileId=58586&x=1920&y=1080&a=true&etag=6bc33e441500fd0ac88f5c78ec20530e) + +- Средний балл студентов + +![r2](https://cloud.gazakbayev.net/index.php/apps/files_sharing/publicpreview/5XpDS4Zx287bejj?file=/dbeaver/dbeaver_r_2.png&fileId=58588&x=1920&y=1080&a=true&etag=23d36a8e27317e4a58b7fabcce366fe2) + +- Топ 5 лучших + +![r3](https://cloud.gazakbayev.net/index.php/apps/files_sharing/publicpreview/5XpDS4Zx287bejj?file=/dbeaver/dbeaver_r_3.png&fileId=58596&x=1920&y=1080&a=true&etag=dc0b2d7cdc2a7962704c657880648e17) + +- Количества у кафедры дисциплин и студентов + +![r4](https://cloud.gazakbayev.net/index.php/apps/files_sharing/publicpreview/5XpDS4Zx287bejj?file=/dbeaver/dbeaver_r_4.png&fileId=58595&x=1920&y=1080&a=true&etag=d630c03a1981f6fe1a410e4633a6f163) + +- ФИ обучающихся (статус Учится) + +![r5](https://cloud.gazakbayev.net/index.php/apps/files_sharing/publicpreview/5XpDS4Zx287bejj?file=/dbeaver/dbeaver_r_5.png&fileId=58598&x=1920&y=1080&a=true&etag=a1039656f3377b649fd32458e255a183) + +- Прогресс изменения среднего балла по студентам + +![r6](https://cloud.gazakbayev.net/index.php/apps/files_sharing/publicpreview/5XpDS4Zx287bejj?file=/dbeaver/dbeaver_r_6.png&fileId=58599&x=1920&y=1080&a=true&etag=7196fca2ec33400e83aa1ae2294023d9) + +- Список группы с обучающимися, с указанием оценки успеваемости студента в группе "Ниже среднего" или "Выше среднего" + +![r7](https://cloud.gazakbayev.net/index.php/apps/files_sharing/publicpreview/5XpDS4Zx287bejj?file=/dbeaver/dbeaver_r_7.png&fileId=58603&x=1920&y=1080&a=true&etag=ee123479c8d5aae1d5c7ace612973a55) + +- Статистика отчислений по месяцам, основываясь на движении контингента (приказах) + +![r8](https://cloud.gazakbayev.net/index.php/apps/files_sharing/publicpreview/5XpDS4Zx287bejj?file=/dbeaver/dbeaver_r_8.png&fileId=58601&x=1920&y=1080&a=true&etag=5c10d03144f63209aeba3af3861dbc24) + +- Научные руководители студентов + +![r9](https://cloud.gazakbayev.net/index.php/apps/files_sharing/publicpreview/5XpDS4Zx287bejj?file=/dbeaver/dbeaver_r_9.png&fileId=58602&x=1920&y=1080&a=true&etag=85600ee19d022be8ca4af3adaafa5c2b) + +- Вывод преподавателей из ведомости по ФИО, принимающим предметам, средней оценки и уровня халявности + +![r10](https://cloud.gazakbayev.net/index.php/apps/files_sharing/publicpreview/5XpDS4Zx287bejj?file=/dbeaver/dbeaver_r_10.png&fileId=58587&x=1920&y=1080&a=true&etag=aad8451f67c41b3e1d4a48fcb9baa899) + +## Техническая итерация : Индексы + +Созданы индексы `idx_physicals_fulltext_name` и `idx_movement_recent`. + +Первый ускоряет полнотекстовый поиск, позволяя быстро находить лица, содержащие нужные имена в Personals. Например, + +```sql +SELECT passport_no, name, surname + FROM Physicals + WHERE to_tsvector('russian', name || ' ' || surname) @@ to_tsquery('russian', 'Петров:*'); +``` +```sql +SELECT passport_no, name, surname + FROM Physicals + WHERE to_tsvector('russian', name || ' ' || surname) @@ plainto_tsquery('russian', 'Иван'); +``` + +Второй ускоряет поиск по приказам из движения контингента, затрагивая интервал - последние 30 дней. + +## Техническая итерация : Представления + +В проекте представлено два представления: + +`vw_student_performance` - представление, предоставляющее доступ к ID студенческого, ФИО студента и количество его проваленных/пройденных экзаменов/зачётных мероприятий, а также выводящий средний балл студентов. + +`vw_birthdays_month` - просто забавное представление, выдающее список людей (студентов, преподавателей и пр.), у которых в этом месяце день рождения. Можно будет использовать для создания календаря дней рождений. + +## Техническая итерация : Функции и Процедуры + +`fn_low_enrollment(threshold INTEGER) -> TABLE` - функция, выводящая дисциплины с малым количеством студентов (основываясь на закрытых ведомостях). В аргумент принимает threshold - порог количества студентов для того, чтобы считать дисциплину малопосещаемой. + +`fn_generate_transcript(p_student INTEGER) -> TEXT` - функция для вывода листа оценок студента. В аргумент принимает ID студента, выводя транскрипт, например: + +```sql +SELECT fn_generate_transcript(42) AS transcript; + +-- Transcript for student 42 +-- Name: Иван Иванов +-- Group: А01-001 +-- Status: УЧИТСЯ +-- +-- 2024-12-15 - Математический анализ: 7 +-- 2025-01-20 - Программирование: 9 +-- 2025-03-05 - Математический анализ: 5 +``` + +`sp_graduate_by_admission_year(p_year INTEGER) -> None` - процедура, присваивающая статус "Выпущен" занесением записи в Movements всему году поступления, указанным в p_year (срабатывает trigger 3). + +## Техническая итерация : Триггеры + +**Триггер 1** - предотвращает удаление группы с находящимися там студентами. + +**Триггер 2** - стилизует вводимую электронную почту под lowercase, унифицируя тем самым все записи, облегчая восприятие почты. + +**Триггер 3** - по обновлению статуса в Movement, проивзодит изменения в основном объекте студента Students. \ No newline at end of file diff --git a/analysis/data_generator.py b/analysis/data_generator.py new file mode 100644 index 0000000..91fd9f6 --- /dev/null +++ b/analysis/data_generator.py @@ -0,0 +1,401 @@ +# +# "contingent-movement" project; +# author: gazakbayev.net +# ver: 1.0 +# + +from faker import Faker +import random +from datetime import datetime, timedelta + +from manager import * + +Database.initialize() + +fake = Faker('ru_RU') + +class DataStorage: + physicals = [] + supervisors = [] + faculties = [] + departments = [] + programs = [] + groups = [] + students = [] + disciplines = [] + +def generate_physicals(count=30): + for _ in range(count): + access_level = random.choice(['КАМПУС', 'ОБЩЕЖИТИЯ', 'ПОЛНЫЙ']) + access_card = ":".join(f"{random.randint(0, 255):02X}" for _ in range(6)) + + data = [ + fake.unique.passport_number(), + fake.first_name(), + fake.last_name(), + fake.date_of_birth(minimum_age=18, maximum_age=80), + fake.phone_number(), + fake.email(), + fake.country(), + fake.address(), + access_card, + access_level + ] + DataStorage.physicals.append(data[0]) + physicals_write(data) + +def generate_supervisors(count=5): + if not DataStorage.physicals: + generate_physicals(10) + + for _ in range(count): + data = [ + random.choice(DataStorage.physicals), + random.randint(1, 30), + round(random.uniform(0.3, 1.0), 2), + random.choice(['МЛАДШИЙ НАУЧНЫЙ СОТРУДНИК', 'СТАРШИЙ НАУЧНЫЙ СОТРУДНИК', + 'ВЕДУЩИЙ НАУЧНЫЙ СОТРУДНИК', 'ГЛАВНЫЙ НАУЧНЫЙ СОТРУДНИК', 'НАУЧНЫЙ СОТРУДНИК']) + ] + DataStorage.supervisors.append(data[0]) + supervisors_write(data) + +def generate_faculties(count=3): + faculty_names = [ + "Факультет компьютерных наук", + "Физико-математический факультет", + "Факультет экономики", + "Юридический факультет", + "Филологический факультет" + ] + + if not DataStorage.physicals: + generate_physicals(10) + + for i in range(count): + head = random.choice(DataStorage.physicals) + vice = random.choice([p for p in DataStorage.physicals if p != head] + [None]) + + data = [ + faculty_names[i], + faculty_names[i][:3].upper(), + head, + vice, + fake.address() + ] + DataStorage.faculties.append(data) + faculties_write(data) + +def generate_departments(count=5): + department_names = [ + "Кафедра программной инженерии", + "Кафедра искусственного интеллекта", + "Кафедра теоретической физики", + "Кафедра прикладной математики", + "Кафедра экономической теории", + "Кафедра системного анализа", + "Кафедра кибербезопасности", + "Кафедра биоинформатики" + ] + + if not DataStorage.faculties: + generate_faculties() + + if not DataStorage.physicals: + generate_physicals(10) + + actual_count = min(count, len(department_names)) + + for i in range(actual_count): + head = random.choice(DataStorage.physicals) + vice = random.choice([p for p in DataStorage.physicals if p != head] + [None]) + secretary = random.choice([p for p in DataStorage.physicals if p != head and p != vice] + [None]) + + data = [ + department_names[i], + department_names[i][:3].upper(), + fake.date_between(start_date='-30y', end_date='-5y'), + head, + vice, + secretary, + random.choice(range(1, len(DataStorage.faculties)+1)) + ] + DataStorage.departments.append(data) + departments_write(data) + + for i in range(actual_count, count): + dept_name = f"Кафедра {fake.unique.word().capitalize()}" + head = random.choice(DataStorage.physicals) + vice = random.choice([p for p in DataStorage.physicals if p != head] + [None]) + secretary = random.choice([p for p in DataStorage.physicals if p != head and p != vice] + [None]) + + data = [ + dept_name, + dept_name[:3].upper(), + fake.date_between(start_date='-30y', end_date='-5y'), + head, + vice, + secretary, + random.choice(range(1, len(DataStorage.faculties)+1)) + ] + DataStorage.departments.append(data) + departments_write(data) + +def generate_programs(count=8): + program_names = [ + "Программная инженерия", + "Искусственный интеллект и машинное обучение", + "Теоретическая физика", + "Прикладная математика и информатика", + "Экономика и финансы", + "Юриспруденция", + "Филология и лингвистика", + "Бизнес-информатика", + "Биоинженерия", + "Кибербезопасность", + "Международные отношения", + "Психология" + ] + + actual_count = min(count, len(program_names)) + + for i in range(actual_count): + parent_id = random.choice([None] + list(range(1, i+1))) + + data = [ + f"SPEC-{fake.unique.bothify(text='??-####')}", + random.choice(['BACHELOR', 'MAGISTER', 'ASPIRANT']), + program_names[i], + parent_id + ] + DataStorage.programs.append(data) + programs_write(data) + + for i in range(actual_count, count): + program_name = f"{fake.word().capitalize()} {fake.word().capitalize()}" + parent_id = random.choice([None] + list(range(1, len(DataStorage.programs)+1))) + + data = [ + f"SPEC-{fake.unique.bothify(text='??-####')}", + random.choice(['BACHELOR', 'MAGISTER', 'ASPIRANT']), + program_name, + parent_id + ] + DataStorage.programs.append(data) + programs_write(data) + +def generate_groups(count=5): + if not DataStorage.faculties or not DataStorage.programs or not DataStorage.departments: + generate_faculties() + generate_programs() + generate_departments() + + group_prefixes = ['А', 'Б', 'М'] + cyrillic_lower = [chr(c) for c in range(1072, 1104)] + + for _ in range(count): + prefix = random.choice(group_prefixes) + year = fake.numerify(text='##') + num = fake.numerify(text='###') + letter = random.choice([''] + cyrillic_lower) + group_id = f"{prefix}{year}-{num}{letter}" + + study_starts = fake.date_between(start_date='-4y', end_date='today') + study_ends = study_starts + timedelta(days=1460) + + + data = [ + group_id, + random.choice(range(1, len(DataStorage.faculties)+1)), + random.choice(range(1, len(DataStorage.programs)+1)), + random.choice(range(1, len(DataStorage.departments)+1)), + study_starts, + study_ends + ] + DataStorage.groups.append(data) + groups_write(data) + +def generate_students(count=10): + if not DataStorage.physicals or not DataStorage.groups or not DataStorage.supervisors: + generate_physicals(150) + generate_groups() + generate_supervisors() + + statuses = ['УЧИТСЯ', 'В АКАДЕМИЧЕСКОМ ОТПУСКЕ', 'ОТЧИСЛЕН'] + education_forms = ['ОЧНАЯ', 'ЗАОЧНАЯ', 'ВЕЧЕРНЯЯ'] + + for _ in range(count): + data = [ + random.choice(DataStorage.physicals), + random.choice([g[0] for g in DataStorage.groups]), + random.choice(DataStorage.supervisors + [None]), + random.choice(education_forms), + random.choices(statuses, weights=[0.85, 0.1, 0.05])[0] + ] + DataStorage.students.append(data) + students_write(data) + +def generate_family(count=20): + if not DataStorage.students: + generate_students() + + kinships = ['MOTHER', 'FATHER', 'BROTHER', 'SISTER', 'ANOTHER'] + + for _ in range(count): + student = random.choice(DataStorage.students)[0] + kinship = random.choice(kinships) + + data = [ + student, + fake.first_name(), + fake.last_name(), + kinship, + fake.phone_number(), + fake.address() + ] + family_write(data) + +def generate_disciplines(count=7): + if not DataStorage.departments: + generate_departments() + + discipline_names = [ + "Программирование на Python", + "Базы данных", + "Машинное обучение", + "Теоретическая механика", + "Дифференциальные уравнения", + "Эконометрика", + "Гражданское право", + "История литературы" + ] + + for _ in range(count): + academic_hours = random.randint(36, 72) + general_hours = academic_hours + random.randint(1, 36) + data = [ + f"{random.choice(discipline_names)} {fake.numerify(text='###')}", + random.choice(range(1, len(DataStorage.departments)+1)), + random.randint(2, 6), + academic_hours, + general_hours, + random.choice([True, False]) + ] + DataStorage.disciplines.append(data) + disciplines_write(data) + +def generate_statements(count=300): + if not DataStorage.students or not DataStorage.disciplines or not DataStorage.physicals: + generate_students() + generate_disciplines() + generate_physicals() + + for _ in range(count): + data = [ + random.choice(range(1, len(DataStorage.students)+1)), + random.choice(range(1, len(DataStorage.disciplines)+1)), + random.choice(DataStorage.physicals), + random.randint(0, 2), + random.randint(3, 10), + fake.date_between(start_date='-2y', end_date='today') + ] + statements_write(data) + +def generate_movement(count=50): + if not DataStorage.students or not DataStorage.groups: + generate_students() + generate_groups() + + movement_types = ['ЗАЧИСЛЕН', 'ВОССТАНОВЛЕН', 'ОТЧИСЛЕН', 'В АКАДЕМИЧЕСКИЙ ОТПУСК', 'ПЕРЕВОД В ДРУГУЮ ГРУППУ'] + statuses = ['УЧИТСЯ', 'В АКАДЕМИЧЕСКОМ ОТПУСКЕ', 'ОТЧИСЛЕН'] + + for _ in range(count): + movement_type = random.choice(movement_types) + + if movement_type == 'ПЕРЕВОД В ДРУГУЮ ГРУППУ': + new_group = random.choice([g[0] for g in DataStorage.groups if g[0] != random.choice([g[0] for g in DataStorage.groups])]) + new_status = 'УЧИТСЯ' + elif movement_type == 'В АКАДЕМИЧЕСКИЙ ОТПУСК': + new_group = None + new_status = 'В АКАДЕМИЧЕСКОМ ОТПУСКЕ' + else: + new_group = None + new_status = random.choice(statuses) + + data = [ + random.choice(range(1, len(DataStorage.students)+1)), + movement_type, + new_group, + new_status, + fake.date_between(start_date='-2y', end_date='today') + ] + movement_write(data) + +def generate_files(count=100): + if not DataStorage.students: + generate_students() + + extensions = ['PNG', 'JPEG', 'PDF'] + + for _ in range(count): + data = [ + random.choice(range(1, len(DataStorage.students)+1)), + fake.file_name(), + fake.sentence(), + random.choice(extensions), + round(random.uniform(0.1, 20.0), 2), + f"/uploads/{fake.unique.uuid4()}" + ] + files_write(data) + +import debug_data.limits as lim + +def generate_all_data(): + generate_physicals(lim.PHYSICALS) + generate_supervisors(lim.SUPERVISORS) + generate_faculties(lim.FACULTIES) + generate_departments(lim.DEPARTMENTS) + generate_programs(lim.PROGRAMS) + generate_groups(lim.GROUPS) + generate_students(lim.STUDENTS) + generate_family(lim.FAMILY) + generate_disciplines(lim.DISCIPLINES) + generate_statements(lim.STATEMENTS) + generate_movement(lim.MOVEMENTS) + generate_files(lim.FILES) + +if __name__ == "__main__": + generate_all_data() + print("Генерация тестовых данных завершена!") + + +# /$$$$$$ /$$ /$$ /$$ +# /$$__ $$ | $$ |__/ | $$ +# | $$ \__/ /$$$$$$ /$$$$$$$ /$$$$$$ /$$ /$$$$$$$ /$$$$$$ /$$$$$$ /$$$$$$$ /$$$$$$ +# | $$ /$$__ $$| $$__ $$|_ $$_/ | $$| $$__ $$ /$$__ $$ /$$__ $$| $$__ $$|_ $$_/ +# | $$ | $$ \ $$| $$ \ $$ | $$ | $$| $$ \ $$| $$ \ $$| $$$$$$$$| $$ \ $$ | $$ +# | $$ $$| $$ | $$| $$ | $$ | $$ /$$| $$| $$ | $$| $$ | $$| $$_____/| $$ | $$ | $$ /$$ +# | $$$$$$/| $$$$$$/| $$ | $$ | $$$$/| $$| $$ | $$| $$$$$$$| $$$$$$$| $$ | $$ | $$$$/ +# \______/ \______/ |__/ |__/ \___/ |__/|__/ |__/ \____ $$ \_______/|__/ |__/ \___/ +# /$$ \ $$ +# | $$$$$$/ +# \______/ +# /$$ /$$ /$$ +# | $$$ /$$$ | $$ +# | $$$$ /$$$$ /$$$$$$ /$$ /$$ /$$$$$$ /$$$$$$/$$$$ /$$$$$$ /$$$$$$$ /$$$$$$ +# | $$ $$/$$ $$ /$$__ $$| $$ /$$//$$__ $$| $$_ $$_ $$ /$$__ $$| $$__ $$|_ $$_/ +# | $$ $$$| $$| $$ \ $$ \ $$/$$/| $$$$$$$$| $$ \ $$ \ $$| $$$$$$$$| $$ \ $$ | $$ +# | $$\ $ | $$| $$ | $$ \ $$$/ | $$_____/| $$ | $$ | $$| $$_____/| $$ | $$ | $$ /$$ +# | $$ \/ | $$| $$$$$$/ \ $/ | $$$$$$$| $$ | $$ | $$| $$$$$$$| $$ | $$ | $$$$/ +# |__/ |__/ \______/ \_/ \_______/|__/ |__/ |__/ \_______/|__/ |__/ \___/ + +# /$$ /$$ /$$ /$$ +# | $$ | $$ | $$ | $$ +# | $$$$$$$ /$$ /$$ /$$$$$$ /$$$$$$ /$$$$$$$$ /$$$$$$ | $$ /$$| $$$$$$$ /$$$$$$ /$$ /$$ /$$$$$$ /$$ /$$ /$$$$$$$ /$$$$$$ /$$$$$$ +# | $$__ $$| $$ | $$ /$$__ $$ |____ $$|____ /$$/ |____ $$| $$ /$$/| $$__ $$ |____ $$| $$ | $$ /$$__ $$| $$ /$$/| $$__ $$ /$$__ $$|_ $$_/ +# | $$ \ $$| $$ | $$ | $$ \ $$ /$$$$$$$ /$$$$/ /$$$$$$$| $$$$$$/ | $$ \ $$ /$$$$$$$| $$ | $$| $$$$$$$$ \ $$/$$/ | $$ \ $$| $$$$$$$$ | $$ +# | $$ | $$| $$ | $$ | $$ | $$ /$$__ $$ /$$__/ /$$__ $$| $$_ $$ | $$ | $$ /$$__ $$| $$ | $$| $$_____/ \ $$$/ | $$ | $$| $$_____/ | $$ /$$ +# | $$$$$$$/| $$$$$$$ | $$$$$$$| $$$$$$$ /$$$$$$$$| $$$$$$$| $$ \ $$| $$$$$$$/| $$$$$$$| $$$$$$$| $$$$$$$ \ $//$$| $$ | $$| $$$$$$$ | $$$$/ +# |_______/ \____ $$ \____ $$ \_______/|________/ \_______/|__/ \__/|_______/ \_______/ \____ $$ \_______/ \_/|__/|__/ |__/ \_______/ \___/ +# /$$ | $$ /$$ \ $$ /$$ | $$ +# | $$$$$$/ | $$$$$$/ | $$$$$$/ +# \______/ \______/ \______/ diff --git a/analysis/debug_data/database_creds.py b/analysis/debug_data/database_creds.py new file mode 100644 index 0000000..008e0e6 --- /dev/null +++ b/analysis/debug_data/database_creds.py @@ -0,0 +1,47 @@ +# +# "contingent-movement" project +# author: gazakbayev.net +# ver: 1.0 +# + +import os + +CREDS = { + "dbname": "edu", + "user": "edu", + "password": os.getenv("EDU_DB_PASSWORD"), + "host": "demo.labinn.ru", + "port": "5432", +} + +# /$$$$$$ /$$ /$$ /$$ +# /$$__ $$ | $$ |__/ | $$ +# | $$ \__/ /$$$$$$ /$$$$$$$ /$$$$$$ /$$ /$$$$$$$ /$$$$$$ /$$$$$$ /$$$$$$$ /$$$$$$ +# | $$ /$$__ $$| $$__ $$|_ $$_/ | $$| $$__ $$ /$$__ $$ /$$__ $$| $$__ $$|_ $$_/ +# | $$ | $$ \ $$| $$ \ $$ | $$ | $$| $$ \ $$| $$ \ $$| $$$$$$$$| $$ \ $$ | $$ +# | $$ $$| $$ | $$| $$ | $$ | $$ /$$| $$| $$ | $$| $$ | $$| $$_____/| $$ | $$ | $$ /$$ +# | $$$$$$/| $$$$$$/| $$ | $$ | $$$$/| $$| $$ | $$| $$$$$$$| $$$$$$$| $$ | $$ | $$$$/ +# \______/ \______/ |__/ |__/ \___/ |__/|__/ |__/ \____ $$ \_______/|__/ |__/ \___/ +# /$$ \ $$ +# | $$$$$$/ +# \______/ +# /$$ /$$ /$$ +# | $$$ /$$$ | $$ +# | $$$$ /$$$$ /$$$$$$ /$$ /$$ /$$$$$$ /$$$$$$/$$$$ /$$$$$$ /$$$$$$$ /$$$$$$ +# | $$ $$/$$ $$ /$$__ $$| $$ /$$//$$__ $$| $$_ $$_ $$ /$$__ $$| $$__ $$|_ $$_/ +# | $$ $$$| $$| $$ \ $$ \ $$/$$/| $$$$$$$$| $$ \ $$ \ $$| $$$$$$$$| $$ \ $$ | $$ +# | $$\ $ | $$| $$ | $$ \ $$$/ | $$_____/| $$ | $$ | $$| $$_____/| $$ | $$ | $$ /$$ +# | $$ \/ | $$| $$$$$$/ \ $/ | $$$$$$$| $$ | $$ | $$| $$$$$$$| $$ | $$ | $$$$/ +# |__/ |__/ \______/ \_/ \_______/|__/ |__/ |__/ \_______/|__/ |__/ \___/ + +# /$$ /$$ /$$ /$$ +# | $$ | $$ | $$ | $$ +# | $$$$$$$ /$$ /$$ /$$$$$$ /$$$$$$ /$$$$$$$$ /$$$$$$ | $$ /$$| $$$$$$$ /$$$$$$ /$$ /$$ /$$$$$$ /$$ /$$ /$$$$$$$ /$$$$$$ /$$$$$$ +# | $$__ $$| $$ | $$ /$$__ $$ |____ $$|____ /$$/ |____ $$| $$ /$$/| $$__ $$ |____ $$| $$ | $$ /$$__ $$| $$ /$$/| $$__ $$ /$$__ $$|_ $$_/ +# | $$ \ $$| $$ | $$ | $$ \ $$ /$$$$$$$ /$$$$/ /$$$$$$$| $$$$$$/ | $$ \ $$ /$$$$$$$| $$ | $$| $$$$$$$$ \ $$/$$/ | $$ \ $$| $$$$$$$$ | $$ +# | $$ | $$| $$ | $$ | $$ | $$ /$$__ $$ /$$__/ /$$__ $$| $$_ $$ | $$ | $$ /$$__ $$| $$ | $$| $$_____/ \ $$$/ | $$ | $$| $$_____/ | $$ /$$ +# | $$$$$$$/| $$$$$$$ | $$$$$$$| $$$$$$$ /$$$$$$$$| $$$$$$$| $$ \ $$| $$$$$$$/| $$$$$$$| $$$$$$$| $$$$$$$ \ $//$$| $$ | $$| $$$$$$$ | $$$$/ +# |_______/ \____ $$ \____ $$ \_______/|________/ \_______/|__/ \__/|_______/ \_______/ \____ $$ \_______/ \_/|__/|__/ |__/ \_______/ \___/ +# /$$ | $$ /$$ \ $$ /$$ | $$ +# | $$$$$$/ | $$$$$$/ | $$$$$$/ +# \______/ \______/ \______/ diff --git a/analysis/debug_data/database_values.py b/analysis/debug_data/database_values.py new file mode 100644 index 0000000..a3f9804 --- /dev/null +++ b/analysis/debug_data/database_values.py @@ -0,0 +1,70 @@ +# +# "contingent-movement" project; +# author: gazakbayev.net +# ver: 1.0 +# + +FACULTIES = [ + ("Физтех-школа прикладной математики и информатики", "ФПМИ"), + ("Физтех-школа радиотехники и компьютерных технологий", "ФРКТ"), + ("Физтех-школа биологической и медицинской физики", "ФБМФ"), + ("Физтех-школа Электроники, Фотоники и Молекулярной Физики", "ФЭФМ"), + ("Факультет общей и прикладной физики", "ФОПФ") +] + +PROGRAMS = [ + ("01.03.02", "BACHELOR", "Прикладная математика и информатика"), + ("10.03.01", "BACHELOR", "Информационная безопасность"), + ("12.04.02", "MAGISTER", "Фотоника и оптоинформатика"), + ("03.06.01", "ASPIRANT", "Физика и астрономия"), + ("27.03.03", "BACHELOR", "Системный анализ и управление"), + ("09.04.01", "MAGISTER", "Информатика и вычислительная техника"), + ("02.06.01", "ASPIRANT", "Математика и механика"), + ("11.04.03", "MAGISTER", "Конструирование и технология электронных средств") +] + +QUALIFICATIONS = [ + "МЛАДШИЙ НАУЧНЫЙ СОТРУДНИК", "СТАРШИЙ НАУЧНЫЙ СОТРУДНИК", + "ВЕДУЩИЙ НАУЧНЫЙ СОТРУДНИК", "ГЛАВНЫЙ НАУЧНЫЙ СОТРУДНИК", "НАУЧНЫЙ СОТРУДНИК" +] + +DEGREES = ["BACHELOR", "MAGISTER", "ASPIRANT"] +ACCESS_LEVELS = ["КАМПУС", "ОБЩЕЖИТИЯ", "ПОЛНЫЙ"] +KINSHIP_TYPES = ["МАТЬ", "ОТЕЦ", "БРАТ", "СЕСТРА", "ДРУГИЕ"] +EDUCATION_FORMS = ["ОЧНАЯ", "ЗАОЧНАЯ", "ВЕЧЕРНЯЯ"] +STATUSES = ["УЧИТСЯ", "В АКАДЕМИЧЕСКОМ ОТПУСКЕ", "ОТЧИСЛЕН"] +FILE_EXTENSIONS = ["PNG", "JPEG", "PDF"] +MOVEMENT_TYPES = ["ЗАЧИСЛЕН", "ВОССТАНОВЛЕН", "ОТЧИСЛЕН", "ПЕРЕВЕДЁН"] + + +# /$$$$$$ /$$ /$$ /$$ +# /$$__ $$ | $$ |__/ | $$ +# | $$ \__/ /$$$$$$ /$$$$$$$ /$$$$$$ /$$ /$$$$$$$ /$$$$$$ /$$$$$$ /$$$$$$$ /$$$$$$ +# | $$ /$$__ $$| $$__ $$|_ $$_/ | $$| $$__ $$ /$$__ $$ /$$__ $$| $$__ $$|_ $$_/ +# | $$ | $$ \ $$| $$ \ $$ | $$ | $$| $$ \ $$| $$ \ $$| $$$$$$$$| $$ \ $$ | $$ +# | $$ $$| $$ | $$| $$ | $$ | $$ /$$| $$| $$ | $$| $$ | $$| $$_____/| $$ | $$ | $$ /$$ +# | $$$$$$/| $$$$$$/| $$ | $$ | $$$$/| $$| $$ | $$| $$$$$$$| $$$$$$$| $$ | $$ | $$$$/ +# \______/ \______/ |__/ |__/ \___/ |__/|__/ |__/ \____ $$ \_______/|__/ |__/ \___/ +# /$$ \ $$ +# | $$$$$$/ +# \______/ +# /$$ /$$ /$$ +# | $$$ /$$$ | $$ +# | $$$$ /$$$$ /$$$$$$ /$$ /$$ /$$$$$$ /$$$$$$/$$$$ /$$$$$$ /$$$$$$$ /$$$$$$ +# | $$ $$/$$ $$ /$$__ $$| $$ /$$//$$__ $$| $$_ $$_ $$ /$$__ $$| $$__ $$|_ $$_/ +# | $$ $$$| $$| $$ \ $$ \ $$/$$/| $$$$$$$$| $$ \ $$ \ $$| $$$$$$$$| $$ \ $$ | $$ +# | $$\ $ | $$| $$ | $$ \ $$$/ | $$_____/| $$ | $$ | $$| $$_____/| $$ | $$ | $$ /$$ +# | $$ \/ | $$| $$$$$$/ \ $/ | $$$$$$$| $$ | $$ | $$| $$$$$$$| $$ | $$ | $$$$/ +# |__/ |__/ \______/ \_/ \_______/|__/ |__/ |__/ \_______/|__/ |__/ \___/ + +# /$$ /$$ /$$ /$$ +# | $$ | $$ | $$ | $$ +# | $$$$$$$ /$$ /$$ /$$$$$$ /$$$$$$ /$$$$$$$$ /$$$$$$ | $$ /$$| $$$$$$$ /$$$$$$ /$$ /$$ /$$$$$$ /$$ /$$ /$$$$$$$ /$$$$$$ /$$$$$$ +# | $$__ $$| $$ | $$ /$$__ $$ |____ $$|____ /$$/ |____ $$| $$ /$$/| $$__ $$ |____ $$| $$ | $$ /$$__ $$| $$ /$$/| $$__ $$ /$$__ $$|_ $$_/ +# | $$ \ $$| $$ | $$ | $$ \ $$ /$$$$$$$ /$$$$/ /$$$$$$$| $$$$$$/ | $$ \ $$ /$$$$$$$| $$ | $$| $$$$$$$$ \ $$/$$/ | $$ \ $$| $$$$$$$$ | $$ +# | $$ | $$| $$ | $$ | $$ | $$ /$$__ $$ /$$__/ /$$__ $$| $$_ $$ | $$ | $$ /$$__ $$| $$ | $$| $$_____/ \ $$$/ | $$ | $$| $$_____/ | $$ /$$ +# | $$$$$$$/| $$$$$$$ | $$$$$$$| $$$$$$$ /$$$$$$$$| $$$$$$$| $$ \ $$| $$$$$$$/| $$$$$$$| $$$$$$$| $$$$$$$ \ $//$$| $$ | $$| $$$$$$$ | $$$$/ +# |_______/ \____ $$ \____ $$ \_______/|________/ \_______/|__/ \__/|_______/ \_______/ \____ $$ \_______/ \_/|__/|__/ |__/ \_______/ \___/ +# /$$ | $$ /$$ \ $$ /$$ | $$ +# | $$$$$$/ | $$$$$$/ | $$$$$$/ +# \______/ \______/ \______/ diff --git a/analysis/debug_data/limits.py b/analysis/debug_data/limits.py new file mode 100644 index 0000000..cfdc44c --- /dev/null +++ b/analysis/debug_data/limits.py @@ -0,0 +1,50 @@ +# +# "contingent-movement" project +# author: gazakbayev.net +# ver: 1.0 +# + +PHYSICALS = 300 +SUPERVISORS = 10 +FACULTIES = 4 +DEPARTMENTS = 5 +PROGRAMS = 8 +GROUPS = 6 +STUDENTS = 40 +FAMILY = 100 +DISCIPLINES = 7 +STATEMENTS = 500 +MOVEMENTS = 100 +FILES = 100 + +# /$$$$$$ /$$ /$$ /$$ +# /$$__ $$ | $$ |__/ | $$ +# | $$ \__/ /$$$$$$ /$$$$$$$ /$$$$$$ /$$ /$$$$$$$ /$$$$$$ /$$$$$$ /$$$$$$$ /$$$$$$ +# | $$ /$$__ $$| $$__ $$|_ $$_/ | $$| $$__ $$ /$$__ $$ /$$__ $$| $$__ $$|_ $$_/ +# | $$ | $$ \ $$| $$ \ $$ | $$ | $$| $$ \ $$| $$ \ $$| $$$$$$$$| $$ \ $$ | $$ +# | $$ $$| $$ | $$| $$ | $$ | $$ /$$| $$| $$ | $$| $$ | $$| $$_____/| $$ | $$ | $$ /$$ +# | $$$$$$/| $$$$$$/| $$ | $$ | $$$$/| $$| $$ | $$| $$$$$$$| $$$$$$$| $$ | $$ | $$$$/ +# \______/ \______/ |__/ |__/ \___/ |__/|__/ |__/ \____ $$ \_______/|__/ |__/ \___/ +# /$$ \ $$ +# | $$$$$$/ +# \______/ +# /$$ /$$ /$$ +# | $$$ /$$$ | $$ +# | $$$$ /$$$$ /$$$$$$ /$$ /$$ /$$$$$$ /$$$$$$/$$$$ /$$$$$$ /$$$$$$$ /$$$$$$ +# | $$ $$/$$ $$ /$$__ $$| $$ /$$//$$__ $$| $$_ $$_ $$ /$$__ $$| $$__ $$|_ $$_/ +# | $$ $$$| $$| $$ \ $$ \ $$/$$/| $$$$$$$$| $$ \ $$ \ $$| $$$$$$$$| $$ \ $$ | $$ +# | $$\ $ | $$| $$ | $$ \ $$$/ | $$_____/| $$ | $$ | $$| $$_____/| $$ | $$ | $$ /$$ +# | $$ \/ | $$| $$$$$$/ \ $/ | $$$$$$$| $$ | $$ | $$| $$$$$$$| $$ | $$ | $$$$/ +# |__/ |__/ \______/ \_/ \_______/|__/ |__/ |__/ \_______/|__/ |__/ \___/ + +# /$$ /$$ /$$ /$$ +# | $$ | $$ | $$ | $$ +# | $$$$$$$ /$$ /$$ /$$$$$$ /$$$$$$ /$$$$$$$$ /$$$$$$ | $$ /$$| $$$$$$$ /$$$$$$ /$$ /$$ /$$$$$$ /$$ /$$ /$$$$$$$ /$$$$$$ /$$$$$$ +# | $$__ $$| $$ | $$ /$$__ $$ |____ $$|____ /$$/ |____ $$| $$ /$$/| $$__ $$ |____ $$| $$ | $$ /$$__ $$| $$ /$$/| $$__ $$ /$$__ $$|_ $$_/ +# | $$ \ $$| $$ | $$ | $$ \ $$ /$$$$$$$ /$$$$/ /$$$$$$$| $$$$$$/ | $$ \ $$ /$$$$$$$| $$ | $$| $$$$$$$$ \ $$/$$/ | $$ \ $$| $$$$$$$$ | $$ +# | $$ | $$| $$ | $$ | $$ | $$ /$$__ $$ /$$__/ /$$__ $$| $$_ $$ | $$ | $$ /$$__ $$| $$ | $$| $$_____/ \ $$$/ | $$ | $$| $$_____/ | $$ /$$ +# | $$$$$$$/| $$$$$$$ | $$$$$$$| $$$$$$$ /$$$$$$$$| $$$$$$$| $$ \ $$| $$$$$$$/| $$$$$$$| $$$$$$$| $$$$$$$ \ $//$$| $$ | $$| $$$$$$$ | $$$$/ +# |_______/ \____ $$ \____ $$ \_______/|________/ \_______/|__/ \__/|_______/ \_______/ \____ $$ \_______/ \_/|__/|__/ |__/ \_______/ \___/ +# /$$ | $$ /$$ \ $$ /$$ | $$ +# | $$$$$$/ | $$$$$$/ | $$$$$$/ +# \______/ \______/ \______/ diff --git a/analysis/manager/__init__.py b/analysis/manager/__init__.py new file mode 100644 index 0000000..6ace513 --- /dev/null +++ b/analysis/manager/__init__.py @@ -0,0 +1,257 @@ +# +# "contingent-movement" project; +# author: gazakbayev.net +# ver: 1.0 +# + +import psycopg2 +from debug_data.database_creds import CREDS + +class Database: + @staticmethod + def __connection__(): + return psycopg2.connect(**CREDS) + @staticmethod + def initialize(): + conn = Database.__connection__() + try: + with conn.cursor() as cur, open("../docs/schema.sql", "r", encoding="utf-8") as f: + cur.execute(f.read()) + conn.commit() + print("[Contingent-movement] Initialized database with relations.") + except Exception as e: + print(f"[Contingent-movement] [Contingent Movement] Error: {e}") + conn.rollback() + finally: + conn.close() + +def physicals_write(data: list): + conn = Database.__connection__() + try: + with conn.cursor() as cur: + cur.execute(""" + INSERT INTO Physicals (passport_no, name, surname, birthday, phone, mail, citizenship, address, access_card, access_level) + VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s) + """, data) + conn.commit() + except Exception as e: + conn.rollback() + print(f"[Contingent Movement] Error inserting into Physicals: {e}") + finally: + conn.close() + +def supervisors_write(data: list): + conn = Database.__connection__() + try: + with conn.cursor() as cur: + cur.execute(""" + INSERT INTO Supervisors (person, experience, defended_ratio, qualification) + VALUES (%s, %s, %s, %s) + """, data) + conn.commit() + except Exception as e: + conn.rollback() + print(f"[Contingent Movement] Error inserting into Supervisors: {e}") + finally: + conn.close() + +def faculties_write(data: list): + conn = Database.__connection__() + try: + with conn.cursor() as cur: + cur.execute(""" + INSERT INTO Faculties (name, acronym, head, vice, address) + VALUES (%s, %s, %s, %s, %s) + """, data) + conn.commit() + except Exception as e: + conn.rollback() + print(f"[Contingent Movement] Error inserting into Faculties: {e}") + finally: + conn.close() + +def departments_write(data: list): + conn = Database.__connection__() + try: + with conn.cursor() as cur: + cur.execute(""" + INSERT INTO Departments (name, acronym, founded, head, vice, secretary, faculty_id) + VALUES (%s, %s, %s, %s, %s, %s, %s) + """, data) + conn.commit() + except Exception as e: + conn.rollback() + print(f"[Contingent Movement] Error inserting into Departments: {e}") + finally: + conn.close() + +def programs_write(data: list): + conn = Database.__connection__() + try: + with conn.cursor() as cur: + cur.execute(""" + INSERT INTO Programs (specification, degree, name, parent_id) + VALUES (%s, %s, %s, %s) + """, data) + conn.commit() + except Exception as e: + conn.rollback() + print(f"[Contingent Movement] Error inserting into Programs: {e}") + finally: + conn.close() + +def groups_write(data: list): + conn = Database.__connection__() + try: + with conn.cursor() as cur: + cur.execute(""" + INSERT INTO Groups (group_id, faculty_id, program_id, department_id, study_starts, study_ends) + VALUES (%s, %s, %s, %s, %s, %s) + """, data) + conn.commit() + except Exception as e: + conn.rollback() + print(f"[Contingent Movement] Error inserting into Groups: {e}") + finally: + conn.close() + +def students_write(data: list): + conn = Database.__connection__() + try: + with conn.cursor() as cur: + # 1. Сначала проверяем существование всех внешних ключей + cur.execute(""" + SELECT 1 FROM physicals WHERE passport_no = %s + UNION ALL + SELECT 1 FROM groups WHERE group_id = %s + UNION ALL + SELECT 1 FROM physicals WHERE passport_no = %s OR %s IS NULL + """, [data[0], data[1], data[2], data[2]]) + + if len(cur.fetchall()) < 2 + (1 if data[2] is not None else 0): + raise ValueError("Invalid foreign key references") + + cur.execute(""" + INSERT INTO Students (person, group_id, supervisor, education_form, status) + VALUES (%s, %s, %s, %s, %s) + RETURNING id + """, data) + + inserted_id = cur.fetchone()[0] + conn.commit() + return inserted_id + + except Exception as e: + conn.rollback() + print(f"[Contingent Movement] Error inserting into Students: {e}") + return None + finally: + conn.close() + +def family_write(data: list): + conn = Database.__connection__() + try: + with conn.cursor() as cur: + cur.execute(""" + INSERT INTO Family (person, name, surname, kinship, phone, address) + VALUES (%s, %s, %s, %s, %s, %s) + """, data) + conn.commit() + except Exception as e: + conn.rollback() + print(f"[Contingent Movement] Error inserting into Family: {e}") + finally: + conn.close() + +def files_write(data: list): + conn = Database.__connection__() + try: + with conn.cursor() as cur: + cur.execute(""" + INSERT INTO Files (student_id, name, description, extension, size, path) + VALUES (%s, %s, %s, %s, %s, %s) + """, data) + conn.commit() + except Exception as e: + conn.rollback() + print(f"[Contingent Movement] Error inserting into Files: {e}") + finally: + conn.close() + +def disciplines_write(data: list): + conn = Database.__connection__() + try: + with conn.cursor() as cur: + cur.execute(""" + INSERT INTO Disciplines (name, department_id, credit_units, academic_hours, general_hours, is_annual) + VALUES (%s, %s, %s, %s, %s, %s) + """, data) + conn.commit() + except Exception as e: + conn.rollback() + print(f"[Contingent Movement] Error inserting into Disciplines: {e}") + finally: + conn.close() + +def statements_write(data: list): + conn = Database.__connection__() + try: + with conn.cursor() as cur: + cur.execute(""" + INSERT INTO Statements (student_id, discipline_id, examiner, try_no, grade, conducted_at) + VALUES (%s, %s, %s, %s, %s, %s) + """, data) + conn.commit() + except Exception as e: + conn.rollback() + print(f"[Contingent Movement] Error inserting into Statements: {e}") + finally: + conn.close() + +def movement_write(data: list): + conn = Database.__connection__() + try: + with conn.cursor() as cur: + cur.execute(""" + INSERT INTO Movement (student_id, type, new_group, new_status, issued_at) + VALUES (%s, %s, %s, %s, %s) + """, data) + conn.commit() + except Exception as e: + conn.rollback() + print(f"[Contingent Movement] Error inserting into Movement: {e}") + finally: + conn.close() + + +# /$$$$$$ /$$ /$$ /$$ +# /$$__ $$ | $$ |__/ | $$ +# | $$ \__/ /$$$$$$ /$$$$$$$ /$$$$$$ /$$ /$$$$$$$ /$$$$$$ /$$$$$$ /$$$$$$$ /$$$$$$ +# | $$ /$$__ $$| $$__ $$|_ $$_/ | $$| $$__ $$ /$$__ $$ /$$__ $$| $$__ $$|_ $$_/ +# | $$ | $$ \ $$| $$ \ $$ | $$ | $$| $$ \ $$| $$ \ $$| $$$$$$$$| $$ \ $$ | $$ +# | $$ $$| $$ | $$| $$ | $$ | $$ /$$| $$| $$ | $$| $$ | $$| $$_____/| $$ | $$ | $$ /$$ +# | $$$$$$/| $$$$$$/| $$ | $$ | $$$$/| $$| $$ | $$| $$$$$$$| $$$$$$$| $$ | $$ | $$$$/ +# \______/ \______/ |__/ |__/ \___/ |__/|__/ |__/ \____ $$ \_______/|__/ |__/ \___/ +# /$$ \ $$ +# | $$$$$$/ +# \______/ +# /$$ /$$ /$$ +# | $$$ /$$$ | $$ +# | $$$$ /$$$$ /$$$$$$ /$$ /$$ /$$$$$$ /$$$$$$/$$$$ /$$$$$$ /$$$$$$$ /$$$$$$ +# | $$ $$/$$ $$ /$$__ $$| $$ /$$//$$__ $$| $$_ $$_ $$ /$$__ $$| $$__ $$|_ $$_/ +# | $$ $$$| $$| $$ \ $$ \ $$/$$/| $$$$$$$$| $$ \ $$ \ $$| $$$$$$$$| $$ \ $$ | $$ +# | $$\ $ | $$| $$ | $$ \ $$$/ | $$_____/| $$ | $$ | $$| $$_____/| $$ | $$ | $$ /$$ +# | $$ \/ | $$| $$$$$$/ \ $/ | $$$$$$$| $$ | $$ | $$| $$$$$$$| $$ | $$ | $$$$/ +# |__/ |__/ \______/ \_/ \_______/|__/ |__/ |__/ \_______/|__/ |__/ \___/ + +# /$$ /$$ /$$ /$$ +# | $$ | $$ | $$ | $$ +# | $$$$$$$ /$$ /$$ /$$$$$$ /$$$$$$ /$$$$$$$$ /$$$$$$ | $$ /$$| $$$$$$$ /$$$$$$ /$$ /$$ /$$$$$$ /$$ /$$ /$$$$$$$ /$$$$$$ /$$$$$$ +# | $$__ $$| $$ | $$ /$$__ $$ |____ $$|____ /$$/ |____ $$| $$ /$$/| $$__ $$ |____ $$| $$ | $$ /$$__ $$| $$ /$$/| $$__ $$ /$$__ $$|_ $$_/ +# | $$ \ $$| $$ | $$ | $$ \ $$ /$$$$$$$ /$$$$/ /$$$$$$$| $$$$$$/ | $$ \ $$ /$$$$$$$| $$ | $$| $$$$$$$$ \ $$/$$/ | $$ \ $$| $$$$$$$$ | $$ +# | $$ | $$| $$ | $$ | $$ | $$ /$$__ $$ /$$__/ /$$__ $$| $$_ $$ | $$ | $$ /$$__ $$| $$ | $$| $$_____/ \ $$$/ | $$ | $$| $$_____/ | $$ /$$ +# | $$$$$$$/| $$$$$$$ | $$$$$$$| $$$$$$$ /$$$$$$$$| $$$$$$$| $$ \ $$| $$$$$$$/| $$$$$$$| $$$$$$$| $$$$$$$ \ $//$$| $$ | $$| $$$$$$$ | $$$$/ +# |_______/ \____ $$ \____ $$ \_______/|________/ \_______/|__/ \__/|_______/ \_______/ \____ $$ \_______/ \_/|__/|__/ |__/ \_______/ \___/ +# /$$ | $$ /$$ \ $$ /$$ | $$ +# | $$$$$$/ | $$$$$$/ | $$$$$$/ +# \______/ \______/ \______/ diff --git a/docs/dbeaver/dbeaver_ddl.png b/docs/dbeaver/dbeaver_ddl.png new file mode 100644 index 0000000..29483de Binary files /dev/null and b/docs/dbeaver/dbeaver_ddl.png differ diff --git a/docs/dbeaver/dbeaver_dml_persons.png b/docs/dbeaver/dbeaver_dml_persons.png new file mode 100644 index 0000000..a7e1ff8 Binary files /dev/null and b/docs/dbeaver/dbeaver_dml_persons.png differ diff --git a/docs/dbeaver/dbeaver_dml_students.png b/docs/dbeaver/dbeaver_dml_students.png new file mode 100644 index 0000000..b2c0345 Binary files /dev/null and b/docs/dbeaver/dbeaver_dml_students.png differ diff --git a/docs/dbeaver/dbeaver_r_1.png b/docs/dbeaver/dbeaver_r_1.png new file mode 100644 index 0000000..fe2efe8 Binary files /dev/null and b/docs/dbeaver/dbeaver_r_1.png differ diff --git a/docs/dbeaver/dbeaver_r_10.png b/docs/dbeaver/dbeaver_r_10.png new file mode 100644 index 0000000..64375f4 Binary files /dev/null and b/docs/dbeaver/dbeaver_r_10.png differ diff --git a/docs/dbeaver/dbeaver_r_2.png b/docs/dbeaver/dbeaver_r_2.png new file mode 100644 index 0000000..8ecb318 Binary files /dev/null and b/docs/dbeaver/dbeaver_r_2.png differ diff --git a/docs/dbeaver/dbeaver_r_3.png b/docs/dbeaver/dbeaver_r_3.png new file mode 100644 index 0000000..0d9b841 Binary files /dev/null and b/docs/dbeaver/dbeaver_r_3.png differ diff --git a/docs/dbeaver/dbeaver_r_4.png b/docs/dbeaver/dbeaver_r_4.png new file mode 100644 index 0000000..cefe293 Binary files /dev/null and b/docs/dbeaver/dbeaver_r_4.png differ diff --git a/docs/dbeaver/dbeaver_r_5.png b/docs/dbeaver/dbeaver_r_5.png new file mode 100644 index 0000000..587f04d Binary files /dev/null and b/docs/dbeaver/dbeaver_r_5.png differ diff --git a/docs/dbeaver/dbeaver_r_6.png b/docs/dbeaver/dbeaver_r_6.png new file mode 100644 index 0000000..bc02fbe Binary files /dev/null and b/docs/dbeaver/dbeaver_r_6.png differ diff --git a/docs/dbeaver/dbeaver_r_7.png b/docs/dbeaver/dbeaver_r_7.png new file mode 100644 index 0000000..90cb9d0 Binary files /dev/null and b/docs/dbeaver/dbeaver_r_7.png differ diff --git a/docs/dbeaver/dbeaver_r_8.png b/docs/dbeaver/dbeaver_r_8.png new file mode 100644 index 0000000..6090337 Binary files /dev/null and b/docs/dbeaver/dbeaver_r_8.png differ diff --git a/docs/dbeaver/dbeaver_r_9.png b/docs/dbeaver/dbeaver_r_9.png new file mode 100644 index 0000000..a724138 Binary files /dev/null and b/docs/dbeaver/dbeaver_r_9.png differ diff --git a/docs/dml_fill.sql b/docs/dml_fill.sql new file mode 100644 index 0000000..2593851 --- /dev/null +++ b/docs/dml_fill.sql @@ -0,0 +1,1257 @@ +INSERT INTO public.physicals (passport_no,"name",surname,birthday,phone,mail,citizenship,address,access_card,access_level) VALUES + ('14 53 754016','Прокофий','Котова','1990-04-08 00:00:00','8 (853) 667-70-86','cheslavkuzmin@example.net','Кабо-Верде','к. Дмитров, наб. Придорожная, д. 4/2, 834830','50:54:F6:EC:28:AF','ОБЩЕЖИТИЯ'), + ('2038 329148','Лев','Горшков','1967-01-18 00:00:00','8 (652) 235-71-67','avtonom57@example.net','Ангола','клх Егорьевск, ш. Привокзальное, д. 134 стр. 36, 791413','F4:16:76:53:12:0A','ОБЩЕЖИТИЯ'), + ('0352 615058','Иванна','Блохин','1996-01-23 00:00:00','+7 330 236 8888','mark46@example.com','Болгария','г. Октябрьское (Хант.), бул. Ушакова, д. 4/7, 216509','EC:17:38:B5:1B:F2','КАМПУС'), + ('14 65 533037','Будимир','Симонова','1970-03-08 00:00:00','8 537 222 58 17','stanimir_96@example.org','Замбия','д. Кырен, пр. Гайдара, д. 263 стр. 6/8, 853749','13:CE:B6:3F:8D:A2','ОБЩЕЖИТИЯ'), + ('7509 802289','Дмитрий','Мишин','1968-05-07 00:00:00','8 945 642 7101','viktorignatov@example.net','Бангладеш','клх Орехово-Зуево, пер. Краснопартизанский, д. 5 к. 1/8, 432420','05:05:3A:30:56:1D','ПОЛНЫЙ'), + ('4460 259670','Тимур','Анисимов','1961-08-16 00:00:00','+7 (740) 183-29-72','xkolobov@example.org','Бразилия','г. Андреаполь, ул. Заливная, д. 198 к. 9, 525638','6A:10:D9:B4:4E:E8','КАМПУС'), + ('4002 895274','Максим','Лыткина','2001-09-10 00:00:00','83497023500','klavdija_1974@example.net','Камерун','г. Ноглики, наб. Ярославская, д. 144 стр. 8, 521793','1E:90:43:05:2A:BE','ОБЩЕЖИТИЯ'), + ('1368 118017','Ратибор','Федотов','1982-12-21 00:00:00','8 515 770 22 88','lavrentevavarvara@example.org','Норвегия','ст. Морозовск, пер. Снежный, д. 6/1 к. 963, 542823','7A:CD:06:F0:7C:91','ПОЛНЫЙ'), + ('8058 663467','Будимир','Сорокина','1984-04-06 00:00:00','8 171 122 87 25','ofedorova@example.net','Ливия','г. Кизел, наб. Котовского, д. 369 стр. 7/3, 583631','8F:B1:D1:D8:CB:35','КАМПУС'), + ('42 54 461020','Валентин','Блохина','1987-03-18 00:00:00','88505897001','rodionovanaina@example.org','Латвия','п. Эльбрус, бул. Курский, д. 98, 447118','6A:2B:B8:F3:BE:A1','ПОЛНЫЙ'); +INSERT INTO public.physicals (passport_no,"name",surname,birthday,phone,mail,citizenship,address,access_card,access_level) VALUES + ('68 03 790897','Елизар','Кузнецов','1997-02-13 00:00:00','8 (580) 070-59-24','oktjabrina_56@example.net','Камерун','с. Красногорск (Моск.), алл. Ореховая, д. 8, 453483','9F:9A:B8:3E:1D:B8','ОБЩЕЖИТИЯ'), + ('16 33 850537','Радим','Денисов','1974-08-13 00:00:00','8 445 809 66 96','savvaveselov@example.com','Сьерра-Леоне','п. Ростов, наб. Щорса, д. 5/6 стр. 18, 194212','F1:31:30:BC:49:3E','КАМПУС'), + ('2696 955299','Аполлинарий','Фадеева','1959-09-01 00:00:00','81913516393','konstantin_30@example.com','Гаити','с. Заводоуковск, ул. Проточная, д. 5/2, 277355','C2:0C:48:7E:65:14','ОБЩЕЖИТИЯ'), + ('01 11 004709','Элеонора','Лихачева','1968-01-02 00:00:00','+7 (749) 229-4931','lfedotov@example.org','Ирак','г. Саратов, ш. Весеннее, д. 102, 576005','87:6B:FB:EC:B2:07','КАМПУС'), + ('23 22 682149','Рубен','Тихонов','1952-11-26 00:00:00','8 (077) 637-7798','marina_42@example.net','Судан','п. Улан-Удэ, алл. Краснопартизанская, д. 3 к. 3, 989016','8F:81:48:B0:FE:D1','КАМПУС'), + ('08 04 606331','Фортунат','Гущин','1961-11-22 00:00:00','8 108 343 0714','jaropolkkabanov@example.com','Афганистан','д. Серебряные Пруды, пр. Владимирский, д. 2 к. 5/2, 246645','3E:E8:BA:95:AB:AC','ОБЩЕЖИТИЯ'), + ('96 10 495588','Дорофей','Гурьева','1949-01-18 00:00:00','+7 907 290 40 22','fedoseevkarp@example.net','Ямайка','д. Новокузнецк, ул. Народная, д. 6 стр. 47, 500698','CF:60:5C:4A:64:E0','ОБЩЕЖИТИЯ'), + ('56 75 787348','Лучезар','Крылов','1964-03-09 00:00:00','87024296909','innokenti_28@example.net','Сирия','ст. Павловская, ул. Приозерная, д. 976 стр. 66, 318396','B6:FE:AD:0E:27:9F','КАМПУС'), + ('4538 101010','Фрол','Пахомов','1965-12-28 00:00:00','8 485 737 1625','mjasnikovapollon@example.com','Ливан','г. Поронайск, ш. Ангарское, д. 8 к. 5/5, 632098','ED:0B:4F:D1:91:DB','ПОЛНЫЙ'), + ('5791 023528','Святополк','Полякова','2005-02-14 00:00:00','+7 261 178 7305','globanova@example.org','Гвинея-Бисау','клх Нарьян-Мар, ул. Монтажников, д. 3 стр. 1, 210808','DD:7E:65:39:9F:3B','ПОЛНЫЙ'); +INSERT INTO public.physicals (passport_no,"name",surname,birthday,phone,mail,citizenship,address,access_card,access_level) VALUES + ('3719 647913','Евгения','Субботин','1947-10-06 00:00:00','+7 090 537 8516','danila_60@example.net','Бутан','клх Усть-Илимск, пер. Радищева, д. 347 стр. 662, 302614','39:6E:B0:94:3D:C4','КАМПУС'), + ('9443 417640','Венедикт','Тихонов','1958-02-06 00:00:00','+73981612936','radovan_26@example.org','Новая Зеландия','с. Тура, алл. Свободная, д. 762 стр. 12, 192464','A4:70:1A:E4:4A:83','КАМПУС'), + ('17 40 007124','Платон','Чернов','2001-02-28 00:00:00','82009925570','shestakovmaksim@example.net','Мексика','к. Домодедово, ул. Марта 8, д. 88 к. 6, 618940','90:8A:CC:E1:FE:CE','ПОЛНЫЙ'), + ('4310 334618','Архип','Пономарев','1947-06-25 00:00:00','8 533 895 35 16','emeljanovaristarh@example.org','Куба','г. Змеиногорск, алл. Ясная, д. 89 к. 8/1, 905884','6A:CF:E2:A0:4C:93','ОБЩЕЖИТИЯ'), + ('8217 437236','Болеслав','Артемьев','1971-11-21 00:00:00','+7 415 778 2121','raleksandrov@example.org','Фиджи','г. Краснокамск, алл. Войкова, д. 384 к. 451, 703003','3E:3D:9F:D0:9F:5E','ПОЛНЫЙ'), + ('41 62 923519','Анна','Уварова','1968-06-15 00:00:00','89308534844','novikovaolimpiada@example.net','Замбия','п. Слюдянка, ул. Рабочая, д. 6 стр. 18, 406813','A8:C3:B6:6D:92:4E','КАМПУС'), + ('8248 963240','Рубен','Филиппова','1971-09-29 00:00:00','+7 248 130 0732','fedotovaekaterina@example.com','Бахрейн','ст. Чебоксары, ш. Прибрежное, д. 471, 702932','88:1A:CC:75:23:10','ОБЩЕЖИТИЯ'), + ('32 29 274400','Лукия','Белоусов','1959-04-29 00:00:00','8 (339) 833-4434','spartak_19@example.net','Ливан','к. Бийск, пер. Коминтерна, д. 1 к. 2/6, 009325','BD:7A:5C:78:40:57','ПОЛНЫЙ'), + ('6135 615311','Олег','Логинов','1975-07-04 00:00:00','+7 076 299 9564','bogdangorshkov@example.net','Эритрея','д. Тикси, бул. Центральный, д. 57 к. 14, 162137','E4:50:97:56:42:81','ОБЩЕЖИТИЯ'), + ('36 60 168150','Владилен','Кудрявцева','1972-03-22 00:00:00','+7 (475) 736-53-95','panfilkoshelev@example.com','Куба','клх Любань, ул. Рязанская, д. 6/9, 857616','85:80:70:AA:42:03','ОБЩЕЖИТИЯ'); +INSERT INTO public.physicals (passport_no,"name",surname,birthday,phone,mail,citizenship,address,access_card,access_level) VALUES + ('0979 857801','Эраст','Денисов','2000-07-14 00:00:00','+7 405 622 6469','galina1985@example.com','Эстония','ст. Крымск, пр. Слободской, д. 6 к. 1/5, 927538','76:BF:E0:66:91:5D','ОБЩЕЖИТИЯ'), + ('24 41 226828','Милица','Рожков','1956-12-10 00:00:00','8 447 264 26 76','lobanovvladimir@example.net','Фиджи','д. Луховицы, ул. Ягодная, д. 6/2, 843858','05:69:40:59:73:72','ПОЛНЫЙ'), + ('28 36 777335','Виссарион','Борисова','1997-03-09 00:00:00','+72929091070','ermakovaverjan@example.org','Ангола','к. Плес, пер. Московский, д. 398, 308716','49:40:EE:F4:79:28','ПОЛНЫЙ'), + ('09 12 724570','Марфа','Панфилов','1986-06-25 00:00:00','8 (699) 098-68-49','sila_2017@example.org','Центральноафриканская Республика','к. Екатеринбург, алл. Семашко, д. 8 к. 67, 288161','05:FB:F9:FB:98:18','КАМПУС'), + ('99 95 325957','Игнатий','Исаков','1994-07-22 00:00:00','8 (661) 489-9872','lapinsemen@example.com','Самоа','ст. Ессентуки, бул. Разина, д. 4 к. 8/2, 641220','E5:AF:BF:1A:7C:FC','ОБЩЕЖИТИЯ'), + ('87 29 846893','Тарас','Большакова','1987-01-28 00:00:00','+7 (750) 106-25-79','noskovalidija@example.net','США','к. Ямбург, пр. Ягодный, д. 555 к. 7, 038282','D7:89:CB:D5:05:CC','ПОЛНЫЙ'), + ('7312 143508','Степан','Устинов','1968-04-25 00:00:00','+7 (767) 060-9687','pavelkuznetsov@example.net','Австрия','п. Карпинск, бул. Тупиковый, д. 206 к. 3, 517968','0C:B0:FD:E7:1A:1C','ОБЩЕЖИТИЯ'), + ('2072 637449','Юлий','Белоусов','1997-08-17 00:00:00','+7 (806) 218-51-82','kabanovmir@example.com','Чад','п. Стерлитамак, ш. Р.Люксембург, д. 647 к. 142, 193865','3D:B2:1E:3E:CC:D1','КАМПУС'), + ('6296 899862','Ладимир','Абрамов','1996-11-17 00:00:00','82927445934','evdokimovdenis@example.org','Вьетнам','д. Серов, пер. Кирова, д. 36, 354588','4D:A3:A9:D3:96:46','КАМПУС'), + ('00 69 431964','Любомир','Савин','2001-12-01 00:00:00','+75775673936','chernovamarina@example.com','Мальта','д. Кировск (Мурм.), пр. Мирный, д. 1/9 к. 4, 536643','F9:3C:02:35:47:47','ОБЩЕЖИТИЯ'); +INSERT INTO public.physicals (passport_no,"name",surname,birthday,phone,mail,citizenship,address,access_card,access_level) VALUES + ('81 53 440895','Ермил','Никитин','1973-02-19 00:00:00','8 773 264 7480','evgenidmitriev@example.org','Мавритания','п. Ишим, алл. Розы Люксембург, д. 650 стр. 75, 366748','CD:A8:4A:5F:21:AC','КАМПУС'), + ('7702 425444','Филарет','Алексеева','2003-05-19 00:00:00','+7 119 691 5501','jkuzmina@example.org','Саудовская Аравия','д. Луховицы, ул. М.Горького, д. 1 к. 61, 804184','99:E6:6F:85:06:3A','КАМПУС'), + ('9227 408469','Стоян','Смирнов','1986-03-22 00:00:00','8 138 241 16 07','foka_2013@example.com','Германия','ст. Кашира, наб. Олега Кошевого, д. 695 стр. 8/6, 620737','C8:F8:B6:93:B5:AA','ОБЩЕЖИТИЯ'), + ('40 05 425729','Конон','Субботина','1968-09-24 00:00:00','+7 667 486 49 74','osipovgedeon@example.org','Сингапур','г. Ершов, наб. Рязанская, д. 8 стр. 976, 581660','B6:F0:13:AA:45:EA','КАМПУС'), + ('09 19 738816','Евсей','Симонова','1985-09-23 00:00:00','8 (717) 628-50-86','evgeni24@example.net','Сербия','г. Тобольск, ш. Карьерное, д. 33, 446705','69:DE:AA:8D:9C:6D','ОБЩЕЖИТИЯ'), + ('70 03 480096','Людмила','Галкина','1997-09-22 00:00:00','82640680417','filippovakira@example.net','Китай','с. Чокурдах, бул. Шаумяна, д. 4/5 к. 5/5, 272407','7D:80:37:2C:F3:40','КАМПУС'), + ('0986 685929','Пимен','Афанасьев','1987-03-26 00:00:00','+7 585 983 30 71','aleksandr54@example.net','Белиз','к. Хатанга, бул. Победа, д. 685, 938281','BA:1B:EA:69:89:DB','ПОЛНЫЙ'), + ('4153 099823','Радислав','Рожкова','1978-01-11 00:00:00','+7 872 548 14 49','gefimova@example.com','Черногория','клх Диксон, ш. Безымянное, д. 87 к. 571, 841153','3A:C8:C7:3F:FB:1A','ОБЩЕЖИТИЯ'), + ('8816 094109','Олег','Пахомова','1991-12-10 00:00:00','8 (381) 823-25-97','lazarbolshakov@example.net','Непал','д. Петухово, ш. З.Космодемьянской, д. 84 к. 503, 383892','A7:45:CA:58:0A:DD','ОБЩЕЖИТИЯ'), + ('8121 706931','Моисей','Юдина','1998-03-24 00:00:00','88355490325','samolovlazar@example.org','Коморы','п. Орехово-Зуево, пер. Каштановый, д. 9/9, 710453','E6:65:78:31:A7:EB','КАМПУС'); +INSERT INTO public.physicals (passport_no,"name",surname,birthday,phone,mail,citizenship,address,access_card,access_level) VALUES + ('3687 908787','Пахом','Иванова','1978-07-08 00:00:00','8 (889) 978-2474','fade_1978@example.net','Монако','п. Джубга, бул. Спортивный, д. 1 к. 531, 072365','A0:29:A4:42:7D:AC','ОБЩЕЖИТИЯ'), + ('78 76 778037','Наталья','Соловьев','1993-01-24 00:00:00','8 (033) 634-1897','narkis41@example.net','Ангола','к. Ревда (Сверд.), ул. Верхняя, д. 90 к. 3/7, 861243','EC:A8:3A:B3:9A:DA','ОБЩЕЖИТИЯ'), + ('4842 253548','Денис','Ермаков','1972-12-27 00:00:00','8 (885) 310-9451','iosif2012@example.org','Словения','к. Павловский Посад, алл. Ленская, д. 91 стр. 4, 358019','3F:49:00:A6:3A:1D','КАМПУС'), + ('62 63 001065','Мефодий','Авдеев','1963-09-24 00:00:00','8 (411) 383-6019','mamontovmarian@example.org','Демократическая Республика Конго','г. Лабытнанги, бул. Кочубея, д. 148, 255013','AD:50:E7:43:7C:82','ОБЩЕЖИТИЯ'), + ('0321 003171','Афанасий','Исакова','1980-02-28 00:00:00','+7 101 789 08 64','iraida_1987@example.org','Албания','клх Лабинск, бул. Черноморский, д. 14 к. 90, 087079','90:F6:54:54:7A:74','ОБЩЕЖИТИЯ'), + ('17 31 408908','Ким','Осипов','1944-06-29 00:00:00','8 043 918 39 30','bogdanovjaroslav@example.net','Иордания','с. Новомосковск, ш. Олимпийское, д. 5 стр. 83, 314348','94:66:6C:BB:00:B6','КАМПУС'), + ('65 16 370520','Элеонора','Королева','1965-03-10 00:00:00','8 814 429 68 16','veniamin_1970@example.com','Сейшельские Острова','клх Нягань, ул. Пушкина, д. 7/2 к. 857, 724684','93:CB:FF:9B:B3:0F','ОБЩЕЖИТИЯ'), + ('03 11 214520','Аким','Кузьмин','1980-10-23 00:00:00','8 982 041 66 47','ashashkov@example.net','Таиланд','с. Суздаль, алл. Стахановская, д. 8/1, 030446','25:06:40:0B:7E:A5','КАМПУС'), + ('46 08 590557','Вышеслав','Носов','1969-08-11 00:00:00','+7 259 205 04 59','kolesnikovaveronika@example.net','Таиланд','ст. Мирный, пер. Угловой, д. 2 к. 868, 743807','74:2B:6C:7A:18:B0','ПОЛНЫЙ'), + ('87 85 806911','Ольга','Константинов','1988-02-07 00:00:00','+7 (398) 564-0405','julija2023@example.org','Фиджи','д. Томск, наб. Тепличная, д. 143 стр. 646, 640141','A1:C5:CA:DA:8B:40','ОБЩЕЖИТИЯ'); +INSERT INTO public.physicals (passport_no,"name",surname,birthday,phone,mail,citizenship,address,access_card,access_level) VALUES + ('14 07 078597','Викентий','Кудряшова','1989-11-03 00:00:00','+7 153 058 9202','vadimzikov@example.org','Парагвай','клх Соболево, ш. Путейское, д. 73 стр. 671, 805972','3F:26:BE:79:E7:D2','КАМПУС'), + ('6160 369983','Иван','Сысоев','2001-07-30 00:00:00','8 (645) 884-6722','polina_1970@example.org','Вануату','д. Липецк, пер. Спартака, д. 94 к. 9, 572929','87:E1:89:52:A6:FF','ОБЩЕЖИТИЯ'), + ('2506 304395','Платон','Стрелков','2001-08-22 00:00:00','8 (124) 474-4407','mina_2016@example.com','Ангола','клх Алапаевск, пер. Речной, д. 38, 885198','85:E8:D9:35:98:EA','ПОЛНЫЙ'), + ('74 62 888532','Рубен','Тимофеев','1960-12-06 00:00:00','80991440695','tretjakovrostislav@example.org','Венесуэла','клх Хабаровск, алл. Урицкого, д. 281 стр. 6, 333068','0C:C2:C4:24:6E:78','ПОЛНЫЙ'), + ('0471 410584','Вера','Лазарева','1945-07-13 00:00:00','8 (705) 867-9275','xsavina@example.com','Ирландия','д. Бугульма, алл. Ермака, д. 9/8, 771063','CF:93:DE:E3:6F:97','КАМПУС'), + ('14 65 806821','Евдоким','Юдин','2000-06-15 00:00:00','8 (502) 238-77-25','amosknjazev@example.org','Бурунди','г. Ступино, наб. Индустриальная, д. 66 к. 9, 757982','2C:4E:C4:C4:A3:30','ПОЛНЫЙ'), + ('8120 358749','Болеслав','Мартынов','1975-04-28 00:00:00','+7 (342) 496-4243','ilja_1991@example.com','Сейшельские Острова','п. Березники, ш. Одесское, д. 6 к. 7, 492146','9B:E0:DC:4F:C1:50','ПОЛНЫЙ'), + ('20 37 458428','Валерия','Савельев','1976-10-27 00:00:00','8 545 323 40 51','irina_24@example.org','Тонга','ст. Змеиногорск, ш. Кленовое, д. 1 стр. 63, 278304','C8:AF:3B:28:8C:8A','ОБЩЕЖИТИЯ'), + ('93 45 648223','Евсей','Мельникова','1964-07-25 00:00:00','8 (594) 981-3893','prokofi_1988@example.org','Габон','ст. Горно-Алтайск, наб. Минская, д. 292, 164921','88:05:45:64:C6:D4','КАМПУС'), + ('65 31 356360','Виктор','Гусев','1977-07-06 00:00:00','+73687397006','vatslav_77@example.org','Сенегал','ст. Балашов, пер. Ульяновский, д. 4/8 стр. 2/5, 531614','25:21:5A:56:D3:83','ПОЛНЫЙ'); +INSERT INTO public.physicals (passport_no,"name",surname,birthday,phone,mail,citizenship,address,access_card,access_level) VALUES + ('0361 707743','Митофан','Жданова','1975-05-20 00:00:00','+7 851 775 63 39','milovan_05@example.com','Оман','ст. Кемерово, ш. Мичурина, д. 9/3 к. 39, 589415','5A:28:02:4F:32:8C','ОБЩЕЖИТИЯ'), + ('2118 057268','Семен','Вишнякова','1950-08-31 00:00:00','+77997120088','sofija62@example.net','Оман','д. Лодейное Поле, пер. К.Маркса, д. 32 стр. 176, 679881','AA:56:8F:A8:E9:6D','ПОЛНЫЙ'), + ('12 98 859021','Харлампий','Калашников','1985-12-15 00:00:00','8 (169) 939-53-92','arkadi_2007@example.com','Канада','д. Пушкинские Горы, пр. Суворова, д. 139 стр. 501, 346969','BF:09:E6:FF:71:CD','ПОЛНЫЙ'), + ('8209 142250','Лукия','Щукин','1991-05-15 00:00:00','8 511 852 1939','lavrenti_77@example.com','Эстония','к. Шатой, пер. Широкий, д. 3/1, 860168','DF:9E:9D:85:D0:50','КАМПУС'), + ('56 88 730869','Фадей','Исаев','2001-06-12 00:00:00','+73431963317','krjukovseliverst@example.net','Маврикий','к. Чита, пер. Поперечный, д. 7/9, 656103','34:D1:61:F2:C6:E9','ПОЛНЫЙ'), + ('53 40 866845','Трофим','Колобова','1966-09-06 00:00:00','8 121 088 6735','kirillovnikanor@example.org','Сан-Марино','ст. Буденновск, алл. Серова, д. 4 к. 2/8, 955492','76:31:2A:EA:96:D5','КАМПУС'), + ('6027 662499','Евгения','Горбунова','1984-12-28 00:00:00','8 701 488 74 96','dementi1996@example.org','Эритрея','г. Онега, ул. Поселковая, д. 138 к. 482, 648485','4A:3A:2A:A7:3B:29','ПОЛНЫЙ'), + ('6844 054935','Спиридон','Носкова','1988-10-18 00:00:00','8 (365) 683-4071','gorbunovvikenti@example.com','Албания','клх Подольск, пер. Лунный, д. 25, 178116','4D:B8:08:E2:B9:F1','ПОЛНЫЙ'), + ('0398 387328','Роман','Юдин','1963-02-13 00:00:00','+7 (055) 722-0123','solomon79@example.org','Гвинея','клх Углегорск, пер. Толбухина, д. 67, 290443','A9:B8:D9:43:F2:F9','КАМПУС'), + ('9861 406255','Евлампий','Гусева','1960-11-18 00:00:00','8 (309) 146-3877','rjabovmstislav@example.org','Египет','д. Дивногорск, наб. Кузнецова, д. 9 к. 2/4, 105423','3B:81:9C:2C:BE:DC','ОБЩЕЖИТИЯ'); +INSERT INTO public.physicals (passport_no,"name",surname,birthday,phone,mail,citizenship,address,access_card,access_level) VALUES + ('46 29 841856','Илья','Лаврентьев','1973-02-12 00:00:00','+7 233 571 4665','ufrolova@example.com','Сент-Винсент и Гренадины','ст. Таштагол, ул. Восточная, д. 8/5, 688626','17:A6:E1:F5:82:01','ОБЩЕЖИТИЯ'), + ('2694 149771','Януарий','Кулагина','1988-02-16 00:00:00','+7 (073) 286-81-22','ignati36@example.net','Соломоновы Острова','к. Усть-Ишим, наб. Суворова, д. 40 стр. 7/3, 860491','C0:63:A2:D7:15:09','ПОЛНЫЙ'), + ('7215 075977','Борис','Ершова','2000-08-17 00:00:00','+7 709 312 1372','kuprijan_60@example.com','Мозамбик','п. Макаров, пер. Проточный, д. 55 стр. 796, 138704','A8:7F:AF:38:01:B8','КАМПУС'), + ('67 86 529204','Наум','Никифоров','1986-02-15 00:00:00','8 491 634 9936','uvarovvikenti@example.net','Белоруссия','клх Псков, пр. Театральный, д. 45, 238136','B8:52:FE:A2:E9:F9','ПОЛНЫЙ'), + ('6804 058468','Мстислав','Голубев','1975-12-28 00:00:00','84594283987','panfil_2003@example.org','Черногория','д. Малгобек, пр. Волжский, д. 1 стр. 3/3, 632010','6E:16:99:E9:2A:3E','ПОЛНЫЙ'), + ('1054 525196','Ян','Агафонова','1989-08-27 00:00:00','+7 (713) 280-5242','ernest_67@example.org','Барбадос','клх Кисловодск, наб. Энгельса, д. 2/8 стр. 1, 518199','02:7C:23:7B:30:B6','ПОЛНЫЙ'), + ('56 58 064920','Мариан','Голубев','2000-01-21 00:00:00','+7 (707) 898-51-53','evdokim_2015@example.com','Германия','с. Азов (Рост.), ул. Мельничная, д. 9 стр. 6, 507391','B5:64:1D:41:56:F6','КАМПУС'), + ('23 19 653876','Андрон','Гуляева','1974-04-27 00:00:00','8 (469) 675-3827','lavrentevjakub@example.net','Танзания','ст. Снежногорск (Мурм.), пер. Светлый, д. 303, 387003','C3:14:78:55:E4:A9','КАМПУС'), + ('5339 605980','Роман','Ермакова','2001-01-03 00:00:00','+7 (083) 256-62-56','foka_49@example.net','Лаос','д. Камышлов, пер. Димитрова, д. 3/8, 291963','4C:D3:64:EF:97:02','ОБЩЕЖИТИЯ'), + ('65 74 991657','Максимильян','Лаврентьев','1992-06-01 00:00:00','8 282 239 88 61','adrian_2006@example.net','Соломоновы Острова','клх Кижи, бул. Ломоносова, д. 8/7 стр. 11, 983982','3A:D0:6B:54:DE:C3','ПОЛНЫЙ'); +INSERT INTO public.physicals (passport_no,"name",surname,birthday,phone,mail,citizenship,address,access_card,access_level) VALUES + ('5632 992313','Трофим','Куликов','1986-09-06 00:00:00','+7 888 230 70 53','odintsovaraisa@example.com','Соломоновы Острова','п. Новгород Великий, ул. Белинского, д. 825, 120335','0D:91:E1:64:53:C0','КАМПУС'), + ('1972 649748','Марк','Лаврентьева','1953-10-19 00:00:00','8 (377) 815-75-45','mamontovkir@example.org','Гана','ст. Ишим, пер. Одесский, д. 939 стр. 97, 954312','E8:17:B7:4E:ED:82','ПОЛНЫЙ'), + ('71 16 334309','Азарий','Устинов','1960-09-18 00:00:00','8 (698) 375-9192','januari_2012@example.net','Чили','с. Нязепетровск, бул. Титова, д. 6/5, 874029','B5:4D:10:C3:BA:C8','КАМПУС'), + ('01 89 887243','Галактион','Назаров','1953-03-09 00:00:00','+7 048 584 0462','htretjakov@example.org','Португалия','к. Смирных, ул. Попова, д. 9 стр. 7/1, 643757','5D:91:53:DE:1B:76','КАМПУС'), + ('59 85 115604','Лонгин','Турова','1971-01-21 00:00:00','8 443 572 73 12','turovaraisa@example.com','Хорватия','с. Дубна, пер. Попова, д. 7 к. 7, 369462','75:A4:DB:E7:14:FF','ОБЩЕЖИТИЯ'), + ('12 31 046933','Лаврентий','Степанова','1966-01-25 00:00:00','+7 177 090 61 88','ekaterina_1970@example.com','Великобритания','клх Медногорск, алл. Февральская, д. 5/9 к. 4/7, 956379','E7:19:23:D1:D0:FD','КАМПУС'), + ('1992 996145','Велимир','Воронова','1983-06-05 00:00:00','+7 822 005 39 06','lebedevsvetozar@example.org','Соломоновы Острова','д. Лодейное Поле, пр. Просторный, д. 886, 589517','0E:9B:52:49:A7:E0','КАМПУС'), + ('70 38 816324','Радим','Цветков','1998-04-03 00:00:00','8 818 452 2747','julija15@example.org','Марокко','г. Кетченеры, ш. Комсомольское, д. 67, 863519','1C:94:BD:F7:77:69','ПОЛНЫЙ'), + ('6893 942880','Милен','Щукин','1959-05-19 00:00:00','8 643 365 4963','afinogenshubin@example.org','Антигуа и Барбуда','к. Озеры, ул. К.Маркса, д. 5, 767722','2C:2F:34:D4:D9:90','ПОЛНЫЙ'), + ('7327 146343','Лев','Цветкова','1963-12-10 00:00:00','+79558519364','evlampiegorov@example.org','Габон','клх Нижневартовск, пр. Калинина, д. 8 стр. 456, 676233','66:5E:71:20:78:31','ПОЛНЫЙ'); +INSERT INTO public.physicals (passport_no,"name",surname,birthday,phone,mail,citizenship,address,access_card,access_level) VALUES + ('4739 983444','Юлия','Фокин','1951-07-13 00:00:00','8 238 576 7847','oktjabrina1982@example.com','Россия','к. Шенкурск, пер. Пугачева, д. 141 стр. 9, 185884','B6:8F:F9:F8:C8:AF','ПОЛНЫЙ'), + ('5669 391400','Ладислав','Максимова','1971-04-11 00:00:00','89315801240','mefodi_79@example.com','Соломоновы Острова','клх Тула, наб. Магистральная, д. 1/2 к. 3, 898298','4C:D1:63:26:34:94','КАМПУС'), + ('0341 008975','Натан','Авдеева','1999-06-18 00:00:00','+7 (102) 180-24-20','gordedrozdov@example.com','Белоруссия','с. Диксон, пр. Ручейный, д. 9 стр. 40, 865367','C5:93:63:79:6B:B4','ПОЛНЫЙ'), + ('3359 661291','Радислав','Шилова','1993-01-24 00:00:00','+76161723393','sokolovguri@example.com','Чехия','д. Одинцово, ш. Ореховое, д. 8/2, 525320','6D:03:9D:DE:07:F9','ПОЛНЫЙ'), + ('49 25 037018','Ярослав','Беляева','1983-07-14 00:00:00','+7 276 014 1084','akim_1976@example.net','Мьянма','д. Шелагонцы, алл. Короткая, д. 17, 469131','64:C5:83:BE:1A:D7','ОБЩЕЖИТИЯ'), + ('17 94 890444','Полина','Сидорова','1978-05-18 00:00:00','8 336 925 91 69','afanasi50@example.net','Малави','ст. Мокшан, пр. Труда, д. 8/2 к. 66, 054227','FC:2B:4B:65:07:5C','КАМПУС'), + ('2572 232250','Евдоким','Владимиров','1944-11-21 00:00:00','8 (707) 087-9308','gurifedorov@example.com','Панама','клх Нижний Новгород, пр. Фабричный, д. 912, 904445','F2:67:89:C4:F3:10','ОБЩЕЖИТИЯ'), + ('47 37 303708','Мир','Симонова','1978-08-19 00:00:00','+72894761117','novikovanaina@example.com','Мадагаскар','клх Поронайск, ш. Карла Либкнехта, д. 2/3 к. 767, 283761','D2:B8:39:E3:D8:FE','ОБЩЕЖИТИЯ'), + ('01 88 788405','Эммануил','Чернова','2004-12-02 00:00:00','+7 (832) 248-8394','ljubov2019@example.com','Никарагуа','г. Москва, пер. Геологов, д. 805 стр. 4/5, 622500','89:C2:A6:45:C2:1C','ПОЛНЫЙ'), + ('71 33 082365','Бажен','Антонова','2005-12-01 00:00:00','86734651103','alekse2008@example.org','Филиппины','с. Чермоз, пр. Радужный, д. 7, 997995','AB:CA:ED:53:D7:FE','ОБЩЕЖИТИЯ'); +INSERT INTO public.physicals (passport_no,"name",surname,birthday,phone,mail,citizenship,address,access_card,access_level) VALUES + ('2124 144385','Эдуард','Семенов','1982-09-01 00:00:00','8 (997) 726-0111','kiselevradislav@example.com','Сан-Марино','с. Кандалакша, ш. Театральное, д. 9 к. 8/5, 482748','81:8D:5F:ED:5C:6B','ОБЩЕЖИТИЯ'), + ('91 80 692064','Евграф','Соболева','1983-03-21 00:00:00','87039716292','smirnovantip@example.net','Кения','г. Владивосток, наб. Ореховая, д. 76 к. 7, 008547','E2:17:3F:BD:37:F7','КАМПУС'), + ('72 69 218586','Валентина','Вишняков','2001-05-10 00:00:00','8 (618) 875-7882','tverdislav63@example.net','Сейшельские Острова','ст. Можайск, пр. Журавлева, д. 37 к. 2/1, 535343','28:E0:66:9A:04:FE','ПОЛНЫЙ'), + ('5232 128471','Роман','Вишняков','1975-03-03 00:00:00','+7 035 172 47 50','luchezar_1986@example.net','Пакистан','д. Радужный, пер. Ильича, д. 2, 518165','6A:0C:0D:9A:E5:59','ОБЩЕЖИТИЯ'), + ('56 33 515799','Лаврентий','Мухин','1947-05-13 00:00:00','+75536164769','rjurikvishnjakov@example.com','Болгария','клх Южноуральск, ш. Саратовское, д. 33 стр. 16, 013269','17:68:71:DB:25:03','ПОЛНЫЙ'), + ('3189 996321','Гурий','Максимов','1995-10-04 00:00:00','+7 589 605 34 83','dbaranov@example.org','Непал','к. Соболево, наб. Дзержинского, д. 249 стр. 1/9, 199294','CD:87:76:0E:60:21','ОБЩЕЖИТИЯ'), + ('7850 626798','Тимофей','Князев','1984-03-14 00:00:00','+7 (432) 975-54-15','kulakovvarfolome@example.org','Швеция','п. Малая Вишера, алл. Кольцова, д. 454 стр. 2, 054941','37:AC:23:E1:3D:E9','КАМПУС'), + ('2929 884730','Радован','Жданов','1962-03-16 00:00:00','+7 (716) 750-60-08','porfiri_2007@example.com','Канада','ст. Усть-Камчатск, ул. Народная, д. 2/3 стр. 49, 898770','0B:C2:89:2F:86:85','ПОЛНЫЙ'), + ('2525 999801','Валентина','Трофимова','1998-01-18 00:00:00','+7 365 219 99 82','feliks2025@example.org','Коста-Рика','д. Кингисепп, пер. Юности, д. 450 стр. 7, 134865','5F:F8:20:6E:EA:52','ОБЩЕЖИТИЯ'), + ('47 50 548674','Онуфрий','Суханова','1975-03-25 00:00:00','+7 (813) 538-5782','vera2023@example.org','Китай','с. Оймякон, наб. Аэродромная, д. 3/9, 981973','B7:A2:29:D3:1D:A7','ПОЛНЫЙ'); +INSERT INTO public.physicals (passport_no,"name",surname,birthday,phone,mail,citizenship,address,access_card,access_level) VALUES + ('3743 597184','Агап','Шестакова','2006-06-08 00:00:00','+7 (469) 797-5217','zinovisharapov@example.net','Малайзия','д. Прохладный, ул. Гафури, д. 75, 904344','84:C7:94:7A:B3:6E','ОБЩЕЖИТИЯ'), + ('26 38 700770','Святослав','Зуев','1975-01-25 00:00:00','8 (353) 568-6319','kuznetsovanadezhda@example.net','Бангладеш','п. Уренгой, пер. Орджоникидзе, д. 7 стр. 8/2, 306665','FF:75:D7:23:20:7B','ПОЛНЫЙ'), + ('14 12 411167','Евграф','Щукина','1978-12-09 00:00:00','+7 (572) 014-4731','burovmartin@example.net','Сальвадор','с. Семлячики, бул. Совхозный, д. 175 к. 56, 364363','3B:0C:32:BB:C5:3E','ОБЩЕЖИТИЯ'), + ('0953 423173','Карп','Ширяев','1961-10-07 00:00:00','+7 (754) 335-5443','ddavidova@example.org','Зимбабве','с. Карачаевск, бул. Омский, д. 4/6 стр. 6/5, 108887','56:F9:8D:92:89:94','ОБЩЕЖИТИЯ'), + ('40 35 788599','Михей','Герасимов','1969-10-11 00:00:00','+78654272577','foma51@example.org','Молдавия','д. Можайск, ул. Физкультурная, д. 459 к. 1, 114209','A0:73:15:FE:0F:7D','ПОЛНЫЙ'), + ('21 79 666967','Любомир','Козлов','2000-06-01 00:00:00','+7 (295) 717-15-48','kondrat56@example.org','Венесуэла','п. Тюмень, ш. Вахитова, д. 1 к. 83, 559652','30:B5:FC:EC:81:3D','ОБЩЕЖИТИЯ'), + ('26 54 277088','Ферапонт','Игнатьев','1976-03-26 00:00:00','+78540360701','vladimirovaivanna@example.com','Азербайджан','ст. Медногорск, пр. Новостройка, д. 9, 523339','FF:50:5E:87:73:2B','ОБЩЕЖИТИЯ'), + ('77 40 249009','Вадим','Блинов','1987-10-02 00:00:00','+7 (176) 292-23-82','birjukovernest@example.net','Румыния','клх Яр-Сале, пер. Выгонный, д. 3, 147078','B3:CE:27:80:12:AE','ОБЩЕЖИТИЯ'), + ('1032 499881','Павел','Васильев','1957-03-24 00:00:00','8 268 284 1993','stojan57@example.org','Молдавия','д. Певек, пр. Суворова, д. 182 стр. 4, 202080','1E:F6:4B:E6:7D:A2','ПОЛНЫЙ'), + ('13 36 978371','Измаил','Смирнов','1963-10-30 00:00:00','+73656682076','maksimovsidor@example.org','Сьерра-Леоне','ст. Сорочинск, ул. Пархоменко, д. 65, 312779','C1:20:AE:29:7D:9F','ПОЛНЫЙ'); +INSERT INTO public.physicals (passport_no,"name",surname,birthday,phone,mail,citizenship,address,access_card,access_level) VALUES + ('1767 205274','Ираклий','Фролов','2002-08-05 00:00:00','+7 266 141 6514','nazar2009@example.net','Грузия','п. Качканар, алл. Л.Толстого, д. 45 стр. 36, 152217','BE:AA:3B:35:EF:44','ПОЛНЫЙ'), + ('17 61 692403','Кузьма','Суворов','1947-06-01 00:00:00','8 (978) 884-07-75','nikifor80@example.com','Папуа','г. Воткинск, пер. Л.Толстого, д. 156 к. 765, 721799','EB:07:03:A0:40:EE','ПОЛНЫЙ'), + ('15 35 296111','Ипполит','Артемьев','1952-03-03 00:00:00','+7 (833) 569-1942','blohinfilaret@example.org','Оман','ст. Кингисепп, наб. Большая, д. 602 к. 548, 795333','1B:61:A9:82:B5:B7','ПОЛНЫЙ'), + ('7658 018168','Остромир','Зиновьева','1954-05-10 00:00:00','8 (070) 104-88-80','filippovvelimir@example.org','Латвия','к. Суздаль, ш. Кольцова, д. 3, 631919','BB:11:A6:0C:9E:47','КАМПУС'), + ('4792 795660','Милен','Куликова','1980-04-02 00:00:00','8 (376) 657-9744','vatslavlarionov@example.com','Вануату','п. Усть-Илимск, пер. Ермака, д. 49, 830805','6D:42:12:CA:9C:09','ПОЛНЫЙ'), + ('93 60 860024','Глеб','Родионова','1997-01-10 00:00:00','8 394 016 7280','vmjasnikov@example.com','Республика Конго','клх Красновишерск, ш. 40 лет Победы, д. 97, 728645','DE:AE:55:75:85:2D','ПОЛНЫЙ'), + ('9770 672417','Харитон','Куликов','1960-03-14 00:00:00','8 (513) 029-5179','kalininkondrat@example.com','Чад','к. Черкесск, наб. Щорса, д. 5/4 стр. 444, 947970','29:AE:9A:C8:9E:B3','ОБЩЕЖИТИЯ'), + ('8467 963436','Бронислав','Бурова','1963-12-28 00:00:00','+7 107 026 98 27','mechislav1972@example.net','Грузия','к. Кировск (Мурм.), наб. Сахалинская, д. 2/6 стр. 31, 689179','EA:3C:2A:00:B2:FB','КАМПУС'), + ('3008 002070','Герасим','Воронов','2001-11-16 00:00:00','+7 759 110 25 26','apollinaridenisov@example.com','Республика Корея','ст. Губкинский, пер. Космодемьянской, д. 157 к. 88, 048887','2A:AB:A7:DC:39:A1','ОБЩЕЖИТИЯ'), + ('73 26 995561','Климент','Молчанова','1968-12-20 00:00:00','8 (284) 342-5937','amvrosiknjazev@example.com','Франция','д. Кизилюрт, алл. Сенная, д. 948 к. 733, 795148','BA:88:83:87:28:67','ОБЩЕЖИТИЯ'); +INSERT INTO public.physicals (passport_no,"name",surname,birthday,phone,mail,citizenship,address,access_card,access_level) VALUES + ('72 37 715850','Агап','Цветков','1997-01-10 00:00:00','+7 (955) 878-63-67','xfedotov@example.org','Гондурас','клх Горячий Ключ, бул. Пограничный, д. 29 к. 32, 683633','14:03:26:E3:17:B7','ОБЩЕЖИТИЯ'), + ('2526 907433','Феоктист','Горбунов','1974-07-08 00:00:00','8 (551) 480-66-23','ija_74@example.net','Украина','ст. Ахтубинск, пр. Гвардейский, д. 993 стр. 387, 867495','88:CF:BD:4F:15:92','ОБЩЕЖИТИЯ'), + ('24 79 757638','Демид','Шарапов','1973-05-01 00:00:00','8 651 207 25 11','lebedevarefi@example.org','Танзания','д. Охотск, ул. Абрикосовая, д. 1/2, 144969','6C:71:67:C8:BC:01','ОБЩЕЖИТИЯ'), + ('1483 625053','Эрнест','Шилова','1969-04-02 00:00:00','8 (250) 885-61-53','mark_1986@example.net','Доминиканская Республика','г. Кудымкар, пр. Ставропольский, д. 3 стр. 5/2, 257675','C9:A2:D0:7F:96:B2','ПОЛНЫЙ'), + ('03 19 692860','Ипат','Лобанов','1978-09-01 00:00:00','+7 918 816 1505','ruben51@example.com','Литва','ст. Арсеньев, ул. Союзная, д. 47 к. 2, 386913','61:AB:48:81:62:1C','ОБЩЕЖИТИЯ'), + ('45 00 420278','Пантелеймон','Захарова','2004-10-23 00:00:00','8 (829) 696-68-35','filaretemeljanov@example.org','Филиппины','ст. Сальск, алл. Крестьянская, д. 8 стр. 73, 508542','0A:C9:EB:78:E2:10','ОБЩЕЖИТИЯ'), + ('0601 526151','Елизавета','Филатова','1963-09-07 00:00:00','8 (328) 538-31-29','valerinesterov@example.net','Мальта','п. Ростов, ул. Автомобилистов, д. 4 к. 506, 346019','8F:FF:BE:48:A4:19','КАМПУС'), + ('94 42 402234','Роман','Стрелкова','1987-04-30 00:00:00','8 628 843 84 84','kuprijan1988@example.net','Колумбия','д. Углич, ш. Портовое, д. 52, 190775','3D:F7:E2:D6:20:FE','ПОЛНЫЙ'), + ('8471 027260','Эмилия','Комаров','1955-08-01 00:00:00','8 709 236 74 88','borisovaanna@example.net','Кипр','г. Химки, ш. Амурское, д. 96 к. 4, 925156','3B:E3:0A:0E:04:E6','ПОЛНЫЙ'), + ('7890 446510','Евдокия','Баранов','2004-09-12 00:00:00','8 423 356 5070','shilovisa@example.net','Мальдивы','с. Якутск, пер. Коллективный, д. 8 стр. 8, 945225','D2:2C:2F:A1:CA:C6','ОБЩЕЖИТИЯ'); +INSERT INTO public.physicals (passport_no,"name",surname,birthday,phone,mail,citizenship,address,access_card,access_level) VALUES + ('01 60 939833','Андроник','Шестаков','1961-05-27 00:00:00','+71771288757','msuvorova@example.org','Эсватини','с. Белгород, ш. Инженерное, д. 8/5 стр. 46, 430128','43:00:E1:03:4E:F1','ПОЛНЫЙ'), + ('8680 060911','Аверкий','Антонов','1981-07-30 00:00:00','8 (502) 592-1969','varfolome_26@example.org','Ямайка','г. Аша, бул. Кузнечный, д. 9, 672301','82:D8:47:75:C7:C8','КАМПУС'), + ('23 31 100907','Юрий','Брагин','1977-10-30 00:00:00','8 966 327 06 67','efimovaklavdija@example.com','Сербия','д. Троицк (Челяб.), пер. Почтовый, д. 3/3 стр. 5/3, 247434','80:4B:9D:DF:CA:D7','ОБЩЕЖИТИЯ'), + ('5538 454422','Мефодий','Федотов','1992-05-14 00:00:00','+7 572 144 5215','popovevstigne@example.org','Аргентина','д. Камень-на-Оби, пер. Ключевой, д. 480 к. 258, 616369','92:BD:3E:C3:49:92','ОБЩЕЖИТИЯ'), + ('1159 327403','Творимир','Баранова','1992-02-15 00:00:00','+71494035524','modestorlov@example.com','Латвия','д. Тверь, пр. Тургенева, д. 5 к. 1/7, 688913','37:51:1C:2B:92:7C','ПОЛНЫЙ'), + ('04 32 981899','Евстигней','Капустин','2005-07-28 00:00:00','8 330 262 6408','petrovjan@example.org','Япония','п. Черский, наб. Разина, д. 53 к. 443, 814263','3B:24:01:21:F2:6A','КАМПУС'), + ('0747 164868','Арсений','Ковалев','1969-04-12 00:00:00','8 (068) 022-0715','onufri_2016@example.com','Йемен','г. Объячево, пер. Ильича, д. 50, 094929','BF:92:1E:4D:AC:A8','ПОЛНЫЙ'), + ('85 67 511319','Соломон','Третьякова','1951-10-15 00:00:00','8 (799) 159-38-31','aleksandra_2005@example.org','Нигерия','с. Пушкинские Горы, пер. Калинина, д. 84 к. 716, 179249','78:90:B5:8E:A4:7F','ОБЩЕЖИТИЯ'), + ('52 62 746568','Леонтий','Наумов','1971-04-25 00:00:00','8 (832) 476-54-79','fchernova@example.net','Маврикий','ст. Тутончаны, ш. Краснознаменное, д. 4/7, 961207','C3:43:B5:A9:74:FD','КАМПУС'), + ('88 61 315890','Фортунат','Голубев','1992-11-02 00:00:00','8 448 288 9908','molchanovleonti@example.com','Коморы','д. Плес, пер. Боровой, д. 837, 289063','82:C3:43:56:AA:52','КАМПУС'); +INSERT INTO public.physicals (passport_no,"name",surname,birthday,phone,mail,citizenship,address,access_card,access_level) VALUES + ('89 16 020101','Бажен','Авдеева','1987-02-16 00:00:00','88613358473','erast1986@example.net','Армения','к. Таштагол, пр. Монтажников, д. 321 стр. 7/2, 773773','E8:77:A3:1C:C9:26','КАМПУС'), + ('88 40 345631','Милан','Турова','1968-01-22 00:00:00','+7 990 969 11 04','usamsonova@example.com','Вануату','д. Кош-Агач, ул. Бажова, д. 2/8 к. 679, 036760','03:94:F3:12:5F:C4','ОБЩЕЖИТИЯ'), + ('9679 528613','Потап','Константинов','1997-10-25 00:00:00','+70683539468','jsuvorova@example.org','Гвинея','с. Березники, пер. Серафимовича, д. 1 стр. 2/3, 480195','40:3A:84:B1:90:70','ОБЩЕЖИТИЯ'), + ('64 04 291581','Доброслав','Петров','1947-07-12 00:00:00','+7 786 465 61 24','lukija_2002@example.com','Гана','г. Нальчик, ш. Огородное, д. 7/4 к. 55, 696382','BD:A2:B8:75:27:F4','КАМПУС'), + ('36 91 902164','Василиса','Семенова','1998-01-12 00:00:00','8 (373) 179-18-61','filipp_73@example.org','Словакия','д. Абинск, алл. Р.Люксембург, д. 5/8 к. 64, 047352','F9:86:AC:2C:CC:82','КАМПУС'), + ('70 85 739487','Дмитрий','Белоусов','2005-09-10 00:00:00','+7 043 300 3192','elise39@example.com','Мадагаскар','г. Сосногорск, алл. Вишневая, д. 45, 923139','AD:32:FB:0E:71:DD','КАМПУС'), + ('0159 882913','Вышеслав','Дьячков','1956-01-22 00:00:00','+7 (186) 270-49-51','knjazevaregina@example.org','Сент-Люсия','п. Мезень, пер. Войкова, д. 30, 164687','C9:75:A4:81:3C:C9','ПОЛНЫЙ'), + ('8506 008038','Сила','Мухин','1973-05-19 00:00:00','84664715260','suvorovnikodim@example.org','Аргентина','п. Черусти, пр. Станционный, д. 685 к. 241, 003432','9D:DE:C5:24:61:DD','ПОЛНЫЙ'), + ('18 33 741601','Ярополк','Борисова','1982-05-12 00:00:00','+74350018396','antip_2005@example.net','Австрия','с. Астрахань, бул. Ильича, д. 16 стр. 7/3, 628188','9B:C7:C2:8B:56:B2','ОБЩЕЖИТИЯ'), + ('9904 233424','Захар','Терентьева','1984-11-14 00:00:00','81149828368','pimen2021@example.org','Зимбабве','г. Соболево, ш. Тульское, д. 270 к. 523, 992013','95:56:79:A2:CD:13','ОБЩЕЖИТИЯ'); +INSERT INTO public.physicals (passport_no,"name",surname,birthday,phone,mail,citizenship,address,access_card,access_level) VALUES + ('64 16 671071','Стоян','Алексеева','1946-12-17 00:00:00','8 (223) 716-3637','qmaslov@example.com','Гамбия','к. Сунтар, пр. Репина, д. 5/2, 720773','81:7E:03:84:4D:CE','ПОЛНЫЙ'), + ('2807 291263','Модест','Молчанова','1996-04-12 00:00:00','8 957 559 8660','vladimir_93@example.com','Ямайка','к. Забайкальск, пер. Поперечный, д. 9, 923449','F0:17:2B:43:B4:BD','ПОЛНЫЙ'), + ('53 04 271612','Тамара','Кабанов','1998-09-19 00:00:00','+7 408 493 4257','nikolasazonov@example.net','Швеция','клх Мытищи, алл. Прудовая, д. 83 стр. 4/2, 227375','D4:96:79:AA:0F:D6','ОБЩЕЖИТИЯ'), + ('5806 864894','Василий','Беляев','1972-02-05 00:00:00','+7 291 101 96 12','galaktion2019@example.net','Грузия','с. Сунтар, пр. Курчатова, д. 31, 863917','E2:06:E4:1A:C7:23','КАМПУС'), + ('00 26 985876','Павел','Лукин','1981-11-08 00:00:00','8 (934) 273-57-65','radislav97@example.com','Иран','ст. Каменск-Шахтинский, ш. Театральное, д. 5 к. 81, 463513','88:20:BB:3E:C6:50','ОБЩЕЖИТИЯ'), + ('2195 879864','Нонна','Родионова','2005-08-23 00:00:00','8 702 836 8544','maksimiljan1973@example.com','Словакия','к. Усть-Баргузин, алл. Пирогова, д. 357 стр. 13, 614951','7D:CF:54:EC:93:73','ПОЛНЫЙ'), + ('1459 194290','Амос','Кулагин','1962-04-07 00:00:00','+7 836 115 6888','ljubov1973@example.net','Эритрея','к. Барнаул, наб. Прудовая, д. 25, 771906','88:32:DD:D7:E4:D8','ПОЛНЫЙ'), + ('9809 969078','Будимир','Маркова','1983-04-25 00:00:00','81049682939','gordeevavasilisa@example.com','Казахстан','д. Шахты, ул. Ленская, д. 8/2, 050240','84:6E:AE:CA:73:76','ОБЩЕЖИТИЯ'), + ('2761 119404','Зинаида','Савельев','1984-03-12 00:00:00','8 (534) 868-9855','guljaevaljudmila@example.com','Мали','с. Яшалта, пер. Ленинградский, д. 5/1, 117433','6D:7B:02:5D:82:A6','КАМПУС'), + ('8713 393896','Мариан','Королев','1981-11-28 00:00:00','8 (143) 381-4257','mir_1978@example.com','Колумбия','д. Тольятти, алл. Азовская, д. 7/2, 402849','18:54:F1:61:A7:29','КАМПУС'); +INSERT INTO public.physicals (passport_no,"name",surname,birthday,phone,mail,citizenship,address,access_card,access_level) VALUES + ('55 68 798377','Валерий','Владимиров','1958-02-26 00:00:00','8 752 381 3335','evdokim79@example.net','Камбоджа','к. Борзя, пр. Просвещения, д. 946 стр. 44, 883700','7F:F2:F7:76:8D:B2','ПОЛНЫЙ'), + ('0531 532142','Мина','Мартынова','1995-02-01 00:00:00','+7 911 549 67 99','borisovjuvenali@example.net','Зимбабве','клх Челябинск, ул. Крайняя, д. 6/2, 058265','D6:D0:10:68:03:C1','ОБЩЕЖИТИЯ'), + ('8220 975187','Лаврентий','Коновалов','1997-04-29 00:00:00','+7 (225) 492-45-10','beljakovfilimon@example.net','Швейцария','клх Чайковский, ул. Парковая, д. 52 стр. 62, 440384','EF:B1:60:59:26:84','КАМПУС'), + ('16 13 395483','Феоктист','Константинова','1962-04-24 00:00:00','+7 688 218 92 86','komarovgleb@example.org','Иран','г. Асбест, наб. Розы Люксембург, д. 35 к. 8/5, 856179','0F:89:F6:D2:25:9B','ОБЩЕЖИТИЯ'), + ('5306 593385','Артемий','Поляков','1963-05-30 00:00:00','8 812 449 71 39','igor_06@example.org','Аргентина','к. Ахтубинск, бул. Высокий, д. 306 к. 5, 274286','C2:E2:1C:F2:BD:9D','ОБЩЕЖИТИЯ'), + ('75 11 396286','Юлиан','Корнилов','1969-09-01 00:00:00','8 (610) 924-0618','emil2009@example.com','Эсватини','с. Макаров, бул. Серова, д. 25 к. 4/2, 258656','99:FD:8D:44:9D:95','КАМПУС'), + ('7622 454390','Аверкий','Калинин','1989-02-26 00:00:00','+7 220 290 6663','apollinari1984@example.com','Кипр','к. Сасово, ш. Городское, д. 1 к. 5, 155172','76:08:C6:22:A3:42','КАМПУС'), + ('56 90 329982','Гурий','Игнатова','1995-11-03 00:00:00','8 (447) 104-3898','savelifokin@example.com','Эстония','г. Усолье Сибирское, пр. Жукова, д. 5, 983440','BC:9A:C3:80:26:A0','ОБЩЕЖИТИЯ'), + ('4938 783040','Галактион','Голубев','1967-07-27 00:00:00','+7 710 801 80 24','alina1981@example.net','Самоа','ст. Рославль, пер. Лазурный, д. 953 стр. 12, 694292','79:F0:33:79:3B:C6','КАМПУС'), + ('78 50 275927','Михаил','Кузьмина','1983-12-19 00:00:00','8 727 275 73 40','vladlen2014@example.org','Азербайджан','г. Бугульма, пр. Одесский, д. 863, 840074','F8:33:A6:1A:AF:33','ПОЛНЫЙ'); +INSERT INTO public.physicals (passport_no,"name",surname,birthday,phone,mail,citizenship,address,access_card,access_level) VALUES + ('90 33 837617','Нина','Новиков','1968-08-31 00:00:00','8 (660) 264-67-86','juvenalikotov@example.com','Ливан','клх Дубна, ул. Гвардейская, д. 472, 402127','04:89:E1:A2:54:D6','ОБЩЕЖИТИЯ'), + ('9710 721027','Аверкий','Матвеева','1945-02-23 00:00:00','+7 596 979 86 15','iosifkostin@example.org','Непал','клх Мирный, наб. Подгорная, д. 5 стр. 3/2, 447477','73:83:75:27:43:B3','КАМПУС'), + ('5880 740421','Ульяна','Колесникова','1980-12-29 00:00:00','+7 800 071 28 11','prokofibikov@example.com','Гондурас','п. Алагир, пер. Интернациональный, д. 61, 744211','BF:2E:CC:CB:A3:98','ОБЩЕЖИТИЯ'), + ('16 59 609711','Милован','Бирюкова','1979-10-27 00:00:00','+7 118 213 9890','hbragin@example.net','Сейшельские Острова','с. Азов (Рост.), бул. Красноярский, д. 314 к. 6, 468992','4C:55:A9:F9:36:7E','ОБЩЕЖИТИЯ'), + ('15 22 773802','Наум','Родионова','2003-05-27 00:00:00','+7 192 383 48 62','judinaelizaveta@example.org','Таджикистан','к. Адыгейск, ш. Космонавтов, д. 6, 223742','55:19:4F:E5:32:46','КАМПУС'), + ('0712 975654','Лукия','Лыткин','1979-07-15 00:00:00','8 (182) 708-36-73','rvladimirov@example.org','Бенин','клх Игнашино, наб. Северная, д. 4/2, 281316','23:C6:66:8C:59:57','КАМПУС'), + ('5411 513883','Харлампий','Пестова','1993-05-21 00:00:00','+77028787356','karp_39@example.net','Доминиканская Республика','г. Тихвин, пр. Путевой, д. 255 к. 5/1, 238429','9F:1D:DC:A4:22:BC','КАМПУС'), + ('1865 485550','Николай','Назарова','1989-08-05 00:00:00','+7 (702) 427-56-01','omaksimov@example.net','Сальвадор','клх Александровск, алл. Микрорайон, д. 26 к. 9/3, 996859','DF:06:F8:54:3F:1C','ПОЛНЫЙ'), + ('19 94 971594','Герман','Игнатьев','1956-09-15 00:00:00','+74755328030','luka_1980@example.org','Тувалу','клх Ачинск, бул. Мусы Джалиля, д. 9, 078098','FF:8C:75:13:DA:CA','ПОЛНЫЙ'), + ('56 91 395840','Зиновий','Шашкова','2002-03-18 00:00:00','8 829 044 2512','golubevnestor@example.net','Швеция','с. Ржев, алл. Береговая, д. 83, 879387','EE:0D:F6:A5:F3:C7','ОБЩЕЖИТИЯ'); +INSERT INTO public.physicals (passport_no,"name",surname,birthday,phone,mail,citizenship,address,access_card,access_level) VALUES + ('07 75 264446','Дарья','Брагина','1973-04-28 00:00:00','+7 177 931 3694','beljaevaalina@example.net','Киргизия','с. Глазов, пр. Победы, д. 8 к. 8/3, 417975','24:D5:6A:95:0A:70','ОБЩЕЖИТИЯ'), + ('02 99 571844','Гедеон','Дроздова','1951-05-14 00:00:00','+7 449 117 8377','panfil2010@example.com','Малави','г. Кош-Агач, ул. Красная, д. 2 к. 7/4, 474895','70:41:E5:7C:69:7B','КАМПУС'), + ('2943 975817','Радован','Тихонов','1993-05-31 00:00:00','8 (239) 113-44-25','lukija1984@example.net','Греция','ст. Палана, ш. Базарное, д. 409, 891515','B5:DD:2D:7E:18:61','ПОЛНЫЙ'), + ('9985 073481','Каллистрат','Ситников','1966-03-22 00:00:00','+7 (237) 983-16-14','upetrova@example.org','Дания','д. Мезень, ш. 9 мая, д. 4/1, 018076','6B:88:81:46:E0:77','ПОЛНЫЙ'), + ('4045 341331','Евлампий','Лукина','2000-06-03 00:00:00','8 261 791 6435','innokenti1975@example.org','Мексика','г. Алексин, ш. Крестьянское, д. 8 к. 772, 100375','98:9E:95:3B:2C:4B','КАМПУС'), + ('1261 343531','Август','Мясникова','1986-07-09 00:00:00','+7 029 760 8969','evgenija_1971@example.org','Эквадор','г. Киров (Вятка), ш. Широкое, д. 394 к. 4/3, 406395','E6:D6:A7:64:7D:2E','КАМПУС'), + ('52 14 617657','Бажен','Коновалова','1982-03-03 00:00:00','8 799 373 0857','antonina79@example.com','Япония','клх Ухта, пер. Волгоградский, д. 610, 337761','98:5A:7B:E8:65:F0','ПОЛНЫЙ'), + ('18 99 634606','Анисим','Суворова','1958-01-26 00:00:00','+79322361698','ershovaalevtina@example.com','Сейшельские Острова','к. Томари, алл. Высоковольтная, д. 7/9 стр. 4, 122066','6A:C8:01:2E:24:5C','ПОЛНЫЙ'), + ('35 92 681242','Михей','Киселева','1981-07-20 00:00:00','+7 942 841 05 05','subbotinalidija@example.com','Гондурас','с. Ярославль, ул. Правды, д. 6/6 стр. 36, 117199','63:19:E4:C0:67:82','КАМПУС'), + ('2569 140494','Остромир','Михеева','1993-02-20 00:00:00','+7 (790) 148-50-48','avtonomsafonov@example.org','Либерия','д. Белый Яр (Томск.), наб. Мира, д. 42 к. 54, 751162','3B:03:D7:D8:09:64','ПОЛНЫЙ'); +INSERT INTO public.physicals (passport_no,"name",surname,birthday,phone,mail,citizenship,address,access_card,access_level) VALUES + ('6421 921389','Христофор','Логинова','1945-11-07 00:00:00','+7 259 606 2011','avksenti_05@example.org','Тринидад и Тобаго','ст. Новороссийск, наб. Папанина, д. 741 стр. 6/5, 234736','03:38:F6:A8:7E:3E','КАМПУС'), + ('55 14 367385','Михей','Морозов','1962-12-07 00:00:00','+7 244 102 57 80','kulakovkir@example.com','Нигерия','п. Ижевск, пер. Глинки, д. 8, 067026','3A:F0:7C:2E:50:E0','ОБЩЕЖИТИЯ'), + ('38 68 423687','Игнатий','Фомина','2006-06-05 00:00:00','8 014 506 61 16','david1977@example.org','Алжир','д. Усть-Джегута, ш. Гастелло, д. 1 стр. 677, 010463','88:5F:26:C9:1B:15','ОБЩЕЖИТИЯ'), + ('70 99 230495','Зоя','Кудрявцев','1974-12-26 00:00:00','8 340 360 2131','gavrila12@example.net','Оман','г. Усть-Кут, пер. Радищева, д. 9 к. 955, 454308','5C:89:D0:6F:B7:17','КАМПУС'), + ('01 24 445693','Вероника','Веселова','2004-09-24 00:00:00','8 121 074 6968','moiseevpankrati@example.org','Испания','п. Сортавала, пер. Жукова, д. 49 к. 745, 617249','99:5A:F2:31:E4:48','ОБЩЕЖИТИЯ'), + ('21 49 792684','Владислав','Родионова','1977-06-20 00:00:00','87992099299','oksana_1989@example.net','Белоруссия','д. Кострома, бул. Кирова, д. 937, 246571','4C:10:AB:0C:8B:13','ПОЛНЫЙ'), + ('9284 219435','Лукия','Селезнева','1945-10-08 00:00:00','8 (445) 115-69-29','olimpi1992@example.org','Сан-Томе и Принсипи','д. Горячий Ключ, ул. 8 Марта, д. 9 к. 12, 217046','FB:E4:08:1A:B2:E7','КАМПУС'), + ('1865 186578','Фока','Игнатьев','2002-05-07 00:00:00','+7 (207) 651-43-63','vishnjakovaakulina@example.org','Мексика','д. Сухиничи, пер. Крылова, д. 60 стр. 51, 071085','87:FC:84:D7:62:E9','ОБЩЕЖИТИЯ'), + ('13 10 686341','Зосима','Анисимова','1982-12-22 00:00:00','8 (566) 901-96-59','sergeevstepan@example.net','Португалия','с. Балтийск, пер. Серафимовича, д. 60, 413643','83:59:2C:1B:F7:3D','КАМПУС'), + ('13 28 107942','Борислав','Борисов','1996-05-24 00:00:00','+7 (240) 623-9946','shchukinasinklitikija@example.com','Аргентина','с. Эльтон, алл. Просторная, д. 83 к. 20, 251817','D5:15:B1:C2:BB:56','ОБЩЕЖИТИЯ'); +INSERT INTO public.physicals (passport_no,"name",surname,birthday,phone,mail,citizenship,address,access_card,access_level) VALUES + ('8122 960441','Осип','Захарова','1957-08-03 00:00:00','+7 (490) 183-34-05','saveli_50@example.org','Тувалу','с. Кежма, наб. Волгоградская, д. 80 к. 3/7, 825496','5A:FF:67:00:32:B2','ПОЛНЫЙ'), + ('8525 241311','Афанасий','Беспалова','1972-11-23 00:00:00','+79159309168','morozovafevronija@example.net','Тунис','г. Воркута, наб. Мелиоративная, д. 1 стр. 4, 075373','D6:19:AD:2B:9C:84','ПОЛНЫЙ'), + ('83 55 051296','Лаврентий','Титова','1962-08-28 00:00:00','8 (737) 263-1836','birjukovalukija@example.net','Буркина-Фасо','п. Нижневартовск, пр. Чапаева, д. 78, 682915','F8:4C:62:A0:D3:71','КАМПУС'), + ('9615 056905','Ипатий','Гуляев','1980-04-15 00:00:00','+7 (386) 330-26-88','antoninnikonov@example.org','Джибути','г. Нарткала, пер. Социалистический, д. 94 стр. 313, 197119','17:6F:CC:67:17:AD','ОБЩЕЖИТИЯ'), + ('9440 786435','Марина','Блинова','2006-10-20 00:00:00','+7 342 660 3116','pavel_83@example.com','Латвия','с. Токсово, пер. Звездный, д. 794 к. 2/1, 092081','61:57:D4:1A:3A:A9','ПОЛНЫЙ'), + ('67 91 733727','Нина','Игнатова','1980-11-01 00:00:00','8 (050) 057-6642','tvorimir1973@example.net','Италия','г. Белоярский, бул. Киевский, д. 82 к. 1, 398025','E2:88:6F:41:F3:16','КАМПУС'), + ('82 24 535742','Владилен','Нестеров','1945-07-15 00:00:00','+7 (175) 379-78-79','pdenisova@example.com','Джибути','клх Токма, пр. Камский, д. 760, 447977','2D:AF:B0:16:48:7F','КАМПУС'), + ('41 99 760015','Зиновий','Ершов','1989-11-17 00:00:00','8 585 898 73 23','tgolubev@example.org','Саудовская Аравия','с. Тверь, ул. Прибрежная, д. 5/9 к. 4/8, 015536','2B:94:30:57:52:8B','КАМПУС'), + ('20 28 857767','Ипат','Ильин','1979-04-30 00:00:00','8 (829) 786-80-94','georgi_02@example.net','Гайана','д. Тура, пр. Красных Партизан, д. 8/6 к. 2, 888998','FA:AE:B0:37:2B:33','ПОЛНЫЙ'), + ('84 71 589791','Святополк','Лазарева','1959-03-30 00:00:00','88196252379','oktjabrina55@example.net','Багамские Острова','клх Смирных, алл. Урицкого, д. 78 стр. 6/8, 489061','9A:DE:4C:6A:B9:2E','ОБЩЕЖИТИЯ'); +INSERT INTO public.physicals (passport_no,"name",surname,birthday,phone,mail,citizenship,address,access_card,access_level) VALUES + ('6534 689404','Трифон','Шубина','1987-09-08 00:00:00','8 370 491 51 35','jakov_30@example.net','Монако','г. Моздок, бул. Плеханова, д. 2/9, 865861','F0:43:A6:31:48:62','ОБЩЕЖИТИЯ'), + ('55 52 044226','Клавдия','Белозерова','2003-05-26 00:00:00','8 (850) 820-5762','feofan_80@example.com','Никарагуа','д. Карабудахкент, пер. Новоселов, д. 855 к. 8, 859388','76:6A:5A:A4:CA:AC','ПОЛНЫЙ'), + ('93 88 085011','Филарет','Осипов','1977-09-13 00:00:00','8 888 932 5712','cmiheeva@example.net','Чехия','п. Северо-Курильск, ул. Хуторская, д. 507, 168306','2B:FD:6C:83:0C:91','КАМПУС'), + ('8796 345860','Лонгин','Лыткина','1982-08-05 00:00:00','+7 (651) 063-2813','suvorovevstafi@example.com','Ямайка','д. Приозерск, пр. Кутузова, д. 7 к. 66, 210640','C3:B7:92:51:09:4B','ОБЩЕЖИТИЯ'), + ('1044 943284','Нестор','Суворова','1997-02-24 00:00:00','+7 219 851 8030','sergeevbudimir@example.com','Суринам','клх Дзержинск, алл. Стадионная, д. 9 стр. 66, 793965','14:64:98:12:F6:C8','ОБЩЕЖИТИЯ'), + ('5939 316202','Ефим','Силина','1964-07-31 00:00:00','+7 (271) 719-38-79','nosovevgraf@example.net','Гватемала','с. Шумиха, пер. Ильича, д. 99, 015816','F8:A4:B0:F2:11:9D','ПОЛНЫЙ'), + ('19 86 057462','Ананий','Кузнецов','1965-08-16 00:00:00','8 236 692 48 63','narkisabramov@example.net','Йемен','с. Поронайск, пер. Брянский, д. 7 к. 39, 155935','2C:47:16:4B:91:F6','ОБЩЕЖИТИЯ'), + ('0311 211995','Арсений','Волков','2001-05-28 00:00:00','+7 (460) 114-5131','lidija47@example.org','Тувалу','ст. Южно-Сахалинск, ш. Кавказское, д. 1 к. 62, 844260','F7:6E:FB:B6:17:19','ПОЛНЫЙ'), + ('46 55 985853','Ратибор','Соколов','1967-02-24 00:00:00','+7 474 089 14 88','mark86@example.com','Кот-д’Ивуар','п. Кропоткин (Краснод.), ул. Троицкая, д. 6/5, 329464','57:FF:51:9E:A2:5F','КАМПУС'), + ('0637 356303','Арсений','Тарасов','1992-06-21 00:00:00','+7 551 632 5705','osipovandron@example.com','Ирландия','ст. Талдом, пр. Ореховый, д. 590 к. 809, 044987','5F:62:5A:F6:27:26','КАМПУС'); +INSERT INTO public.physicals (passport_no,"name",surname,birthday,phone,mail,citizenship,address,access_card,access_level) VALUES + ('02 77 110497','Ефим','Мартынова','1982-11-18 00:00:00','8 (858) 738-20-09','pantelemon1977@example.net','Никарагуа','с. Лодейное Поле, пер. Петровский, д. 7/6 стр. 69, 593957','70:80:A1:05:A4:05','КАМПУС'), + ('12 74 277670','Станислав','Егорова','1945-03-17 00:00:00','8 539 242 6387','cmartinova@example.net','Науру','г. Теберда, бул. Производственный, д. 301 к. 5, 116126','D1:45:D9:35:8F:9D','ОБЩЕЖИТИЯ'), + ('73 39 853731','Арсений','Красильникова','1996-06-30 00:00:00','+7 751 799 02 77','veselovanadezhda@example.org','Сенегал','ст. Кондопога, бул. Свердлова, д. 4 стр. 8/1, 909372','18:EC:D7:85:BD:7E','ПОЛНЫЙ'), + ('2840 128377','Тихон','Авдеева','1984-11-11 00:00:00','8 724 980 6774','lapinevdokim@example.com','Греция','п. Биробиджан, наб. Техническая, д. 393 стр. 5/9, 325964','D2:1E:7B:95:E8:74','ОБЩЕЖИТИЯ'), + ('9424 455530','Трифон','Федотов','2004-11-14 00:00:00','8 (195) 001-2789','aleksandra26@example.net','Шри-Ланка','д. Быково (метеост.), бул. Боровой, д. 2, 802063','37:F7:C5:77:C1:BB','ПОЛНЫЙ'), + ('6645 249719','Корнил','Ковалева','1957-02-18 00:00:00','+7 249 664 63 96','pantelemon_1984@example.org','Коморы','п. Северобайкальск, пр. Шолохова, д. 4/1, 034797','5D:1B:9C:8C:2C:6F','ОБЩЕЖИТИЯ'), + ('47 47 425075','Вадим','Анисимова','1995-12-25 00:00:00','+7 (490) 880-94-19','poljakovaelena@example.net','Кабо-Верде','ст. Троицк (Моск.), ш. Окружное, д. 9 к. 3/3, 649175','D1:9A:F6:6A:26:2A','КАМПУС'), + ('5685 462175','Дарья','Веселов','1945-11-03 00:00:00','+7 192 224 5635','solomon_2012@example.net','Мексика','г. Оймякон, алл. Курганная, д. 59 стр. 2, 076432','07:3A:67:A2:0B:EA','ПОЛНЫЙ'), + ('3909 242342','Егор','Никифорова','1960-08-24 00:00:00','+7 (251) 898-18-86','zosimaisakov@example.com','Маршалловы Острова','к. Юрюзань, пер. Пожарского, д. 6 к. 51, 103396','17:88:0A:26:A4:AB','ПОЛНЫЙ'), + ('45 29 173284','Антип','Данилов','1967-08-06 00:00:00','8 692 532 14 83','kazakovaoktjabrina@example.org','Ирландия','г. Миасс, пер. Большой, д. 797 стр. 9/6, 656440','F2:A5:1C:5B:35:B4','ПОЛНЫЙ'); +INSERT INTO public.physicals (passport_no,"name",surname,birthday,phone,mail,citizenship,address,access_card,access_level) VALUES + ('2257 674762','Аскольд','Орехова','1988-03-29 00:00:00','+7 (257) 617-9125','natan_2006@example.org','Филиппины','к. Переславль-Залесский, ш. Киевское, д. 7/9, 000577','FC:A1:2B:AC:E8:B8','ОБЩЕЖИТИЯ'), + ('7524 941314','Радован','Авдеев','1996-05-08 00:00:00','+7 027 017 1394','valerjangorbunov@example.org','Барбадос','ст. Бийск, наб. Маркса Карла, д. 2 стр. 31, 111685','ED:8F:CD:68:A0:60','ПОЛНЫЙ'), + ('0038 000768','Агап','Кошелева','1968-06-16 00:00:00','8 (098) 071-48-34','oalekseev@example.net','Эритрея','д. Нижнекамск, пр. Флотский, д. 3 стр. 2, 336985','E4:A7:44:B4:F7:88','КАМПУС'), + ('5448 344899','Каллистрат','Мишин','1957-03-05 00:00:00','+72078834130','fedot_1986@example.org','Великобритания','п. Канск, ш. Ушакова, д. 5/9 к. 9/5, 495886','30:98:90:42:F3:BD','КАМПУС'), + ('7140 657542','Автоном','Сафонов','2003-11-12 00:00:00','8 369 456 40 43','stojan_1993@example.com','Кабо-Верде','клх Уфа, пр. Тамбовский, д. 121 стр. 59, 705051','40:46:43:BA:D5:AD','ОБЩЕЖИТИЯ'), + ('59 54 753841','Филарет','Фомичев','1961-02-16 00:00:00','8 (265) 342-40-83','zhdanovaagata@example.net','Тринидад и Тобаго','клх Саратов, пр. Алтайский, д. 415 к. 906, 946854','92:32:2F:24:69:7A','КАМПУС'), + ('61 35 862573','Леон','Титов','1952-09-13 00:00:00','+7 648 096 1891','medvedevjakov@example.net','Греция','к. Чермоз, наб. Спортивная, д. 5, 575593','86:13:AC:98:F5:D7','ОБЩЕЖИТИЯ'), + ('37 79 934242','Климент','Кулаков','1990-10-29 00:00:00','+7 (116) 574-9203','galkinaverki@example.com','Замбия','г. Сарапул, наб. Тенистая, д. 897 к. 8, 077755','35:63:15:58:13:4E','ОБЩЕЖИТИЯ'), + ('2739 169806','Терентий','Тихонов','1996-08-12 00:00:00','+7 993 562 5337','pelageja_1982@example.org','Бельгия','г. Тутончаны, алл. Красногвардейская, д. 6/8, 351365','3D:5F:C0:AD:DB:D1','КАМПУС'), + ('1067 399605','Конон','Зиновьев','1961-12-17 00:00:00','+7 164 615 97 22','hjakovleva@example.com','Швейцария','клх Плесецк, пер. Культуры, д. 2, 229565','7F:4A:4F:1A:FB:8B','ОБЩЕЖИТИЯ'); +INSERT INTO public.physicals (passport_no,"name",surname,birthday,phone,mail,citizenship,address,access_card,access_level) VALUES + ('3351 401650','Тит','Стрелков','1958-09-29 00:00:00','+7 838 764 48 86','guljaevgerman@example.com','Нигерия','клх Черняховск, ул. Тополиная, д. 68 стр. 4/2, 260849','F9:31:97:CF:DE:21','ПОЛНЫЙ'), + ('2573 662426','Виктор','Жукова','1994-06-12 00:00:00','+7 168 629 0686','anikeknjazev@example.org','Китай','г. Диксон, пр. Братский, д. 642 к. 5, 181550','AF:13:49:D3:1E:51','ОБЩЕЖИТИЯ'), + ('5595 663075','Станимир','Лобанова','1998-05-16 00:00:00','+7 (349) 622-4650','savvati_1985@example.org','Сент-Китс и Невис','г. Железногорск(Курск.), ул. 60 лет Октября, д. 6/3 стр. 511, 190336','22:D9:C2:54:36:CD','ПОЛНЫЙ'), + ('79 28 589726','Кузьма','Зуева','1995-10-09 00:00:00','+70844590415','venedikt_2001@example.com','Кабо-Верде','ст. Кизел, наб. Тургенева, д. 5, 720114','03:58:21:FB:C2:E1','ОБЩЕЖИТИЯ'), + ('8889 528101','Игнатий','Шестакова','1955-10-10 00:00:00','8 (089) 363-4184','evse_85@example.net','Литва','д. Туапсе, бул. Вишневый, д. 82, 739006','F3:4B:B6:99:16:F5','ПОЛНЫЙ'), + ('7065 013387','Евдокия','Ларионов','1971-11-03 00:00:00','8 (323) 044-64-68','vbeljakov@example.org','Лихтенштейн','п. Красноярск, ш. Ореховое, д. 2 стр. 845, 550086','A0:79:55:43:06:76','КАМПУС'), + ('7198 532520','Павел','Комиссарова','1946-09-19 00:00:00','8 474 486 94 54','alina_40@example.net','Гвинея-Бисау','к. Качканар, ул. Клары Цеткин, д. 31 стр. 5, 965969','DD:57:8D:25:4C:44','КАМПУС'), + ('60 46 277412','Евфросиния','Маслов','1996-12-15 00:00:00','89595997566','jaropolk90@example.com','Мексика','к. Ставрополь, ул. Октября, д. 8/7 к. 5, 911958','5F:7E:04:6E:B2:AC','КАМПУС'), + ('58 93 894235','Аверкий','Алексеев','1989-08-21 00:00:00','8 (815) 606-5470','aprohorova@example.net','Маршалловы Острова','ст. Кош-Агач, бул. Базарный, д. 5/5 к. 50, 342336','E4:DB:76:09:29:05','ОБЩЕЖИТИЯ'), + ('0563 310219','Афанасий','Потапова','1981-12-14 00:00:00','8 063 872 72 41','fedot20@example.org','Мексика','д. Брянск, алл. Гастелло, д. 420, 722854','C6:91:3E:76:2E:9A','ОБЩЕЖИТИЯ'); +INSERT INTO public.physicals (passport_no,"name",surname,birthday,phone,mail,citizenship,address,access_card,access_level) VALUES + ('81 35 007814','Руслан','Миронов','1954-07-15 00:00:00','8 (613) 114-81-02','mechislav_2012@example.net','Йемен','ст. Пинега, ул. Ильича, д. 648 к. 92, 604320','CD:BD:4E:A7:B9:E0','ОБЩЕЖИТИЯ'), + ('5088 795313','Максим','Медведева','1959-12-29 00:00:00','8 (022) 053-45-69','efim_2013@example.com','Бельгия','ст. Дербент, пер. Лунный, д. 9 к. 3, 003467','66:03:21:0E:1C:08','ПОЛНЫЙ'), + ('4134 569686','Елизар','Бобылев','1961-12-01 00:00:00','+7 858 198 1261','birjukovefim@example.org','Филиппины','ст. Кизилюрт, пер. Радужный, д. 39 стр. 34, 830255','01:0B:0D:89:A4:E2','ОБЩЕЖИТИЯ'), + ('05 31 223774','Анатолий','Трофимов','1971-03-13 00:00:00','+7 (100) 189-62-03','vnesterov@example.com','Чехия','с. Усинск, наб. Кирова, д. 845 к. 2/3, 467248','ED:62:20:52:AB:80','ОБЩЕЖИТИЯ'), + ('5932 720119','Прокофий','Сысоев','1992-04-09 00:00:00','+7 947 799 07 20','gorbachevaolimpiada@example.net','Кувейт','п. Мокшан, алл. Марта 8, д. 7/8 к. 4/8, 796785','DB:A9:D8:A2:D7:B3','ОБЩЕЖИТИЯ'), + ('31 83 523042','Филимон','Носова','1957-11-01 00:00:00','8 (572) 693-7156','kabanovsavva@example.com','Великобритания','п. Середниково, пер. Николаева, д. 44, 707449','18:98:2C:B9:64:90','КАМПУС'), + ('7003 225771','Вышеслав','Гурьева','1982-11-15 00:00:00','+79581822089','nmarkov@example.com','Египет','ст. Верхоянск, бул. Стадионный, д. 79 стр. 2, 915922','7F:5D:40:23:15:FE','ОБЩЕЖИТИЯ'), + ('5260 414487','Маргарита','Колесникова','1996-05-28 00:00:00','+7 320 868 72 57','ermilfokin@example.net','Эстония','д. Ясный (Оренб.), пр. Февральский, д. 1 к. 1/9, 283350','AD:C7:9D:3C:7E:6B','ОБЩЕЖИТИЯ'), + ('38 93 084766','Бажен','Блохин','1966-10-22 00:00:00','+7 186 141 6561','vmishin@example.com','Замбия','к. Мценск, пр. Кленовый, д. 3 к. 4/6, 861721','C7:44:79:D5:81:CD','КАМПУС'), + ('36 20 270109','Адам','Фомин','1966-11-02 00:00:00','8 339 563 84 73','denis09@example.org','Гвинея','к. Октябрьское (Хант.), ш. Раздольное, д. 5, 199603','E8:B8:C0:63:0E:C5','КАМПУС'); +INSERT INTO public.physicals (passport_no,"name",surname,birthday,phone,mail,citizenship,address,access_card,access_level) VALUES + ('78 75 435442','Исай','Давыдова','1948-03-12 00:00:00','8 (335) 532-34-28','rostislav1977@example.org','Того','п. Чита, наб. Есенина, д. 4 стр. 62, 471286','45:91:95:F3:09:07','КАМПУС'), + ('15 64 047497','Раиса','Капустин','1951-06-24 00:00:00','8 (977) 897-09-55','kuprijan_41@example.com','Доминика','д. Киров (Вятка), пр. Раздольный, д. 80 стр. 9/2, 559438','40:46:DD:4C:23:C0','ОБЩЕЖИТИЯ'), + ('1241 163365','Викторин','Сергеева','1986-10-26 00:00:00','8 023 454 7571','fokinborislav@example.com','Сент-Китс и Невис','с. Апатиты, пр. Геологов, д. 171 стр. 700, 994980','D1:32:86:E4:AC:8D','ПОЛНЫЙ'), + ('2288 149186','Остромир','Дьячкова','1952-10-07 00:00:00','8 537 727 5933','molchanovnatan@example.org','Украина','ст. Адлер, ш. Чайкиной, д. 8/2 стр. 55, 749507','67:54:9F:41:21:EF','ПОЛНЫЙ'), + ('55 50 725905','Парфен','Муравьев','1945-05-07 00:00:00','+7 910 970 5877','iosif_1996@example.com','Мадагаскар','п. Ступино, бул. Морской, д. 4 к. 4, 765065','30:77:50:16:34:FF','ПОЛНЫЙ'), + ('2226 038971','Илья','Соловьева','1981-06-30 00:00:00','+7 (838) 105-47-24','romanovlukjan@example.net','Кувейт','к. Смоленск, пр. Минина, д. 21, 528171','2A:3A:FB:75:67:9D','ОБЩЕЖИТИЯ'), + ('3403 092806','Платон','Маслова','2006-02-24 00:00:00','+7 (285) 253-08-09','karpovavgust@example.net','Тонга','к. Тихвин, алл. Линейная, д. 79, 361802','05:40:5A:85:57:06','ОБЩЕЖИТИЯ'), + ('5389 223670','Людмила','Суханова','1948-08-09 00:00:00','+7 (083) 450-3524','artem1999@example.org','Казахстан','с. Усть-Баргузин, ш. Мая 1, д. 68, 569512','D2:68:B7:85:5E:35','ОБЩЕЖИТИЯ'), + ('8249 411701','Нина','Юдин','1970-07-12 00:00:00','8 071 169 93 68','efimovanatalja@example.net','Сент-Китс и Невис','с. Великий Устюг, ул. Огородная, д. 491 к. 57, 799723','F4:86:FD:60:BD:4B','КАМПУС'), + ('4745 578398','Степан','Козлова','1978-09-05 00:00:00','8 427 351 87 62','alekse_2015@example.com','Танзания','с. Сосновый Бор, ул. Воронежская, д. 1, 544618','E4:43:90:6A:A4:EC','ПОЛНЫЙ'); +INSERT INTO public.physicals (passport_no,"name",surname,birthday,phone,mail,citizenship,address,access_card,access_level) VALUES + ('6219 258173','Евгения','Ларионова','1958-10-08 00:00:00','+7 (947) 435-0456','gavrilovafaina@example.org','ОАЭ','п. Темрюк, алл. Дзержинского, д. 5, 189947','30:47:CD:E7:3E:2F','ПОЛНЫЙ'), + ('99 70 771477','Ермил','Пестов','1971-10-02 00:00:00','+70095086302','ipati2004@example.net','Мьянма','клх Киренск, бул. Физкультурный, д. 1, 206638','26:BF:C6:CD:6A:CC','ПОЛНЫЙ'), + ('2765 941976','Севастьян','Жуков','1978-07-10 00:00:00','8 (298) 444-14-13','ksenija_2002@example.net','Испания','д. Королев, пр. Ручейный, д. 868 к. 333, 103261','F4:3C:3F:AE:FB:FC','КАМПУС'), + ('47 25 377050','Фотий','Савельева','1973-04-25 00:00:00','+7 (745) 108-8722','shestakovauljana@example.net','Эстония','п. Александровск, алл. Автомобилистов, д. 833 стр. 9, 763099','1B:7B:B4:08:93:4C','ОБЩЕЖИТИЯ'), + ('19 72 821614','Аркадий','Некрасов','2002-03-16 00:00:00','8 (509) 862-7433','glitkina@example.com','Сьерра-Леоне','к. Тавда, алл. Котовского, д. 794 стр. 7/9, 518523','5A:B5:06:F0:48:20','ПОЛНЫЙ'), + ('31 89 853783','Милий','Большакова','1980-03-16 00:00:00','+7 (148) 104-6909','zosimaartemev@example.com','Венгрия','с. Магнитогорск, наб. Интернациональная, д. 7/5 стр. 979, 947023','17:CD:20:D0:C2:51','ПОЛНЫЙ'), + ('63 56 246295','Корнил','Гусева','1958-08-26 00:00:00','+7 (173) 295-51-39','uljan_74@example.net','Того','п. Избербаш, бул. Комарова, д. 329, 863760','91:A6:3C:D1:11:C9','КАМПУС'), + ('6527 292857','Казимир','Калинин','1944-04-22 00:00:00','8 119 104 50 65','epifan_10@example.com','Бурунди','д. Шилка, ул. Мичурина, д. 3/7, 029421','47:17:66:EC:0A:43','КАМПУС'), + ('2113 619787','Захар','Копылова','1993-07-18 00:00:00','8 (209) 212-2074','wantonov@example.org','Антигуа и Барбуда','г. Дивногорск, пр. Боровой, д. 6 к. 542, 202179','7F:58:06:83:B9:3D','ПОЛНЫЙ'), + ('2877 768683','Куприян','Рогова','2005-10-12 00:00:00','8 970 622 47 94','kabanovaglafira@example.net','Исландия','клх Лодейное Поле, наб. Лесхозная, д. 3 стр. 53, 132861','26:18:C0:ED:D8:F5','ОБЩЕЖИТИЯ'); +-- +-- NEXT +-- INSERTS +-- +INSERT INTO Supervisors ( + id, + person, + experience, + defended_ratio, + qualification, + valid_from +) VALUES + (1,'67 86 529204', 19, 0.66, 'НАУЧНЫЙ СОТРУДНИК', '2023-01-01'), + (2,'12 31 046933', 13, 0.38, 'МЛАДШИЙ НАУЧНЫЙ СОТРУДНИК', '2023-01-01'), + (3,'2288 149186', 5, 0.4, 'НАУЧНЫЙ СОТРУДНИК', '2023-01-01'), + (4,'8058 663467', 15, 0.41, 'СТАРШИЙ НАУЧНЫЙ СОТРУДНИК', '2023-01-01'), + (5,'90 33 837617', 3, 0.39, 'ГЛАВНЫЙ НАУЧНЫЙ СОТРУДНИК', '2023-01-01'), + (6,'41 99 760015', 10, 0.39, 'МЛАДШИЙ НАУЧНЫЙ СОТРУДНИК', '2023-01-01'), + (7,'7140 657542', 21, 0.46, 'МЛАДШИЙ НАУЧНЫЙ СОТРУДНИК', '2023-01-01'), + (8,'2572 232250', 26, 0.58, 'ВЕДУЩИЙ НАУЧНЫЙ СОТРУДНИК', '2023-01-01'), + (9,'2072 637449', 30, 0.81, 'СТАРШИЙ НАУЧНЫЙ СОТРУДНИК', '2023-01-01'), + (10,'40 35 788599', 18, 0.73, 'СТАРШИЙ НАУЧНЫЙ СОТРУДНИК', '2023-01-01'); +INSERT INTO public.faculties (id,"name",acronym,head,vice,address) VALUES + (1,'Факультет компьютерных наук','ФАК','05 31 223774','26 54 277088','клх Нижний Новгород, ш. Фрунзе, д. 79, 157899'), + (2,'Физико-математический факультет','ФИЗ','0341 008975','5791 023528','ст. Кирово-Чепецк, бул. Российский, д. 42 к. 8, 831647'), + (3,'Факультет экономики','ФАК','63 56 246295','5232 128471','ст. Челюскин, бул. Николаева, д. 14, 617026'), + (4,'Юридический факультет','ЮРИ','9443 417640','8713 393896','ст. Воронеж, наб. Васильковая, д. 7/9, 527037'); +INSERT INTO public.departments (id,"name",acronym,founded,head,vice,secretary,faculty_id) VALUES + (1,'Кафедра программной инженерии','КПИ','2002-03-02 00:00:00','5595 663075','03 19 692860','3359 661291',1), + (2,'Кафедра искусственного интеллекта','КИИ','2017-08-23 00:00:00','56 91 395840','4739 983444','3008 002070',1), + (3,'Кафедра теоретической физики','КТФ','1999-01-11 00:00:00','2761 119404','52 62 746568','9904 233424',2), + (4,'Кафедра прикладной математики','КПМ','2002-04-14 00:00:00','5411 513883','5685 462175','4842 253548',1), + (5,'Кафедра экономической теории','КЭТ','1997-09-23 00:00:00','1261 343531','09 12 724570','8220 975187',3); +INSERT INTO public.programs (id,specification,"degree","name",parent_id) VALUES + (1,'SPEC-uF-3784','BACHELOR','Программная инженерия',NULL), + (2,'SPEC-Mz-3135','MAGISTER','Искусственный интеллект и машинное обучение',1), + (3,'SPEC-IS-8778','ASPIRANT','Теоретическая физика',2), + (4,'SPEC-oT-1329','MAGISTER','Прикладная математика и информатика',1), + (5,'SPEC-oU-9985','BACHELOR','Экономика и финансы',3), + (6,'SPEC-eG-0861','ASPIRANT','Юриспруденция',3), + (7,'SPEC-XD-6262','MAGISTER','Филология и лингвистика',5), + (8,'SPEC-uv-1305','ASPIRANT','Бизнес-информатика',1); +INSERT INTO public.disciplines (id,"name",department_id,credit_units,academic_hours,general_hours,is_annual) VALUES + (1,'Гражданское право 024',3,3,49,81,true), + (2,'Машинное обучение 389',1,6,52,71,true), + (3,'История литературы 349',1,5,64,73,false), + (4,'Эконометрика 039',4,3,55,69,true), + (5,'Эконометрика 155',3,6,45,50,false), + (6,'Гражданское право 130',4,2,53,55,false), + (7,'Дифференциальные уравнения 680',3,6,70,95,false); +-- +-- NEXT +-- INSERTS +-- +INSERT INTO public."groups" (group_id,faculty_id,program_id,department_id,study_starts,study_ends) VALUES + ('А80-532',1,6,2,'2023-07-08 00:00:00','2027-07-07 00:00:00'), + ('Б84-493п',4,7,5,'2022-06-20 00:00:00','2026-06-19 00:00:00'), + ('М00-297ц',3,7,3,'2023-06-07 00:00:00','2027-06-06 00:00:00'), + ('А31-097с',4,8,3,'2021-06-12 00:00:00','2025-06-11 00:00:00'), + ('М67-848ф',3,7,5,'2024-12-02 00:00:00','2028-12-01 00:00:00'), + ('М97-608г',1,2,2,'2022-09-16 00:00:00','2026-09-15 00:00:00'); +INSERT INTO public.students (id,person,group_id,supervisor_id,education_form,status) VALUES + (1,'2694 149771','Б84-493п',1,'ВЕЧЕРНЯЯ','УЧИТСЯ'), + (2,'5632 992313','А80-532',2,'ОЧНАЯ','УЧИТСЯ'), + (3,'0398 387328','А80-532',2,'ОЧНАЯ','ОТЧИСЛЕН'), + (4,'5669 391400','М00-297ц',1,'ВЕЧЕРНЯЯ','УЧИТСЯ'), + (5,'7140 657542','М97-608г',NULL,'ЗАОЧНАЯ','В АКАДЕМИЧЕСКОМ ОТПУСКЕ'), + (6,'4739 983444','А80-532',6,'ВЕЧЕРНЯЯ','УЧИТСЯ'), + (7,'56 91 395840','М67-848ф',1,'ОЧНАЯ','УЧИТСЯ'), + (8,'94 42 402234','А80-532',NULL,'ВЕЧЕРНЯЯ','УЧИТСЯ'), + (9,'8209 142250','М97-608г',NULL,'ОЧНАЯ','УЧИТСЯ'), + (10,'9679 528613','Б84-493п',NULL,'ВЕЧЕРНЯЯ','УЧИТСЯ'); +INSERT INTO public.students (id,person,group_id,supervisor_id,education_form,status) VALUES + (13,'2943 975817','А80-532',NULL,'ОЧНАЯ','УЧИТСЯ'), + (14,'93 45 648223','М67-848ф',NULL,'ОЧНАЯ','УЧИТСЯ'), + (15,'0747 164868','М97-608г',NULL,'ЗАОЧНАЯ','УЧИТСЯ'), + (16,'46 55 985853','М67-848ф',NULL,'ОЧНАЯ','УЧИТСЯ'), + (17,'8816 094109','А31-097с',NULL,'ОЧНАЯ','УЧИТСЯ'), + (18,'7215 075977','М97-608г',NULL,'ВЕЧЕРНЯЯ','УЧИТСЯ'), + (19,'8220 975187','А31-097с',NULL,'ВЕЧЕРНЯЯ','ОТЧИСЛЕН'), + (20,'1054 525196','М00-297ц',NULL,'ОЧНАЯ','УЧИТСЯ'), + (21,'5411 513883','А80-532',5,'ВЕЧЕРНЯЯ','УЧИТСЯ'), + (22,'5260 414487','М97-608г',3,'ОЧНАЯ','УЧИТСЯ'); +INSERT INTO public.students (id,person,group_id,supervisor_id,education_form,status) VALUES + (23,'18 33 741601','Б84-493п',NULL,'ЗАОЧНАЯ','ОТЧИСЛЕН'), + (24,'58 93 894235','М00-297ц',NULL,'ВЕЧЕРНЯЯ','УЧИТСЯ'), + (25,'70 38 816324','М67-848ф',1,'ЗАОЧНАЯ','УЧИТСЯ'), + (26,'2195 879864','А31-097с',NULL,'ЗАОЧНАЯ','В АКАДЕМИЧЕСКОМ ОТПУСКЕ'), + (28,'9861 406255','М00-297ц',NULL,'ЗАОЧНАЯ','УЧИТСЯ'), + (29,'02 77 110497','М67-848ф',5,'ОЧНАЯ','УЧИТСЯ'), + (30,'08 04 606331','А31-097с',NULL,'ОЧНАЯ','УЧИТСЯ'), + (31,'84 71 589791','М97-608г',NULL,'ОЧНАЯ','УЧИТСЯ'), + (32,'26 38 700770','А31-097с',NULL,'ОЧНАЯ','УЧИТСЯ'), + (33,'36 60 168150','М97-608г',NULL,'ОЧНАЯ','УЧИТСЯ'); +INSERT INTO public.students (id,person,group_id,supervisor_id,education_form,status) VALUES + (34,'02 99 571844','М67-848ф',3,'ОЧНАЯ','УЧИТСЯ'), + (35,'62 63 001065','М67-848ф',2,'ВЕЧЕРНЯЯ','УЧИТСЯ'), + (36,'1972 649748','А80-532',NULL,'ОЧНАЯ','УЧИТСЯ'), + (37,'41 62 923519','Б84-493п',NULL,'ОЧНАЯ','УЧИТСЯ'), + (38,'9710 721027','А80-532',3,'ОЧНАЯ','УЧИТСЯ'), + (39,'0979 857801','М67-848ф',4,'ОЧНАЯ','УЧИТСЯ'), + (40,'99 95 325957','А31-097с',4,'ВЕЧЕРНЯЯ','УЧИТСЯ'); +-- +-- NEXT +-- INSERTS +-- +INSERT INTO public."family" (id,person,"name",surname,kinship,phone,address) VALUES + (1,'0398 387328','Марина','Наумова','BROTHER','+7 995 357 8826','д. Надым, наб. Промышленная, д. 6/6, 427910'), + (2,'62 63 001065','Эмиль','Исаев','MOTHER','+7 969 476 62 45','к. Губкин, ш. Среднее, д. 8 стр. 82, 117684'), + (3,'18 33 741601','Мариан','Аксенова','SISTER','+7 (465) 746-4129','п. Любань, ул. Широкая, д. 9/4 к. 269, 046296'), + (4,'08 04 606331','Фрол','Карпов','BROTHER','87943867649','ст. Шереметьево, пер. Космонавтов, д. 850 стр. 2/5, 724016'), + (5,'26 38 700770','Александра','Савина','SISTER','+7 (616) 466-7078','ст. Верхний Уфалей, ш. Таежное, д. 1/5, 196218'), + (6,'5260 414487','Галина','Лебедев','MOTHER','+77058599330','г. Мичуринск, бул. Добролюбова, д. 84 к. 83, 526771'), + (7,'2195 879864','Харлампий','Назарова','MOTHER','+7 (785) 302-31-94','с. Тихорецк, наб. Просвещения, д. 70 к. 12, 638420'), + (8,'8816 094109','Ерофей','Кириллова','BROTHER','8 436 870 80 19','к. Коломна, наб. Революции, д. 4, 076294'), + (9,'56 91 395840','Изот','Королев','MOTHER','8 (719) 628-5725','ст. Каспийск, наб. Московская, д. 287 стр. 79, 819073'), + (10,'5669 391400','Евфросиния','Колобова','SISTER','8 878 729 1320','ст. Андреаполь, пр. Металлистов, д. 2/6 к. 73, 789219'); +INSERT INTO public."family" (id,person,"name",surname,kinship,phone,address) VALUES + (11,'7215 075977','Софон','Петров','ANOTHER','8 (920) 644-45-79','ст. Шадринск, пр. Новгородский, д. 426 стр. 7/9, 463185'), + (12,'99 95 325957','Вячеслав','Тихонов','SISTER','+7 583 892 9947','д. Рыбинск, ш. Физкультурное, д. 95 стр. 3, 127384'), + (13,'70 38 816324','Авксентий','Русаков','SISTER','85717105441','п. Снежногорск (Мурм.), алл. Индустриальная, д. 5/2 к. 788, 104334'), + (14,'2694 149771','Галактион','Мишина','MOTHER','+7 399 921 58 02','г. Серафимович, ш. Смирнова, д. 970, 042523'), + (15,'9861 406255','Сократ','Фадеева','BROTHER','8 426 747 9975','с. Усинск, наб. Октября, д. 618 стр. 714, 743476'), + (16,'70 38 816324','Исидор','Кулагина','ANOTHER','+7 (377) 843-2580','д. Алексин, алл. Студенческая, д. 933 к. 1/5, 693405'), + (17,'99 95 325957','Филарет','Тетерина','BROTHER','8 368 709 6254','клх Катав-Ивановск, пер. Громова, д. 536, 793590'), + (18,'1054 525196','Герасим','Наумова','SISTER','8 372 840 35 69','к. Махачкала, пр. Станиславского, д. 247 стр. 2, 300854'), + (19,'93 45 648223','Софон','Гурьев','BROTHER','+7 (400) 571-5066','с. Усть-Кулом, пр. Бажова, д. 65 стр. 7/3, 538619'), + (20,'02 77 110497','Авксентий','Дмитриев','BROTHER','8 021 175 32 87','с. Кабанск, ул. Надежды, д. 23, 332197'); +INSERT INTO public."family" (id,person,"name",surname,kinship,phone,address) VALUES + (21,'08 04 606331','Фёкла','Гришина','MOTHER','+7 (866) 052-5206','клх Батайск, наб. Гагарина, д. 27 стр. 157, 581763'), + (22,'8220 975187','Ангелина','Бирюков','MOTHER','+7 621 703 43 76','ст. Оха, наб. Заовражная, д. 98 к. 1/1, 693373'), + (23,'94 42 402234','Никандр','Мухин','MOTHER','+72945535996','к. Усть-Кулом, пр. Производственный, д. 53 к. 996, 898431'), + (24,'0979 857801','Клавдий','Попов','MOTHER','8 091 912 2962','д. Всеволожск, пер. Герцена, д. 98 стр. 5, 703041'), + (25,'94 42 402234','Софон','Якушева','FATHER','8 (462) 285-8905','ст. Воркута, бул. Высоковольтный, д. 26 стр. 34, 846316'), + (26,'1054 525196','Афиноген','Лебедева','ANOTHER','+7 462 218 79 45','клх Тихвин, ул. Народная, д. 705, 847984'), + (29,'9861 406255','Ратибор','Ершов','MOTHER','83937645598','п. Тольятти, ул. Северная, д. 5/7, 897030'), + (30,'41 62 923519','Любовь','Якушева','SISTER','8 593 668 2331','п. Нерчинск, ш. 50 лет Октября, д. 85 к. 159, 036923'), + (31,'02 77 110497','Венедикт','Лаврентьев','FATHER','+7 935 622 96 07','ст. Чусовой, пер. Маяковского, д. 2 стр. 111, 713533'), + (34,'93 45 648223','Татьяна','Фадеева','MOTHER','+7 753 318 10 15','д. Аршан (Бурят.), пер. Приозерный, д. 9/6 к. 17, 707468'); +INSERT INTO public."family" (id,person,"name",surname,kinship,phone,address) VALUES + (36,'7215 075977','Наина','Селиверстова','FATHER','83512916743','п. Александров Гай, ул. Каштановая, д. 7/8, 187122'), + (38,'9679 528613','Порфирий','Филатова','FATHER','+7 390 491 3209','п. Каменск-Шахтинский, ул. Юбилейная, д. 83 к. 6/2, 084979'), + (39,'26 38 700770','Галактион','Белозерова','FATHER','+7 245 013 75 89','к. Щелково, пер. Грибоедова, д. 36 к. 73, 775750'), + (40,'8209 142250','Еремей','Мишина','ANOTHER','+7 818 366 9305','к. Кисловодск, ш. Малиновое, д. 12 стр. 3, 146188'), + (41,'5669 391400','Татьяна','Орехова','ANOTHER','8 (905) 322-51-14','п. Тымовское, наб. Волочаевская, д. 7 стр. 4/4, 515925'), + (42,'2694 149771','Любовь','Васильев','BROTHER','+7 205 640 7983','г. Сарапул, пр. Невского, д. 7/1, 488341'), + (43,'7140 657542','Кузьма','Калашников','SISTER','+7 (893) 857-36-60','п. Невельск, алл. Молодежная, д. 6 к. 9/9, 557586'), + (44,'5632 992313','Прасковья','Власова','MOTHER','8 (973) 319-66-35','к. Рославль, пер. Трудовой, д. 92 к. 9/4, 503483'), + (45,'8220 975187','Игнатий','Крюков','ANOTHER','88206451268','г. Усть-Илимск, пр. Проезжий, д. 4 к. 963, 214503'), + (47,'8220 975187','Эммануил','Вишнякова','SISTER','8 (834) 962-87-80','клх Партизанск, алл. Прибрежная, д. 8/7, 176064'); +INSERT INTO public."family" (id,person,"name",surname,kinship,phone,address) VALUES + (48,'5411 513883','Агап','Суханов','MOTHER','8 115 388 2756','д. Чулым, наб. Майская, д. 1 к. 520, 907476'), + (49,'36 60 168150','Андроник','Зыков','MOTHER','+7 798 991 4167','с. Неплюевка, ш. Кутузова, д. 404 к. 280, 287836'), + (50,'9679 528613','Раиса','Соколов','ANOTHER','+7 552 354 66 14','ст. Надым, ул. Ленинская, д. 242, 291831'), + (51,'9710 721027','Майя','Киселев','ANOTHER','8 526 318 3802','клх Шуя, алл. Надежды, д. 47 к. 745, 861760'), + (52,'4739 983444','Лукия','Зимина','ANOTHER','8 892 474 3770','клх Богучар, бул. Краснопартизанский, д. 5, 983950'), + (53,'8209 142250','Лев','Мишин','MOTHER','+7 (790) 106-97-50','г. Заводоуковск, бул. Заречный, д. 3/6 стр. 20, 079227'), + (54,'94 42 402234','Петр','Константинов','BROTHER','+7 (169) 487-97-03','клх Лянтор, наб. Маркса, д. 9 стр. 60, 546926'), + (55,'02 99 571844','Оксана','Устинова','FATHER','8 (911) 289-34-86','г. Нарткала, ш. Рябиновое, д. 930, 193381'), + (56,'94 42 402234','Надежда','Громов','ANOTHER','+7 (551) 100-98-35','г. Сосновый Бор, бул. Цветочный, д. 286, 449741'), + (58,'02 99 571844','Касьян','Лихачева','SISTER','+7 (661) 187-23-15','клх Гдов, ул. Коммунальная, д. 5/9 к. 6/2, 068380'); +INSERT INTO public."family" (id,person,"name",surname,kinship,phone,address) VALUES + (59,'2943 975817','Вацлав','Боброва','FATHER','+7 (325) 502-5675','д. Арзамас, пер. Заозерный, д. 84, 335259'), + (60,'5632 992313','Виктор','Максимова','ANOTHER','8 360 442 67 73','ст. Набережные Челны, ш. Разина, д. 39 стр. 62, 693079'), + (61,'9710 721027','Мефодий','Козлов','SISTER','+7 571 185 96 93','п. Раменское, пр. Инженерный, д. 9 стр. 42, 980797'), + (62,'94 42 402234','Ян','Рыбаков','SISTER','+7 686 918 89 89','с. Урус-Мартан, пер. Ударный, д. 2/6 к. 1/5, 836459'), + (63,'2694 149771','Оксана','Сысоев','FATHER','+7 (980) 647-8360','п. Карталы, бул. Жукова, д. 93, 882339'), + (64,'02 99 571844','Глафира','Анисимова','MOTHER','8 291 979 77 70','г. Пушкинские Горы, пр. Бульварный, д. 1/3 к. 8, 350509'), + (65,'9710 721027','Григорий','Савельева','MOTHER','8 139 394 57 66','клх Тымовское, наб. Крупской, д. 5, 617486'), + (66,'36 60 168150','Орест','Симонова','FATHER','8 406 493 0859','ст. Нарым, пр. Дорожников, д. 6/8, 588611'), + (70,'0398 387328','Татьяна','Назарова','SISTER','8 (906) 834-59-88','д. Пушкинские Горы, ш. Степное, д. 54 стр. 4/1, 592415'), + (72,'56 91 395840','Пантелеймон','Михайлова','ANOTHER','89211077307','д. Люберцы, пер. Огородный, д. 2, 330181'); +INSERT INTO public."family" (id,person,"name",surname,kinship,phone,address) VALUES + (73,'0979 857801','Алла','Ершова','ANOTHER','+7 129 013 6056','д. Шатой, бул. Весенний, д. 3 к. 348, 485994'), + (74,'36 60 168150','Эмиль','Анисимова','SISTER','8 (824) 258-87-49','к. Владимир, пр. Славянский, д. 814 стр. 679, 711584'), + (78,'56 91 395840','Тамара','Лукин','BROTHER','+7 (316) 402-51-68','с. Биробиджан, алл. Труда, д. 9 к. 7/2, 919410'), + (79,'2694 149771','Майя','Капустина','SISTER','+7 (098) 392-3080','г. Пушкин, пр. Пугачева, д. 90 к. 7/2, 283511'), + (80,'41 62 923519','Варлаам','Устинов','ANOTHER','+7 099 853 52 28','клх Горячий Ключ, бул. Медицинский, д. 42 стр. 72, 499173'), + (81,'9861 406255','Антонин','Веселов','SISTER','+7 695 756 4978','г. Энгельс, пр. Пархоменко, д. 9 стр. 7, 038537'), + (82,'7140 657542','Наталья','Дмитриева','MOTHER','+7 (962) 593-89-37','п. Владивосток, пр. Демьяна Бедного, д. 8/2 стр. 39, 573091'), + (83,'0979 857801','Добромысл','Беляева','FATHER','8 800 527 35 02','д. Анадырь, ш. Крестьянское, д. 34 к. 7, 507955'), + (84,'0747 164868','Игнатий','Горшков','BROTHER','+7 (769) 687-04-82','ст. Оленегорск (Якут.), ш. Заливное, д. 7, 323935'), + (90,'9710 721027','Феликс','Дементьева','BROTHER','+7 513 626 84 57','к. Тосно, алл. Курчатова, д. 480 к. 740, 205086'); +INSERT INTO public."family" (id,person,"name",surname,kinship,phone,address) VALUES + (91,'18 33 741601','Парамон','Зимин','MOTHER','86706064662','ст. Раменское, ул. Урицкого, д. 87, 935658'), + (92,'2694 149771','Мефодий','Филатова','ANOTHER','+7 315 063 90 30','п. Инта, ул. Юности, д. 89 стр. 4/5, 957680'), + (95,'8209 142250','Евдоким','Кириллов','SISTER','8 905 420 74 79','к. Бреды, пер. Новостройка, д. 4, 673981'), + (96,'1054 525196','Феврония','Степанова','BROTHER','8 632 944 9200','клх Сузун, пр. Больничный, д. 7/4 стр. 52, 545792'), + (97,'99 95 325957','Эмилия','Емельянова','FATHER','+7 (062) 385-33-95','с. Дивногорск, пр. Марта 8, д. 3 стр. 2/1, 909775'), + (98,'58 93 894235','Аристарх','Богданова','FATHER','8 514 040 01 40','п. Черкесск, алл. Литейная, д. 9/4 к. 59, 579522'), + (99,'02 77 110497','Евпраксия','Зайцев','MOTHER','+7 (905) 756-53-35','клх Шереметьево, пр. Чайковского, д. 9/5 к. 9/9, 843996'), + (100,'2195 879864','Илья','Голубев','SISTER','+7 (643) 860-6283','с. Мирный, алл. Детская, д. 947, 285983'); +INSERT INTO public.files (id,student_id,"name",description,"extension","size","path",loaded_at) VALUES + (1,38,'человечек.jpeg','Картинка каюта цвет.','PNG',7.85,'/uploads/6ba1775b-9377-4840-925b-b8e66f877d5b','2025-03-28 17:31:12.72825'), + (2,13,'что.jpeg','Мягкий спасть добиться палец.','PNG',19.99,'/uploads/caf4902f-8b0e-41eb-8dbb-a45552e34c1b','2025-03-28 17:31:12.787382'), + (3,35,'кольцо.tiff','Разуметься ныне неожиданно.','PDF',10.56,'/uploads/d17e34fe-495d-478e-8cec-5a1de9cf7ec2','2025-03-28 17:31:12.843291'), + (5,7,'витрина.html','Рота витрина рабочий слишком грудь цепочка.','JPEG',6.11,'/uploads/a0f5d13b-a619-4d50-ba65-53fa599ffb52','2025-03-28 17:31:12.955054'), + (6,22,'цепочка.json','Задержать банда мягкий снимать.','PNG',18.90,'/uploads/40d4861b-d9ae-4a25-87e5-11880a32872c','2025-03-28 17:31:13.016239'), + (8,2,'дорогой.json','Премьера хотеть сопровождаться ныне совет.','PNG',14.01,'/uploads/574816d9-8f36-4a69-9157-267dd8baec69','2025-03-28 17:31:13.128026'), + (9,8,'коллектив.png','Адвокат помолчать естественный хотеть некоторый.','PDF',7.36,'/uploads/cd68a87b-505f-4cf0-a5f9-35c31ecf2ffa','2025-03-28 17:31:13.183833'), + (10,4,'труп.mov','Дурацкий уронить тревога покидать.','PNG',10.28,'/uploads/a4ecfad7-6e65-479a-9fba-57a59c6e1daa','2025-03-28 17:31:13.236856'), + (11,9,'армейский.wav','Дорогой основание рот волк.','PDF',12.64,'/uploads/a688647f-3641-42fe-821b-64201713c062','2025-03-28 17:31:13.293452'), + (12,16,'запеть.pptx','Выгнать господь а выгнать спалить слать командование.','JPEG',3.96,'/uploads/6c438416-2a88-441b-a253-eaa2e1991011','2025-03-28 17:31:13.352127'); +INSERT INTO public.files (id,student_id,"name",description,"extension","size","path",loaded_at) VALUES + (13,10,'основание.tiff','Настать полевой возмутиться дальний свежий смелый.','PNG',3.40,'/uploads/feb08e46-f03b-4798-b04f-92f075cca42b','2025-03-28 17:31:13.402874'), + (14,22,'белье.avi','Художественный ночь народ девка.','JPEG',17.70,'/uploads/5ca24f8a-605a-4d09-935b-8bd039930e6f','2025-03-28 17:31:13.458873'), + (15,35,'мелькнуть.odt','Передо сопровождаться да.','PDF',11.85,'/uploads/e8fb9ad4-020c-4597-861a-b578a0b2f7cf','2025-03-28 17:31:13.514084'), + (17,15,'магазин.wav','Передо сынок манера район оставить неожиданно понятный зеленый.','PNG',7.19,'/uploads/8f2f349c-c0ac-4826-9ee6-f28a1a1844fb','2025-03-28 17:31:13.629261'), + (18,16,'отражение.jpeg','Пастух исполнять подробность плавно.','PDF',12.32,'/uploads/0ac5206d-0897-4eb2-8766-65fa8aedc485','2025-03-28 17:31:13.691195'), + (19,37,'тревога.docx','Потрясти чем команда снимать покидать костер выраженный триста.','JPEG',13.26,'/uploads/7a8057f6-b869-4db4-9602-b0123a927632','2025-03-28 17:31:13.747506'), + (20,30,'оставить.key','Тревога академик выразить дурацкий услать вздрагивать магазин.','JPEG',14.45,'/uploads/0924ae05-0be4-444e-92b5-c6210ad16cc0','2025-03-28 17:31:13.804423'), + (21,10,'житель.jpeg','Вряд возмутиться рабочий выгнать школьный.','PDF',4.81,'/uploads/8291b340-1973-4f0c-9c0c-864b4009e9e0','2025-03-28 17:31:13.864072'), + (22,32,'развитый.txt','Дыхание рот вообще выразить пламя.','PNG',7.37,'/uploads/2d97bc1b-0d17-4995-8b12-00da64dee5a8','2025-03-28 17:31:13.917477'), + (23,4,'господь.avi','Увеличиваться посвятить около возможно пересечь факультет.','PDF',3.91,'/uploads/3d5365d0-72de-4b54-9aa1-6a17a696cf48','2025-03-28 17:31:13.975978'); +INSERT INTO public.files (id,student_id,"name",description,"extension","size","path",loaded_at) VALUES + (24,39,'возмутиться.bmp','Научить функция выраженный степь избегать инвалид заработать.','JPEG',0.43,'/uploads/d9ce9997-a1fa-4b3c-af81-510b35398b9c','2025-03-28 17:31:14.031911'), + (25,5,'носок.gif','Прежний необычный спичка ботинок.','PDF',12.73,'/uploads/ee3bc655-5067-4688-b67a-94c96aee302d','2025-03-28 17:31:14.093916'), + (26,25,'сбросить.html','Потрясти налоговый грудь карандаш написать.','PNG',6.15,'/uploads/442c7b3a-d63d-46fb-ae14-3f103a4d7d1c','2025-03-28 17:31:14.153836'), + (27,8,'премьера.flac','Упор смертельный пламя подробность равнодушный подробность освобождение.','PNG',11.15,'/uploads/f3845353-3ae9-4162-a0d9-56f77f70bd65','2025-03-28 17:31:14.210342'), + (29,26,'даль.css','Похороны нажать вообще плясать успокоиться.','PDF',14.05,'/uploads/2fd0934c-8baa-46c5-9e35-ae4fc1f58588','2025-03-28 17:31:14.322957'), + (30,25,'направо.docx','Разнообразный военный потом господь.','PNG',16.42,'/uploads/53f6dada-2874-465b-bd36-a4c8574b34f5','2025-03-28 17:31:14.40336'), + (31,20,'ведь.jpg','Спалить около бригада анализ.','PDF',7.19,'/uploads/0abacb70-90ec-41a6-939f-279fc827ac15','2025-03-28 17:31:14.460112'), + (32,7,'девка.csv','Предоставить ночь деловой призыв.','PNG',17.43,'/uploads/86a645ea-ed8a-4db7-ab17-1ee0ac01526f','2025-03-28 17:31:14.514753'), + (34,14,'актриса.csv','Деньги процесс пересечь желание ведь.','PNG',15.72,'/uploads/a9b7d0aa-a835-4536-9757-fec71ff87d1c','2025-03-28 17:31:14.629738'), + (35,28,'граница.mp4','Зарплата налево около пища тревога рис.','PNG',12.12,'/uploads/66230fc9-638a-4320-a69d-74c6607bd571','2025-03-28 17:31:14.687777'); +INSERT INTO public.files (id,student_id,"name",description,"extension","size","path",loaded_at) VALUES + (36,29,'ломать.mp4','Спорт страсть зарплата налоговый вариант крыса неудобно.','PDF',8.45,'/uploads/59173288-bc5b-41f4-bd70-df5a871b7a73','2025-03-28 17:31:14.743418'), + (37,10,'растеряться.odt','Уронить ученый заведение спалить изредка кпсс.','PDF',17.42,'/uploads/33b6904a-8212-4ec8-a0e7-cc04e9a2ff48','2025-03-28 17:31:14.796213'), + (38,1,'засунуть.pages','Войти находить сутки подробность.','PNG',7.87,'/uploads/7dcb798b-c451-4e46-851c-0d21171b574c','2025-03-28 17:31:14.909623'), + (39,37,'рота.mp3','Посидеть четко основание налево выбирать тута намерение означать.','JPEG',5.01,'/uploads/00d6a79b-16dd-48eb-9b09-d69bf2f04612','2025-03-28 17:31:14.974595'), + (40,31,'плавно.flac','Вчера космос сбросить набор пятеро сопровождаться монета.','PNG',19.83,'/uploads/1209ed7c-e161-435c-9846-3ab1ced2bb49','2025-03-28 17:31:15.029266'), + (41,8,'господь.webm','Запретить пространство какой приятель.','PNG',7.56,'/uploads/bd5d82b0-0996-48a4-9834-a7cfa1fc91db','2025-03-28 17:31:15.088764'), + (42,18,'естественный.pages','Ночь шлем оставить покидать школьный выкинуть.','PDF',15.52,'/uploads/66be43d1-e165-4a26-b5b5-f27018f291ad','2025-03-28 17:31:15.14946'), + (43,33,'разуметься.flac','Дремать какой кожа поезд пространство премьера.','PDF',7.87,'/uploads/7337afeb-3938-4cc8-9ce3-3949e9d02eeb','2025-03-28 17:31:15.208355'), + (44,16,'команда.pdf','Издали похороны каюта мотоцикл свежий.','PDF',8.63,'/uploads/14f26fb6-e5ca-4256-a5be-8d2d886a6b23','2025-03-28 17:31:15.268286'), + (45,22,'уничтожение.jpeg','Порт развернуться важный трясти горький забирать.','PDF',0.51,'/uploads/f2c16123-8b6a-4f07-9ba4-d091d120f264','2025-03-28 17:31:15.328291'); +INSERT INTO public.files (id,student_id,"name",description,"extension","size","path",loaded_at) VALUES + (46,10,'спасть.json','Премьера набор палец спалить командующий бегать задержать бровь.','PDF',19.82,'/uploads/2b8c2e33-c2ea-42e9-b62d-eb9c3798d47e','2025-03-28 17:31:15.391598'), + (47,4,'дрогнуть.tiff','Расстройство развитый беспомощный казнь цвет чем.','PNG',4.89,'/uploads/01774c22-50f7-4373-8859-3b5f49165701','2025-03-28 17:31:15.476805'), + (48,8,'командование.docx','Упор увеличиваться житель присесть темнеть.','JPEG',3.85,'/uploads/28ea3804-e2f2-4976-bef9-e1127c189876','2025-03-28 17:31:15.530202'), + (50,28,'триста.avi','Анализ миллиард успокоиться манера.','PNG',11.88,'/uploads/acbfdffd-40fa-483f-998a-aff7ac21fb6e','2025-03-28 17:31:15.651876'), + (51,13,'рабочий.gif','Исследование бровь опасность выраженный появление жидкий низкий оставить.','JPEG',13.58,'/uploads/92840c16-2a7e-4fb6-853e-aee8eb6a771a','2025-03-28 17:31:15.709847'), + (52,5,'ныне.js','Появление пол трясти возмутиться мимо социалистический добиться.','PDF',2.40,'/uploads/5918f35c-0237-498b-b8a7-7d3ee5449f44','2025-03-28 17:31:15.767121'), + (53,25,'потрясти.txt','Факультет полевой тысяча изображать еврейский.','PDF',19.54,'/uploads/c608080b-d545-48b2-86a7-a3fba19a7eb1','2025-03-28 17:31:15.828046'), + (54,14,'еврейский.flac','Сынок о ученый металл палка правый о.','JPEG',6.73,'/uploads/0154c424-2d70-4a23-97d1-c09bdafc8ab0','2025-03-28 17:31:15.887107'), + (55,37,'инфекция.png','Перебивать зеленый рота достоинство коричневый.','PNG',19.64,'/uploads/c8efe3ea-2ebb-4a42-b1cc-bf18296bc362','2025-03-28 17:31:15.968086'), + (56,15,'ломать.jpeg','Грустный неожиданно трясти дыхание сутки.','JPEG',9.01,'/uploads/c1376801-db73-43ce-97b1-16530165a573','2025-03-28 17:31:16.034867'); +INSERT INTO public.files (id,student_id,"name",description,"extension","size","path",loaded_at) VALUES + (57,20,'неудобно.jpeg','Пропадать теория заведение радость голубчик уронить.','PNG',15.79,'/uploads/e2d2a344-8ec9-49b4-adcc-546d3e21cec0','2025-03-28 17:31:16.090562'), + (58,40,'район.csv','Появление перебивать жить зеленый.','JPEG',4.62,'/uploads/a7b291f0-1912-414d-a36b-f723ff75bc6b','2025-03-28 17:31:16.155271'), + (59,26,'академик.mov','Зато светило бочок спешить нажать.','JPEG',9.37,'/uploads/6498dd8c-8274-4451-87cb-75d4557d8e0e','2025-03-28 17:31:16.214703'), + (60,33,'порода.mov','Нажать кольцо функция господь.','JPEG',10.75,'/uploads/48980b23-67b1-4523-83e8-e6e7472e1aec','2025-03-28 17:31:16.269407'), + (61,39,'вообще.js','Пастух песня призыв строительство багровый один госпожа.','JPEG',5.08,'/uploads/1f0eb56b-c3fa-4a61-876d-723a09bc456c','2025-03-28 17:31:16.333089'), + (62,35,'командующий.odp','Функция аж другой очутиться командующий выразить.','PDF',19.59,'/uploads/ba80d1bf-d60e-4e80-a3bb-f15249219aff','2025-03-28 17:31:16.39361'), + (63,22,'уточнить.gif','Изучить поставить смелый идея.','JPEG',11.87,'/uploads/08d8d4fd-5cfd-40f5-b65f-6a5036b60717','2025-03-28 17:31:16.450981'), + (64,40,'зачем.flac','Печатать равнодушный указанный назначить дружно скрытый хозяйка.','JPEG',17.22,'/uploads/7d5e8efa-f287-4bed-9a44-f624c696fcc6','2025-03-28 17:31:16.511458'), + (65,17,'аллея.mov','Привлекать за труп дурацкий неудобно процесс.','JPEG',9.90,'/uploads/a625cb89-8938-4430-9a93-9d6b90ad5e66','2025-03-28 17:31:16.571287'), + (67,29,'отражение.odp','Правление запретить аж дыхание эпоха приличный растеряться.','PDF',15.77,'/uploads/ae6bab90-40b2-4508-9fe7-6fb028bbec19','2025-03-28 17:31:16.703414'); +INSERT INTO public.files (id,student_id,"name",description,"extension","size","path",loaded_at) VALUES + (68,33,'стакан.mov','Слишком сбросить свежий увеличиваться смелый.','JPEG',3.02,'/uploads/279c526e-b6e6-4dd8-80ce-c15971025e24','2025-03-28 17:31:16.764921'), + (69,9,'порт.mp3','Вариант близко песня полоска зато плод скрытый.','PDF',5.91,'/uploads/680c7204-65f4-48ff-b6d0-64e38cc244fb','2025-03-28 17:31:16.827597'), + (70,1,'за.bmp','Что эпоха неправда кидать за.','JPEG',6.59,'/uploads/06da97ce-2d5c-42c5-8f76-be49b5eff8cd','2025-03-28 17:31:16.892664'), + (71,5,'налоговый.json','Вчера спичка карман вскинуть.','PNG',3.81,'/uploads/46ec858b-48ea-4ba4-a49e-1538000f2328','2025-03-28 17:31:16.955885'), + (72,6,'сбросить.mp3','Правый что прошептать полоска металл господь.','PDF',18.26,'/uploads/0f11549a-6f3d-4daf-8a98-e3899fdeba35','2025-03-28 17:31:17.014137'), + (73,32,'бабочка.jpg','Салон изучить запеть сомнительный чувство природа сомнительный.','PNG',2.68,'/uploads/bab51003-b4d9-4974-aa73-11272ef264b0','2025-03-28 17:31:17.073037'), + (74,2,'господь.mov','Палка интеллектуальный научить тута подземный теория.','PDF',6.44,'/uploads/eef18e45-0eba-47c9-84a6-4d2f381f63f3','2025-03-28 17:31:17.131449'), + (75,6,'потрясти.png','Пробовать труп близко запретить коллектив человечек ученый.','PNG',9.65,'/uploads/34b38a29-26ad-4950-a7e3-df34cebfca97','2025-03-28 17:31:17.193489'), + (76,34,'присесть.xls','Выражаться поймать темнеть.','PNG',18.13,'/uploads/45ff3bdf-682b-4386-b312-699b178bebe5','2025-03-28 17:31:17.253285'), + (77,9,'наткнуться.avi','Социалистический а райком.','JPEG',17.98,'/uploads/56006ecc-2b6f-4468-88c6-72c2294fc47f','2025-03-28 17:31:17.320282'); +INSERT INTO public.files (id,student_id,"name",description,"extension","size","path",loaded_at) VALUES + (79,18,'предоставить.webm','Спасть неожиданно бровь присесть наткнуться разводить горький.','PNG',2.86,'/uploads/3f568a57-6aaf-494c-9922-a2906e48d3e2','2025-03-28 17:31:17.442573'), + (80,25,'а.csv','Направо грустный ночь шлем дальний один выражение.','PNG',14.77,'/uploads/b72ad141-f498-432b-933a-46ec9b33e4b0','2025-03-28 17:31:17.497237'), + (81,29,'близко.css','Упорно заявление вздрагивать слишком прежний невыносимый спорт.','PDF',15.56,'/uploads/a15d9cfb-2997-48ad-bbfe-20c2dc8a1f23','2025-03-28 17:31:17.555651'), + (82,38,'тюрьма.flac','Остановить сходить еврейский неожиданно спичка.','JPEG',1.63,'/uploads/6afd2739-4f07-49ad-847b-7a03059bb9e2','2025-03-28 17:31:17.615757'), + (83,1,'валюта.html','Встать угроза пол теория промолчать карман скользить успокоиться.','PDF',3.19,'/uploads/03050f7f-8eec-4d9d-a895-fe86e4824432','2025-03-28 17:31:17.675953'), + (84,22,'ботинок.jpeg','Низкий плавно плавно вперед.','JPEG',13.68,'/uploads/60a98b4c-58b0-494e-98d8-02bf05470348','2025-03-28 17:31:17.735953'), + (85,4,'демократия.xlsx','Пространство заявление бригада изба термин трубка ставить.','PDF',18.14,'/uploads/e4764b7e-8b59-4650-a46a-a31b5af6872a','2025-03-28 17:31:17.795734'), + (86,8,'монета.json','Дьявол указанный горький вряд хотеть.','JPEG',12.68,'/uploads/9c020227-b554-4d67-bd67-ee0c2d35ed17','2025-03-28 17:31:17.856224'), + (87,22,'багровый.wav','Поколение дошлый спешить факультет бок.','PDF',6.39,'/uploads/a94220e3-fd79-4ab9-8213-db798790dbb4','2025-03-28 17:31:17.914637'), + (88,13,'запеть.csv','Вывести правый холодно уронить мусор человечек уничтожение хотеть.','JPEG',9.53,'/uploads/7ee55491-472d-4d5d-8eb4-1bd10825d1c6','2025-03-28 17:31:17.967117'); +INSERT INTO public.files (id,student_id,"name",description,"extension","size","path",loaded_at) VALUES + (89,5,'уточнить.css','Прежний совещание карман.','PDF',7.38,'/uploads/2a337c14-b108-458e-a3e1-2ec29a169b74','2025-03-28 17:31:18.026046'), + (90,17,'художественный.flac','Исполнять передо солнце бак.','PNG',13.00,'/uploads/3edc92d6-50e1-4a85-a5ac-e9236ab09c14','2025-03-28 17:31:19.127804'), + (91,7,'счастье.json','Металл правый оборот исполнять.','JPEG',0.60,'/uploads/42067fb7-f52b-466d-a78d-b796f54a69fd','2025-03-28 17:31:19.189341'), + (92,8,'болото.jpeg','Поздравлять правление анализ плод славный господь.','PDF',8.07,'/uploads/800064d0-d7ad-4d62-b72a-ba3d28084c92','2025-03-28 17:31:19.249712'), + (93,19,'означать.wav','Вперед посвятить естественный совещание цепочка.','PNG',17.16,'/uploads/3f380e4d-54f8-4deb-a90a-c682159aafeb','2025-03-28 17:31:19.314221'), + (94,3,'мучительно.txt','Деловой потом пропадать затянуться.','PNG',6.57,'/uploads/f4badc0d-2b00-484a-9b96-f3152a4eb5a1','2025-03-28 17:31:19.378956'), + (95,31,'один.mov','Деловой наткнуться нервно район салон.','JPEG',9.23,'/uploads/e6539ad7-da5e-4ebf-97b1-d6b75cfe7f69','2025-03-28 17:31:19.440338'), + (96,7,'процесс.mp4','Угроза дрогнуть порт товар результат тута один.','JPEG',17.91,'/uploads/e20d0f49-178a-416f-a590-da45728ab542','2025-03-28 17:31:19.504471'), + (97,17,'близко.js','Лететь карман юный.','PNG',11.73,'/uploads/d4e58aa7-b785-480f-a786-77ac04034751','2025-03-28 17:31:19.566108'), + (98,7,'постоянный.tiff','Мрачно холодно роса выразить собеседник.','PDF',17.91,'/uploads/e1fb6389-70f3-4664-880d-a7c4840919c6','2025-03-28 17:31:19.6323'); +INSERT INTO public.files (id,student_id,"name",description,"extension","size","path",loaded_at) VALUES + (99,24,'бок.wav','Невыносимый полевой освобождение миллиард.','PDF',6.77,'/uploads/99180e98-f41e-4de7-b18a-e407f9dbaf78','2025-03-28 17:31:19.702557'), + (100,5,'заработать.avi','Бочок задрать один задрать назначить непривычный место.','PDF',13.69,'/uploads/6afa88f4-e831-4677-a36f-43b216d21617','2025-03-28 17:31:19.762904'); +INSERT INTO public.movement (id,student_id,"type",new_group,new_status,issued_at) VALUES + (1,20,'ВОССТАНОВЛЕН',NULL,'УЧИТСЯ','2023-07-04 00:00:00'), + (2,9,'ВОССТАНОВЛЕН',NULL,'В АКАДЕМИЧЕСКОМ ОТПУСКЕ','2024-05-16 00:00:00'), + (3,18,'ОТЧИСЛЕН',NULL,'В АКАДЕМИЧЕСКОМ ОТПУСКЕ','2023-10-07 00:00:00'), + (4,14,'ЗАЧИСЛЕН',NULL,'В АКАДЕМИЧЕСКОМ ОТПУСКЕ','2023-12-26 00:00:00'), + (5,18,'ПЕРЕВОД В ДРУГУЮ ГРУППУ','М97-608г','УЧИТСЯ','2023-07-21 00:00:00'), + (6,4,'ВОССТАНОВЛЕН',NULL,'В АКАДЕМИЧЕСКОМ ОТПУСКЕ','2024-10-21 00:00:00'), + (7,2,'ЗАЧИСЛЕН',NULL,'В АКАДЕМИЧЕСКОМ ОТПУСКЕ','2023-08-18 00:00:00'), + (8,26,'ОТЧИСЛЕН',NULL,'В АКАДЕМИЧЕСКОМ ОТПУСКЕ','2023-07-06 00:00:00'), + (10,23,'ВОССТАНОВЛЕН',NULL,'ОТЧИСЛЕН','2024-03-28 00:00:00'), + (11,15,'ОТЧИСЛЕН',NULL,'УЧИТСЯ','2024-04-04 00:00:00'); +INSERT INTO public.movement (id,student_id,"type",new_group,new_status,issued_at) VALUES + (12,39,'ПЕРЕВОД В ДРУГУЮ ГРУППУ','А31-097с','УЧИТСЯ','2024-09-24 00:00:00'), + (13,13,'В АКАДЕМИЧЕСКИЙ ОТПУСК',NULL,'В АКАДЕМИЧЕСКОМ ОТПУСКЕ','2025-01-17 00:00:00'), + (14,29,'ОТЧИСЛЕН',NULL,'В АКАДЕМИЧЕСКОМ ОТПУСКЕ','2023-11-28 00:00:00'), + (15,29,'В АКАДЕМИЧЕСКИЙ ОТПУСК',NULL,'В АКАДЕМИЧЕСКОМ ОТПУСКЕ','2024-01-27 00:00:00'), + (16,28,'ЗАЧИСЛЕН',NULL,'В АКАДЕМИЧЕСКОМ ОТПУСКЕ','2024-07-27 00:00:00'), + (17,4,'ВОССТАНОВЛЕН',NULL,'УЧИТСЯ','2024-01-23 00:00:00'), + (19,10,'ЗАЧИСЛЕН',NULL,'ОТЧИСЛЕН','2023-09-29 00:00:00'), + (20,13,'ЗАЧИСЛЕН',NULL,'В АКАДЕМИЧЕСКОМ ОТПУСКЕ','2024-03-07 00:00:00'), + (21,8,'ВОССТАНОВЛЕН',NULL,'УЧИТСЯ','2024-03-12 00:00:00'), + (22,40,'В АКАДЕМИЧЕСКИЙ ОТПУСК',NULL,'В АКАДЕМИЧЕСКОМ ОТПУСКЕ','2024-03-15 00:00:00'); +INSERT INTO public.movement (id,student_id,"type",new_group,new_status,issued_at) VALUES + (23,22,'В АКАДЕМИЧЕСКИЙ ОТПУСК',NULL,'В АКАДЕМИЧЕСКОМ ОТПУСКЕ','2025-01-26 00:00:00'), + (24,18,'В АКАДЕМИЧЕСКИЙ ОТПУСК',NULL,'В АКАДЕМИЧЕСКОМ ОТПУСКЕ','2023-06-27 00:00:00'), + (25,7,'ПЕРЕВОД В ДРУГУЮ ГРУППУ','Б84-493п','УЧИТСЯ','2023-07-20 00:00:00'), + (26,22,'В АКАДЕМИЧЕСКИЙ ОТПУСК',NULL,'В АКАДЕМИЧЕСКОМ ОТПУСКЕ','2023-04-07 00:00:00'), + (27,19,'В АКАДЕМИЧЕСКИЙ ОТПУСК',NULL,'В АКАДЕМИЧЕСКОМ ОТПУСКЕ','2025-01-29 00:00:00'), + (29,18,'В АКАДЕМИЧЕСКИЙ ОТПУСК',NULL,'В АКАДЕМИЧЕСКОМ ОТПУСКЕ','2024-07-20 00:00:00'), + (30,37,'ЗАЧИСЛЕН',NULL,'УЧИТСЯ','2024-08-20 00:00:00'), + (31,14,'ЗАЧИСЛЕН',NULL,'В АКАДЕМИЧЕСКОМ ОТПУСКЕ','2024-03-05 00:00:00'), + (32,16,'В АКАДЕМИЧЕСКИЙ ОТПУСК',NULL,'В АКАДЕМИЧЕСКОМ ОТПУСКЕ','2024-09-26 00:00:00'), + (33,7,'ЗАЧИСЛЕН',NULL,'УЧИТСЯ','2024-11-12 00:00:00'); +INSERT INTO public.movement (id,student_id,"type",new_group,new_status,issued_at) VALUES + (34,34,'ПЕРЕВОД В ДРУГУЮ ГРУППУ','М00-297ц','УЧИТСЯ','2024-12-15 00:00:00'), + (36,18,'ВОССТАНОВЛЕН',NULL,'В АКАДЕМИЧЕСКОМ ОТПУСКЕ','2024-03-03 00:00:00'), + (37,13,'В АКАДЕМИЧЕСКИЙ ОТПУСК',NULL,'В АКАДЕМИЧЕСКОМ ОТПУСКЕ','2024-11-11 00:00:00'), + (38,9,'ПЕРЕВОД В ДРУГУЮ ГРУППУ','А31-097с','УЧИТСЯ','2023-12-13 00:00:00'), + (39,30,'В АКАДЕМИЧЕСКИЙ ОТПУСК',NULL,'В АКАДЕМИЧЕСКОМ ОТПУСКЕ','2024-11-12 00:00:00'), + (40,6,'В АКАДЕМИЧЕСКИЙ ОТПУСК',NULL,'В АКАДЕМИЧЕСКОМ ОТПУСКЕ','2025-02-07 00:00:00'), + (41,31,'ЗАЧИСЛЕН',NULL,'УЧИТСЯ','2024-06-08 00:00:00'), + (42,28,'ВОССТАНОВЛЕН',NULL,'ОТЧИСЛЕН','2024-07-07 00:00:00'), + (43,36,'В АКАДЕМИЧЕСКИЙ ОТПУСК',NULL,'В АКАДЕМИЧЕСКОМ ОТПУСКЕ','2023-06-20 00:00:00'), + (44,33,'ОТЧИСЛЕН',NULL,'УЧИТСЯ','2024-08-17 00:00:00'); +INSERT INTO public.movement (id,student_id,"type",new_group,new_status,issued_at) VALUES + (46,21,'ПЕРЕВОД В ДРУГУЮ ГРУППУ','М97-608г','УЧИТСЯ','2023-05-04 00:00:00'), + (47,33,'В АКАДЕМИЧЕСКИЙ ОТПУСК',NULL,'В АКАДЕМИЧЕСКОМ ОТПУСКЕ','2023-12-13 00:00:00'), + (48,28,'ЗАЧИСЛЕН',NULL,'В АКАДЕМИЧЕСКОМ ОТПУСКЕ','2024-09-12 00:00:00'), + (49,2,'ВОССТАНОВЛЕН',NULL,'В АКАДЕМИЧЕСКОМ ОТПУСКЕ','2024-12-21 00:00:00'), + (50,20,'ЗАЧИСЛЕН',NULL,'УЧИТСЯ','2024-01-08 00:00:00'), + (51,30,'ЗАЧИСЛЕН',NULL,'УЧИТСЯ','2023-08-01 00:00:00'), + (52,6,'В АКАДЕМИЧЕСКИЙ ОТПУСК',NULL,'В АКАДЕМИЧЕСКОМ ОТПУСКЕ','2024-04-17 00:00:00'), + (53,25,'ОТЧИСЛЕН',NULL,'УЧИТСЯ','2024-06-23 00:00:00'), + (54,40,'ПЕРЕВОД В ДРУГУЮ ГРУППУ','М00-297ц','УЧИТСЯ','2023-08-08 00:00:00'), + (55,16,'ЗАЧИСЛЕН',NULL,'В АКАДЕМИЧЕСКОМ ОТПУСКЕ','2024-12-20 00:00:00'); +INSERT INTO public.movement (id,student_id,"type",new_group,new_status,issued_at) VALUES + (56,35,'ПЕРЕВОД В ДРУГУЮ ГРУППУ','М97-608г','УЧИТСЯ','2023-09-26 00:00:00'), + (58,6,'ОТЧИСЛЕН',NULL,'УЧИТСЯ','2024-11-08 00:00:00'), + (59,13,'ОТЧИСЛЕН',NULL,'УЧИТСЯ','2024-12-27 00:00:00'), + (60,25,'ПЕРЕВОД В ДРУГУЮ ГРУППУ','М97-608г','УЧИТСЯ','2023-07-31 00:00:00'), + (61,35,'ПЕРЕВОД В ДРУГУЮ ГРУППУ','М00-297ц','УЧИТСЯ','2024-09-23 00:00:00'), + (62,35,'В АКАДЕМИЧЕСКИЙ ОТПУСК',NULL,'В АКАДЕМИЧЕСКОМ ОТПУСКЕ','2024-12-16 00:00:00'), + (64,35,'ЗАЧИСЛЕН',NULL,'ОТЧИСЛЕН','2023-04-21 00:00:00'), + (65,25,'В АКАДЕМИЧЕСКИЙ ОТПУСК',NULL,'В АКАДЕМИЧЕСКОМ ОТПУСКЕ','2025-01-18 00:00:00'), + (66,25,'ПЕРЕВОД В ДРУГУЮ ГРУППУ','А31-097с','УЧИТСЯ','2024-03-28 00:00:00'), + (67,36,'ВОССТАНОВЛЕН',NULL,'В АКАДЕМИЧЕСКОМ ОТПУСКЕ','2024-09-13 00:00:00'); +INSERT INTO public.movement (id,student_id,"type",new_group,new_status,issued_at) VALUES + (68,35,'В АКАДЕМИЧЕСКИЙ ОТПУСК',NULL,'В АКАДЕМИЧЕСКОМ ОТПУСКЕ','2024-12-22 00:00:00'), + (69,40,'ОТЧИСЛЕН',NULL,'УЧИТСЯ','2024-02-08 00:00:00'), + (70,28,'ПЕРЕВОД В ДРУГУЮ ГРУППУ','А80-532','УЧИТСЯ','2024-08-06 00:00:00'), + (72,20,'ОТЧИСЛЕН',NULL,'УЧИТСЯ','2023-08-10 00:00:00'), + (73,31,'ЗАЧИСЛЕН',NULL,'УЧИТСЯ','2024-12-20 00:00:00'), + (74,30,'ОТЧИСЛЕН',NULL,'В АКАДЕМИЧЕСКОМ ОТПУСКЕ','2024-04-01 00:00:00'), + (75,7,'В АКАДЕМИЧЕСКИЙ ОТПУСК',NULL,'В АКАДЕМИЧЕСКОМ ОТПУСКЕ','2025-02-02 00:00:00'), + (76,8,'ПЕРЕВОД В ДРУГУЮ ГРУППУ','Б84-493п','УЧИТСЯ','2024-11-20 00:00:00'), + (77,8,'ОТЧИСЛЕН',NULL,'В АКАДЕМИЧЕСКОМ ОТПУСКЕ','2023-08-15 00:00:00'), + (78,14,'В АКАДЕМИЧЕСКИЙ ОТПУСК',NULL,'В АКАДЕМИЧЕСКОМ ОТПУСКЕ','2023-06-14 00:00:00'); +INSERT INTO public.movement (id,student_id,"type",new_group,new_status,issued_at) VALUES + (79,24,'ВОССТАНОВЛЕН',NULL,'ОТЧИСЛЕН','2024-03-29 00:00:00'), + (80,14,'ВОССТАНОВЛЕН',NULL,'УЧИТСЯ','2024-04-02 00:00:00'), + (81,5,'В АКАДЕМИЧЕСКИЙ ОТПУСК',NULL,'В АКАДЕМИЧЕСКОМ ОТПУСКЕ','2023-04-12 00:00:00'), + (82,35,'ОТЧИСЛЕН',NULL,'В АКАДЕМИЧЕСКОМ ОТПУСКЕ','2024-02-25 00:00:00'), + (83,36,'ПЕРЕВОД В ДРУГУЮ ГРУППУ','А80-532','УЧИТСЯ','2023-11-29 00:00:00'), + (84,34,'ПЕРЕВОД В ДРУГУЮ ГРУППУ','М67-848ф','УЧИТСЯ','2024-07-12 00:00:00'), + (85,9,'ЗАЧИСЛЕН',NULL,'ОТЧИСЛЕН','2023-08-02 00:00:00'), + (86,3,'ВОССТАНОВЛЕН',NULL,'В АКАДЕМИЧЕСКОМ ОТПУСКЕ','2023-11-30 00:00:00'), + (87,24,'ОТЧИСЛЕН',NULL,'В АКАДЕМИЧЕСКОМ ОТПУСКЕ','2023-04-02 00:00:00'), + (88,20,'В АКАДЕМИЧЕСКИЙ ОТПУСК',NULL,'В АКАДЕМИЧЕСКОМ ОТПУСКЕ','2025-01-13 00:00:00'); +INSERT INTO public.movement (id,student_id,"type",new_group,new_status,issued_at) VALUES + (89,7,'ЗАЧИСЛЕН',NULL,'ОТЧИСЛЕН','2024-01-29 00:00:00'), + (90,31,'ПЕРЕВОД В ДРУГУЮ ГРУППУ','М00-297ц','УЧИТСЯ','2025-01-05 00:00:00'), + (91,14,'ВОССТАНОВЛЕН',NULL,'УЧИТСЯ','2024-03-02 00:00:00'), + (92,14,'В АКАДЕМИЧЕСКИЙ ОТПУСК',NULL,'В АКАДЕМИЧЕСКОМ ОТПУСКЕ','2024-09-03 00:00:00'), + (93,16,'ЗАЧИСЛЕН',NULL,'УЧИТСЯ','2024-03-12 00:00:00'), + (94,34,'ОТЧИСЛЕН',NULL,'УЧИТСЯ','2023-06-17 00:00:00'), + (95,21,'ЗАЧИСЛЕН',NULL,'В АКАДЕМИЧЕСКОМ ОТПУСКЕ','2024-03-21 00:00:00'), + (96,4,'В АКАДЕМИЧЕСКИЙ ОТПУСК',NULL,'В АКАДЕМИЧЕСКОМ ОТПУСКЕ','2024-12-28 00:00:00'), + (97,6,'В АКАДЕМИЧЕСКИЙ ОТПУСК',NULL,'В АКАДЕМИЧЕСКОМ ОТПУСКЕ','2024-10-02 00:00:00'), + (98,4,'ЗАЧИСЛЕН',NULL,'УЧИТСЯ','2023-09-04 00:00:00'); +INSERT INTO public.movement (id,student_id,"type",new_group,new_status,issued_at) VALUES + (99,14,'ЗАЧИСЛЕН',NULL,'В АКАДЕМИЧЕСКОМ ОТПУСКЕ','2024-12-21 00:00:00'), + (100,26,'ВОССТАНОВЛЕН',NULL,'В АКАДЕМИЧЕСКОМ ОТПУСКЕ','2024-12-27 00:00:00'); +INSERT INTO public.statements (id,student_id,discipline_id,examiner,try_no,grade,conducted_at) VALUES + (1,9,1,'5669 391400',1,9,'2023-07-01 00:00:00'), + (2,19,4,'00 26 985876',0,6,'2023-06-21 00:00:00'), + (3,22,6,'85 67 511319',2,9,'2023-08-06 00:00:00'), + (4,26,7,'93 88 085011',1,8,'2024-03-19 00:00:00'), + (5,9,7,'90 33 837617',2,3,'2023-08-19 00:00:00'), + (6,34,5,'6219 258173',0,9,'2024-09-11 00:00:00'), + (7,19,4,'0352 615058',1,5,'2024-09-12 00:00:00'), + (8,3,7,'64 04 291581',0,4,'2024-11-22 00:00:00'), + (9,26,3,'64 04 291581',2,4,'2024-09-14 00:00:00'), + (11,32,4,'17 61 692403',2,6,'2024-09-04 00:00:00'); +INSERT INTO public.statements (id,student_id,discipline_id,examiner,try_no,grade,conducted_at) VALUES + (12,36,1,'5538 454422',0,4,'2023-09-30 00:00:00'), + (13,2,1,'2840 128377',1,5,'2023-05-04 00:00:00'), + (14,18,6,'2573 662426',0,3,'2024-03-04 00:00:00'), + (15,1,3,'47 50 548674',2,8,'2024-02-22 00:00:00'), + (16,36,2,'3743 597184',2,10,'2023-08-13 00:00:00'), + (18,34,6,'14 53 754016',1,8,'2023-08-08 00:00:00'), + (19,20,1,'41 99 760015',2,8,'2024-06-25 00:00:00'), + (20,2,4,'05 31 223774',1,10,'2024-05-29 00:00:00'), + (21,8,6,'38 93 084766',2,3,'2024-11-20 00:00:00'), + (22,9,1,'14 65 533037',2,10,'2024-12-13 00:00:00'); +INSERT INTO public.statements (id,student_id,discipline_id,examiner,try_no,grade,conducted_at) VALUES + (23,24,5,'2807 291263',1,4,'2025-01-01 00:00:00'), + (24,2,1,'42 54 461020',2,7,'2024-08-29 00:00:00'), + (25,18,4,'56 88 730869',2,5,'2024-02-14 00:00:00'), + (26,6,7,'1865 186578',2,3,'2024-06-25 00:00:00'), + (27,34,4,'74 62 888532',2,9,'2024-03-31 00:00:00'), + (28,13,2,'2572 232250',2,9,'2024-08-29 00:00:00'), + (29,21,5,'6804 058468',0,10,'2024-03-22 00:00:00'), + (30,8,3,'7198 532520',2,6,'2024-04-01 00:00:00'), + (31,4,3,'8796 345860',1,6,'2023-12-26 00:00:00'), + (32,31,7,'6645 249719',1,7,'2023-11-26 00:00:00'); +INSERT INTO public.statements (id,student_id,discipline_id,examiner,try_no,grade,conducted_at) VALUES + (34,33,3,'05 31 223774',1,5,'2024-06-22 00:00:00'), + (35,13,5,'2929 884730',2,3,'2024-07-13 00:00:00'), + (36,39,4,'2038 329148',1,5,'2024-11-18 00:00:00'), + (37,4,4,'90 33 837617',1,9,'2025-02-26 00:00:00'), + (38,10,2,'5260 414487',1,6,'2024-05-30 00:00:00'), + (39,19,5,'67 86 529204',1,6,'2023-08-11 00:00:00'), + (40,28,3,'55 68 798377',2,9,'2024-10-27 00:00:00'), + (41,21,4,'13 10 686341',0,10,'2024-06-16 00:00:00'), + (42,28,6,'70 85 739487',0,4,'2023-05-09 00:00:00'), + (43,14,1,'4538 101010',1,3,'2024-06-03 00:00:00'); +INSERT INTO public.statements (id,student_id,discipline_id,examiner,try_no,grade,conducted_at) VALUES + (44,2,7,'4745 578398',2,6,'2024-06-26 00:00:00'), + (45,29,4,'47 25 377050',1,9,'2024-09-14 00:00:00'), + (46,40,6,'8220 975187',2,8,'2023-06-29 00:00:00'), + (47,23,2,'01 88 788405',1,5,'2025-03-06 00:00:00'), + (49,8,2,'0747 164868',1,7,'2023-10-16 00:00:00'), + (51,1,4,'14 65 533037',2,8,'2024-02-21 00:00:00'), + (52,8,2,'0471 410584',1,9,'2024-11-05 00:00:00'), + (53,30,5,'6135 615311',1,4,'2024-07-21 00:00:00'), + (54,20,6,'21 49 792684',2,9,'2023-10-17 00:00:00'), + (55,9,4,'5939 316202',2,8,'2024-03-12 00:00:00'); +INSERT INTO public.statements (id,student_id,discipline_id,examiner,try_no,grade,conducted_at) VALUES + (56,13,5,'6645 249719',1,3,'2023-08-08 00:00:00'), + (58,30,1,'13 10 686341',2,4,'2024-02-24 00:00:00'), + (59,33,5,'67 91 733727',2,6,'2023-07-17 00:00:00'), + (60,1,6,'13 36 978371',0,9,'2023-04-30 00:00:00'), + (61,9,4,'65 74 991657',2,4,'2024-03-12 00:00:00'), + (62,29,1,'4842 253548',2,7,'2024-08-10 00:00:00'), + (63,40,7,'0979 857801',2,6,'2024-09-12 00:00:00'), + (64,17,5,'6645 249719',0,9,'2023-10-01 00:00:00'), + (65,32,3,'5232 128471',1,6,'2024-12-04 00:00:00'), + (66,2,7,'03 11 214520',2,3,'2025-01-27 00:00:00'); +INSERT INTO public.statements (id,student_id,discipline_id,examiner,try_no,grade,conducted_at) VALUES + (67,24,1,'2694 149771',0,10,'2023-12-16 00:00:00'), + (68,3,1,'8120 358749',1,7,'2023-11-09 00:00:00'), + (69,5,2,'41 62 923519',1,3,'2025-01-03 00:00:00'), + (70,30,4,'24 79 757638',2,8,'2024-04-29 00:00:00'), + (71,23,7,'0986 685929',1,7,'2024-02-08 00:00:00'), + (72,32,1,'5932 720119',0,9,'2023-12-13 00:00:00'), + (73,34,4,'5791 023528',2,3,'2024-10-10 00:00:00'), + (74,33,5,'1865 485550',2,8,'2024-04-19 00:00:00'), + (75,24,1,'7524 941314',2,9,'2024-04-28 00:00:00'), + (76,3,4,'9284 219435',2,7,'2024-08-21 00:00:00'); +INSERT INTO public.statements (id,student_id,discipline_id,examiner,try_no,grade,conducted_at) VALUES + (77,21,4,'2195 879864',2,7,'2025-02-19 00:00:00'), + (78,36,5,'7622 454390',2,4,'2025-02-27 00:00:00'), + (79,23,7,'6421 921389',2,6,'2024-10-20 00:00:00'), + (80,39,3,'87 29 846893',0,9,'2024-11-20 00:00:00'), + (81,24,1,'19 94 971594',1,8,'2024-09-23 00:00:00'), + (82,30,7,'5932 720119',0,4,'2023-06-16 00:00:00'), + (83,37,5,'0352 615058',2,8,'2024-08-16 00:00:00'), + (84,24,6,'5448 344899',1,4,'2025-02-08 00:00:00'), + (85,32,3,'09 19 738816',0,3,'2024-03-22 00:00:00'), + (86,40,3,'93 60 860024',1,5,'2023-10-07 00:00:00'); +INSERT INTO public.statements (id,student_id,discipline_id,examiner,try_no,grade,conducted_at) VALUES + (87,9,6,'21 79 666967',1,10,'2024-07-07 00:00:00'), + (88,34,2,'2694 149771',0,3,'2023-03-31 00:00:00'), + (89,31,7,'56 91 395840',0,10,'2024-10-28 00:00:00'), + (90,5,4,'01 88 788405',1,4,'2025-01-09 00:00:00'), + (91,29,7,'93 45 648223',2,7,'2024-11-06 00:00:00'), + (92,22,3,'8220 975187',0,7,'2024-10-10 00:00:00'), + (93,33,7,'5538 454422',0,9,'2024-09-28 00:00:00'), + (94,3,5,'40 05 425729',1,10,'2023-05-03 00:00:00'), + (95,1,6,'46 55 985853',1,10,'2024-01-17 00:00:00'), + (96,33,7,'00 69 431964',2,4,'2024-06-07 00:00:00'); +INSERT INTO public.statements (id,student_id,discipline_id,examiner,try_no,grade,conducted_at) VALUES + (97,34,7,'7198 532520',0,3,'2024-06-27 00:00:00'), + (98,33,6,'60 46 277412',2,7,'2025-01-05 00:00:00'), + (99,19,5,'70 85 739487',1,8,'2023-12-14 00:00:00'), + (100,14,1,'0471 410584',2,3,'2025-02-27 00:00:00'), + (101,25,1,'7215 075977',1,6,'2024-12-25 00:00:00'), + (102,4,3,'16 13 395483',1,9,'2024-07-19 00:00:00'), + (103,8,6,'4538 101010',1,8,'2025-02-06 00:00:00'), + (104,4,5,'23 19 653876',2,9,'2023-08-01 00:00:00'), + (105,6,5,'0563 310219',2,10,'2024-06-09 00:00:00'), + (106,35,4,'65 31 356360',1,10,'2023-04-15 00:00:00'); +INSERT INTO public.statements (id,student_id,discipline_id,examiner,try_no,grade,conducted_at) VALUES + (108,22,5,'4045 341331',2,5,'2023-06-07 00:00:00'), + (109,25,3,'24 41 226828',1,7,'2024-04-08 00:00:00'), + (110,26,1,'81 53 440895',2,9,'2024-12-21 00:00:00'), + (111,29,5,'93 88 085011',0,9,'2023-12-09 00:00:00'), + (112,33,3,'7198 532520',0,4,'2024-09-23 00:00:00'), + (113,1,3,'2226 038971',1,3,'2023-04-04 00:00:00'), + (114,28,2,'21 49 792684',2,9,'2025-03-25 00:00:00'), + (115,14,1,'67 91 733727',2,10,'2023-07-18 00:00:00'), + (116,38,4,'38 93 084766',1,8,'2023-07-21 00:00:00'), + (117,25,6,'1459 194290',0,8,'2023-06-13 00:00:00'); +INSERT INTO public.statements (id,student_id,discipline_id,examiner,try_no,grade,conducted_at) VALUES + (118,2,2,'18 33 741601',2,5,'2023-10-04 00:00:00'), + (119,31,2,'4739 983444',1,4,'2025-01-25 00:00:00'), + (120,5,7,'0471 410584',1,9,'2024-12-31 00:00:00'), + (121,19,1,'0601 526151',2,8,'2023-04-19 00:00:00'), + (122,4,3,'1241 163365',1,3,'2025-03-20 00:00:00'), + (123,1,3,'3909 242342',2,7,'2023-10-30 00:00:00'), + (124,32,6,'91 80 692064',0,6,'2023-07-26 00:00:00'), + (125,25,3,'68 03 790897',2,10,'2024-06-18 00:00:00'), + (126,37,4,'73 39 853731',0,4,'2024-05-01 00:00:00'), + (127,13,4,'8471 027260',1,10,'2023-04-29 00:00:00'); +INSERT INTO public.statements (id,student_id,discipline_id,examiner,try_no,grade,conducted_at) VALUES + (128,32,5,'1865 485550',2,10,'2025-01-13 00:00:00'), + (130,33,1,'56 75 787348',0,4,'2023-04-01 00:00:00'), + (131,34,6,'0311 211995',1,10,'2023-12-23 00:00:00'), + (133,31,4,'09 12 724570',0,5,'2024-09-29 00:00:00'), + (135,37,1,'35 92 681242',2,9,'2024-05-20 00:00:00'), + (136,24,3,'62 63 001065',1,9,'2024-09-02 00:00:00'), + (137,40,2,'6219 258173',1,9,'2023-08-09 00:00:00'), + (138,16,6,'9904 233424',2,4,'2025-01-15 00:00:00'), + (139,31,2,'1067 399605',0,9,'2024-08-08 00:00:00'), + (140,40,4,'3403 092806',1,4,'2024-04-30 00:00:00'); +INSERT INTO public.statements (id,student_id,discipline_id,examiner,try_no,grade,conducted_at) VALUES + (141,33,2,'8471 027260',2,8,'2024-01-23 00:00:00'), + (142,26,4,'15 22 773802',1,3,'2024-03-22 00:00:00'), + (143,19,4,'7702 425444',2,6,'2024-10-12 00:00:00'), + (144,7,7,'6027 662499',0,6,'2023-08-24 00:00:00'), + (145,38,1,'4842 253548',1,6,'2024-05-08 00:00:00'), + (147,25,3,'1241 163365',2,10,'2023-09-12 00:00:00'), + (148,35,1,'47 50 548674',1,3,'2023-05-15 00:00:00'), + (149,21,1,'7327 146343',0,7,'2024-10-08 00:00:00'), + (150,35,7,'62 63 001065',2,10,'2025-03-25 00:00:00'), + (151,26,3,'13 10 686341',0,6,'2023-05-11 00:00:00'); +INSERT INTO public.statements (id,student_id,discipline_id,examiner,try_no,grade,conducted_at) VALUES + (152,1,3,'6421 921389',0,7,'2023-07-23 00:00:00'), + (153,34,1,'99 95 325957',2,3,'2023-04-17 00:00:00'), + (154,38,4,'4739 983444',2,9,'2023-07-06 00:00:00'), + (155,22,4,'8209 142250',0,4,'2025-03-18 00:00:00'), + (156,17,3,'78 76 778037',0,7,'2023-08-25 00:00:00'), + (157,39,6,'1767 205274',0,10,'2024-03-22 00:00:00'), + (158,9,7,'02 77 110497',1,10,'2023-04-21 00:00:00'), + (159,35,1,'21 49 792684',0,8,'2024-07-16 00:00:00'), + (160,16,6,'0398 387328',1,3,'2024-03-15 00:00:00'), + (161,40,2,'28 36 777335',1,7,'2023-10-26 00:00:00'); +INSERT INTO public.statements (id,student_id,discipline_id,examiner,try_no,grade,conducted_at) VALUES + (162,30,5,'8120 358749',0,6,'2024-03-14 00:00:00'), + (163,18,4,'5685 462175',1,5,'2024-11-08 00:00:00'), + (164,2,7,'2943 975817',1,10,'2024-06-17 00:00:00'), + (165,34,3,'8506 008038',0,7,'2024-10-25 00:00:00'), + (166,6,1,'49 25 037018',1,7,'2024-09-17 00:00:00'), + (167,1,6,'17 94 890444',0,7,'2024-08-22 00:00:00'), + (168,16,7,'2195 879864',2,4,'2024-02-26 00:00:00'), + (169,17,6,'01 60 939833',0,7,'2024-07-11 00:00:00'), + (171,20,5,'13 36 978371',0,3,'2024-10-17 00:00:00'), + (172,36,5,'2840 128377',1,3,'2025-02-02 00:00:00'); +INSERT INTO public.statements (id,student_id,discipline_id,examiner,try_no,grade,conducted_at) VALUES + (173,34,1,'24 79 757638',2,4,'2024-11-23 00:00:00'), + (174,8,2,'90 33 837617',1,9,'2023-09-10 00:00:00'), + (175,1,4,'4745 578398',0,3,'2025-03-05 00:00:00'), + (176,30,6,'14 12 411167',0,4,'2024-06-26 00:00:00'), + (177,25,4,'8889 528101',1,5,'2023-09-05 00:00:00'), + (179,2,5,'21 49 792684',1,4,'2024-10-03 00:00:00'), + (180,13,3,'16 33 850537',1,4,'2023-06-07 00:00:00'), + (181,13,3,'56 33 515799',1,5,'2023-06-12 00:00:00'), + (182,9,5,'91 80 692064',0,5,'2024-05-28 00:00:00'), + (183,7,4,'8220 975187',2,6,'2024-09-19 00:00:00'); +INSERT INTO public.statements (id,student_id,discipline_id,examiner,try_no,grade,conducted_at) VALUES + (184,37,2,'9985 073481',2,10,'2023-08-24 00:00:00'), + (185,35,2,'3189 996321',1,9,'2024-11-14 00:00:00'), + (186,19,2,'73 39 853731',2,4,'2023-06-17 00:00:00'), + (187,37,6,'2696 955299',2,7,'2023-11-12 00:00:00'), + (188,29,1,'3359 661291',1,9,'2023-08-09 00:00:00'), + (189,32,1,'09 12 724570',2,8,'2024-08-29 00:00:00'), + (190,8,5,'12 74 277670',0,9,'2023-11-01 00:00:00'), + (191,21,6,'2124 144385',2,7,'2024-09-30 00:00:00'), + (192,9,4,'2226 038971',0,4,'2024-01-09 00:00:00'), + (193,22,2,'0953 423173',2,6,'2024-01-23 00:00:00'); +INSERT INTO public.statements (id,student_id,discipline_id,examiner,try_no,grade,conducted_at) VALUES + (194,18,2,'8471 027260',1,4,'2024-03-11 00:00:00'), + (195,7,3,'71 33 082365',0,10,'2025-01-28 00:00:00'), + (196,15,7,'1261 343531',1,5,'2024-04-29 00:00:00'), + (197,3,6,'21 79 666967',0,4,'2025-01-06 00:00:00'), + (198,32,4,'1865 186578',2,7,'2024-11-07 00:00:00'), + (199,6,3,'49 25 037018',2,4,'2024-07-28 00:00:00'), + (200,17,1,'1159 327403',1,10,'2025-02-25 00:00:00'), + (202,21,3,'9710 721027',1,9,'2023-09-22 00:00:00'), + (203,6,7,'01 89 887243',0,5,'2024-01-01 00:00:00'), + (204,19,7,'78 76 778037',0,5,'2024-10-03 00:00:00'); +INSERT INTO public.statements (id,student_id,discipline_id,examiner,try_no,grade,conducted_at) VALUES + (205,38,5,'4538 101010',2,9,'2023-09-13 00:00:00'), + (206,6,1,'77 40 249009',2,7,'2024-04-09 00:00:00'), + (207,13,3,'62 63 001065',0,9,'2024-10-24 00:00:00'), + (208,23,3,'81 53 440895',1,7,'2024-02-04 00:00:00'), + (209,22,2,'99 95 325957',0,5,'2024-02-17 00:00:00'), + (210,16,3,'46 29 841856',0,4,'2024-04-15 00:00:00'), + (211,17,2,'4045 341331',0,9,'2025-02-15 00:00:00'), + (212,17,4,'1159 327403',1,3,'2023-09-26 00:00:00'), + (213,6,3,'5411 513883',0,8,'2023-05-23 00:00:00'), + (214,4,6,'45 00 420278',0,10,'2023-07-23 00:00:00'); +INSERT INTO public.statements (id,student_id,discipline_id,examiner,try_no,grade,conducted_at) VALUES + (215,22,5,'46 29 841856',2,5,'2023-09-22 00:00:00'), + (216,19,5,'0531 532142',2,3,'2023-05-26 00:00:00'), + (217,29,2,'6645 249719',1,7,'2024-04-20 00:00:00'), + (218,18,1,'8209 142250',1,3,'2023-12-02 00:00:00'), + (219,13,4,'2118 057268',0,4,'2024-03-23 00:00:00'), + (220,31,5,'0398 387328',0,10,'2023-07-11 00:00:00'), + (221,28,7,'4045 341331',2,8,'2024-02-13 00:00:00'), + (222,24,4,'2195 879864',2,6,'2024-11-04 00:00:00'), + (223,16,5,'12 98 859021',0,10,'2024-04-28 00:00:00'), + (224,30,5,'8209 142250',1,3,'2024-06-28 00:00:00'); +INSERT INTO public.statements (id,student_id,discipline_id,examiner,try_no,grade,conducted_at) VALUES + (225,14,4,'5669 391400',1,8,'2023-05-05 00:00:00'), + (226,33,2,'71 33 082365',0,6,'2023-08-01 00:00:00'), + (227,6,2,'2118 057268',0,7,'2023-09-07 00:00:00'), + (229,31,2,'58 93 894235',0,10,'2023-11-05 00:00:00'), + (230,1,7,'6534 689404',2,7,'2023-08-01 00:00:00'), + (231,31,7,'1865 485550',0,3,'2023-06-11 00:00:00'), + (232,17,2,'07 75 264446',0,5,'2023-06-19 00:00:00'), + (233,24,3,'12 74 277670',1,10,'2024-11-04 00:00:00'), + (234,8,6,'5880 740421',1,6,'2023-10-07 00:00:00'), + (235,37,5,'45 29 173284',1,10,'2024-10-08 00:00:00'); +INSERT INTO public.statements (id,student_id,discipline_id,examiner,try_no,grade,conducted_at) VALUES + (236,2,6,'8220 975187',1,7,'2023-05-05 00:00:00'), + (237,19,4,'18 99 634606',2,4,'2024-02-16 00:00:00'), + (238,39,1,'5791 023528',1,3,'2024-06-24 00:00:00'), + (239,30,5,'8816 094109',0,4,'2023-04-24 00:00:00'), + (240,15,7,'8122 960441',2,5,'2023-05-21 00:00:00'), + (241,28,1,'2257 674762',1,3,'2023-08-21 00:00:00'), + (242,16,6,'55 50 725905',0,5,'2023-10-15 00:00:00'), + (243,34,2,'9440 786435',0,7,'2023-11-14 00:00:00'), + (244,9,3,'0352 615058',1,6,'2024-06-21 00:00:00'), + (245,33,3,'55 14 367385',1,5,'2024-09-15 00:00:00'); +INSERT INTO public.statements (id,student_id,discipline_id,examiner,try_no,grade,conducted_at) VALUES + (246,24,5,'7003 225771',0,7,'2023-07-08 00:00:00'), + (247,20,7,'58 93 894235',0,4,'2024-02-23 00:00:00'), + (248,16,5,'8816 094109',1,8,'2023-09-16 00:00:00'), + (249,26,2,'21 79 666967',2,7,'2024-06-21 00:00:00'), + (250,25,3,'85 67 511319',1,6,'2024-08-04 00:00:00'), + (251,13,7,'2124 144385',0,5,'2024-06-16 00:00:00'), + (252,31,7,'26 54 277088',0,7,'2023-07-09 00:00:00'), + (254,35,3,'58 93 894235',1,9,'2024-11-04 00:00:00'), + (255,22,7,'73 39 853731',1,6,'2024-07-05 00:00:00'), + (256,20,1,'59 54 753841',1,3,'2023-10-16 00:00:00'); +INSERT INTO public.statements (id,student_id,discipline_id,examiner,try_no,grade,conducted_at) VALUES + (257,2,4,'0311 211995',2,8,'2023-04-26 00:00:00'), + (258,24,4,'15 35 296111',0,7,'2023-04-07 00:00:00'), + (259,30,3,'2572 232250',0,9,'2024-03-30 00:00:00'), + (260,20,4,'89 16 020101',2,3,'2024-07-22 00:00:00'), + (261,25,2,'9809 969078',1,7,'2023-08-30 00:00:00'), + (262,23,7,'17 61 692403',0,3,'2024-10-19 00:00:00'), + (263,24,7,'85 67 511319',1,3,'2024-06-28 00:00:00'), + (264,21,1,'1368 118017',0,3,'2024-07-20 00:00:00'), + (265,6,3,'2573 662426',2,9,'2024-05-22 00:00:00'), + (266,25,7,'01 11 004709',2,5,'2024-02-20 00:00:00'); +INSERT INTO public.statements (id,student_id,discipline_id,examiner,try_no,grade,conducted_at) VALUES + (267,19,1,'5232 128471',0,6,'2023-10-21 00:00:00'), + (268,7,5,'49 25 037018',2,9,'2024-07-24 00:00:00'), + (269,23,3,'78 76 778037',1,6,'2024-09-20 00:00:00'), + (270,17,5,'1368 118017',1,6,'2024-12-06 00:00:00'), + (271,34,1,'55 14 367385',0,9,'2023-05-25 00:00:00'), + (272,31,7,'8889 528101',1,5,'2025-02-10 00:00:00'), + (273,4,4,'70 03 480096',0,3,'2024-02-10 00:00:00'), + (274,20,1,'4134 569686',0,5,'2024-07-09 00:00:00'), + (275,14,6,'0601 526151',1,9,'2024-09-24 00:00:00'), + (276,20,2,'88 40 345631',1,3,'2023-04-20 00:00:00'); +INSERT INTO public.statements (id,student_id,discipline_id,examiner,try_no,grade,conducted_at) VALUES + (277,1,2,'3189 996321',1,9,'2025-03-04 00:00:00'), + (278,23,1,'75 11 396286',0,3,'2023-11-18 00:00:00'), + (279,18,6,'5806 864894',0,4,'2024-02-26 00:00:00'), + (280,1,4,'78 76 778037',2,3,'2023-09-25 00:00:00'), + (281,18,7,'42 54 461020',0,7,'2025-02-26 00:00:00'), + (282,21,4,'3687 908787',1,9,'2024-05-18 00:00:00'), + (283,7,5,'83 55 051296',0,6,'2023-05-02 00:00:00'), + (284,36,2,'79 28 589726',2,10,'2023-10-29 00:00:00'), + (285,23,7,'4938 783040',1,4,'2023-09-24 00:00:00'), + (286,37,6,'0361 707743',1,8,'2025-01-18 00:00:00'); +INSERT INTO public.statements (id,student_id,discipline_id,examiner,try_no,grade,conducted_at) VALUES + (287,8,4,'12 98 859021',2,4,'2023-06-17 00:00:00'), + (288,35,2,'8816 094109',1,3,'2025-01-07 00:00:00'), + (289,6,4,'02 77 110497',1,9,'2024-06-27 00:00:00'), + (290,34,2,'84 71 589791',0,9,'2023-11-30 00:00:00'), + (291,30,1,'5685 462175',2,6,'2023-04-04 00:00:00'), + (292,30,5,'46 08 590557',1,6,'2023-12-01 00:00:00'), + (293,21,5,'81 35 007814',0,3,'2023-06-03 00:00:00'), + (294,22,5,'2572 232250',0,10,'2023-05-22 00:00:00'), + (295,33,7,'0747 164868',1,7,'2023-11-20 00:00:00'), + (296,25,2,'88 61 315890',2,9,'2024-01-29 00:00:00'); +INSERT INTO public.statements (id,student_id,discipline_id,examiner,try_no,grade,conducted_at) VALUES + (297,33,1,'9861 406255',0,4,'2024-08-14 00:00:00'), + (299,37,2,'45 00 420278',1,10,'2024-02-19 00:00:00'), + (300,1,7,'8713 393896',1,10,'2023-09-24 00:00:00'), + (301,2,2,'93 45 648223',2,5,'2023-09-05 00:00:00'), + (302,7,4,'90 33 837617',1,3,'2024-11-20 00:00:00'), + (303,15,6,'23 19 653876',0,3,'2024-09-04 00:00:00'), + (304,14,3,'5806 864894',1,9,'2025-03-02 00:00:00'), + (305,20,4,'02 77 110497',0,5,'2024-08-27 00:00:00'), + (306,8,5,'4745 578398',1,8,'2024-07-08 00:00:00'), + (307,24,7,'14 07 078597',1,4,'2024-07-23 00:00:00'); +INSERT INTO public.statements (id,student_id,discipline_id,examiner,try_no,grade,conducted_at) VALUES + (308,23,5,'41 62 923519',1,10,'2024-02-25 00:00:00'), + (309,33,7,'4045 341331',2,4,'2023-11-19 00:00:00'), + (310,1,2,'23 22 682149',2,8,'2024-10-02 00:00:00'), + (312,30,7,'37 79 934242',1,7,'2023-08-15 00:00:00'), + (313,7,6,'6527 292857',0,5,'2023-03-30 00:00:00'), + (314,30,4,'35 92 681242',2,10,'2025-01-24 00:00:00'), + (315,8,5,'94 42 402234',2,6,'2024-03-13 00:00:00'), + (316,36,3,'93 60 860024',2,4,'2023-05-12 00:00:00'), + (317,31,2,'8122 960441',1,5,'2023-12-19 00:00:00'), + (318,19,1,'99 70 771477',2,8,'2024-07-30 00:00:00'); +INSERT INTO public.statements (id,student_id,discipline_id,examiner,try_no,grade,conducted_at) VALUES + (319,16,7,'6421 921389',1,7,'2025-01-29 00:00:00'), + (320,34,7,'6027 662499',2,4,'2023-10-07 00:00:00'), + (321,17,7,'12 31 046933',2,8,'2023-10-23 00:00:00'), + (322,39,1,'5306 593385',0,7,'2023-04-02 00:00:00'), + (323,22,7,'99 70 771477',2,7,'2024-04-15 00:00:00'), + (324,21,2,'1261 343531',1,6,'2024-10-07 00:00:00'), + (326,22,6,'55 52 044226',0,7,'2024-06-27 00:00:00'), + (327,31,1,'1972 649748',1,7,'2025-01-11 00:00:00'), + (328,6,3,'52 62 746568',1,10,'2023-11-20 00:00:00'), + (329,4,6,'64 16 671071',1,9,'2023-10-23 00:00:00'); +INSERT INTO public.statements (id,student_id,discipline_id,examiner,try_no,grade,conducted_at) VALUES + (330,19,4,'40 35 788599',1,8,'2023-04-18 00:00:00'), + (331,36,2,'3359 661291',1,5,'2025-01-08 00:00:00'), + (332,1,5,'2761 119404',1,3,'2025-02-12 00:00:00'), + (333,28,4,'41 62 923519',2,4,'2023-06-12 00:00:00'), + (334,22,2,'8122 960441',2,7,'2024-10-20 00:00:00'), + (335,39,5,'93 45 648223',2,3,'2024-06-16 00:00:00'), + (336,32,6,'63 56 246295',1,6,'2024-06-20 00:00:00'), + (337,39,3,'73 39 853731',1,6,'2024-02-18 00:00:00'), + (338,8,5,'14 53 754016',1,3,'2023-08-21 00:00:00'), + (339,2,7,'7065 013387',0,10,'2024-09-23 00:00:00'); +INSERT INTO public.statements (id,student_id,discipline_id,examiner,try_no,grade,conducted_at) VALUES + (340,9,2,'49 25 037018',2,9,'2025-03-24 00:00:00'), + (342,8,3,'56 58 064920',1,4,'2024-10-12 00:00:00'), + (343,17,4,'78 50 275927',0,3,'2024-05-22 00:00:00'), + (344,37,7,'0038 000768',1,9,'2023-10-19 00:00:00'), + (345,39,1,'65 16 370520',0,6,'2023-07-10 00:00:00'), + (346,30,6,'47 47 425075',2,9,'2024-04-14 00:00:00'), + (347,31,7,'77 40 249009',0,9,'2024-06-24 00:00:00'), + (348,31,6,'56 88 730869',2,7,'2024-11-09 00:00:00'), + (349,10,5,'19 86 057462',1,6,'2025-03-26 00:00:00'), + (350,5,4,'38 93 084766',0,9,'2024-12-08 00:00:00'); +INSERT INTO public.statements (id,student_id,discipline_id,examiner,try_no,grade,conducted_at) VALUES + (351,8,1,'15 64 047497',2,4,'2023-11-15 00:00:00'), + (352,16,6,'87 85 806911',1,8,'2024-08-02 00:00:00'), + (353,36,7,'1241 163365',0,4,'2023-06-07 00:00:00'), + (354,24,4,'81 35 007814',1,4,'2024-09-29 00:00:00'), + (355,14,6,'99 95 325957',2,6,'2024-07-01 00:00:00'), + (356,13,5,'53 04 271612',0,7,'2023-08-02 00:00:00'), + (358,14,6,'12 98 859021',2,3,'2023-09-06 00:00:00'), + (359,13,1,'7622 454390',0,9,'2023-07-11 00:00:00'), + (360,6,7,'9679 528613',0,10,'2023-09-02 00:00:00'), + (361,38,5,'9861 406255',2,4,'2024-08-12 00:00:00'); +INSERT INTO public.statements (id,student_id,discipline_id,examiner,try_no,grade,conducted_at) VALUES + (362,28,7,'82 24 535742',1,6,'2024-06-13 00:00:00'), + (363,34,6,'6844 054935',2,7,'2023-08-28 00:00:00'), + (364,37,5,'23 19 653876',0,5,'2025-03-14 00:00:00'), + (365,22,5,'01 60 939833',2,6,'2024-10-13 00:00:00'), + (366,15,4,'3687 908787',2,3,'2025-03-11 00:00:00'), + (367,14,7,'4745 578398',1,8,'2023-05-25 00:00:00'), + (368,29,7,'2038 329148',1,7,'2024-05-04 00:00:00'), + (369,33,2,'55 52 044226',0,6,'2024-06-24 00:00:00'), + (371,18,2,'16 13 395483',2,6,'2023-12-20 00:00:00'), + (372,17,4,'9424 455530',1,10,'2024-05-29 00:00:00'); +INSERT INTO public.statements (id,student_id,discipline_id,examiner,try_no,grade,conducted_at) VALUES + (373,39,5,'24 79 757638',2,8,'2023-08-21 00:00:00'), + (374,32,3,'14 65 806821',2,7,'2023-08-02 00:00:00'), + (375,23,4,'5448 344899',0,5,'2023-06-19 00:00:00'), + (377,3,2,'1865 485550',2,10,'2024-09-28 00:00:00'), + (378,40,5,'6027 662499',1,5,'2023-05-09 00:00:00'), + (379,1,4,'03 11 214520',2,5,'2023-09-16 00:00:00'), + (380,5,4,'14 65 806821',1,3,'2025-01-07 00:00:00'), + (381,33,2,'59 85 115604',0,5,'2024-09-17 00:00:00'), + (382,25,3,'6645 249719',2,9,'2023-06-04 00:00:00'), + (383,28,2,'20 28 857767',1,9,'2024-08-24 00:00:00'); +INSERT INTO public.statements (id,student_id,discipline_id,examiner,try_no,grade,conducted_at) VALUES + (384,19,3,'5538 454422',1,9,'2024-05-27 00:00:00'), + (385,23,5,'14 07 078597',0,10,'2023-12-06 00:00:00'), + (386,15,6,'24 41 226828',2,8,'2024-04-22 00:00:00'), + (387,39,5,'6844 054935',1,9,'2023-08-04 00:00:00'), + (388,30,1,'00 69 431964',2,8,'2023-12-14 00:00:00'), + (389,14,5,'85 67 511319',0,10,'2023-10-19 00:00:00'), + (390,13,3,'5791 023528',2,4,'2024-03-02 00:00:00'), + (391,35,5,'01 60 939833',0,3,'2023-11-16 00:00:00'), + (392,32,3,'47 25 377050',0,8,'2024-03-26 00:00:00'), + (393,14,5,'41 62 923519',0,5,'2024-05-29 00:00:00'); +INSERT INTO public.statements (id,student_id,discipline_id,examiner,try_no,grade,conducted_at) VALUES + (394,34,4,'2526 907433',0,7,'2024-07-23 00:00:00'), + (395,5,4,'46 08 590557',2,10,'2024-12-14 00:00:00'), + (396,24,1,'1261 343531',2,10,'2024-06-04 00:00:00'), + (397,10,1,'0601 526151',2,3,'2024-08-30 00:00:00'), + (398,25,7,'5260 414487',0,8,'2024-05-24 00:00:00'), + (399,13,2,'8120 358749',2,3,'2024-04-01 00:00:00'), + (400,15,6,'2257 674762',2,9,'2023-06-17 00:00:00'), + (401,29,1,'40 05 425729',1,6,'2023-08-20 00:00:00'), + (403,9,5,'8525 241311',2,6,'2024-07-05 00:00:00'), + (404,29,3,'8122 960441',0,8,'2024-10-08 00:00:00'); +INSERT INTO public.statements (id,student_id,discipline_id,examiner,try_no,grade,conducted_at) VALUES + (406,35,5,'0979 857801',1,9,'2024-07-24 00:00:00'), + (407,35,2,'9440 786435',0,9,'2024-06-14 00:00:00'), + (408,33,5,'99 70 771477',2,3,'2023-04-30 00:00:00'), + (409,31,6,'21 79 666967',2,4,'2024-08-16 00:00:00'), + (411,40,2,'6534 689404',1,7,'2023-04-17 00:00:00'), + (413,23,1,'67 91 733727',1,5,'2025-01-13 00:00:00'), + (414,15,7,'8249 411701',1,10,'2024-03-22 00:00:00'), + (415,9,6,'14 65 806821',1,8,'2023-11-17 00:00:00'), + (417,21,2,'2694 149771',2,4,'2024-03-17 00:00:00'), + (418,29,4,'12 31 046933',2,4,'2024-04-14 00:00:00'); +INSERT INTO public.statements (id,student_id,discipline_id,examiner,try_no,grade,conducted_at) VALUES + (419,6,6,'41 99 760015',0,7,'2023-11-30 00:00:00'), + (420,26,6,'4045 341331',2,4,'2025-01-11 00:00:00'), + (421,14,3,'32 29 274400',0,5,'2024-01-26 00:00:00'), + (422,4,6,'4134 569686',0,5,'2025-01-18 00:00:00'), + (423,34,4,'15 64 047497',1,3,'2023-08-10 00:00:00'), + (424,36,4,'4045 341331',1,5,'2023-04-29 00:00:00'), + (425,40,3,'15 22 773802',0,8,'2023-05-30 00:00:00'), + (426,15,3,'4842 253548',1,5,'2024-03-22 00:00:00'), + (427,30,4,'4153 099823',2,10,'2024-07-08 00:00:00'), + (428,18,4,'56 58 064920',2,10,'2024-12-24 00:00:00'); +INSERT INTO public.statements (id,student_id,discipline_id,examiner,try_no,grade,conducted_at) VALUES + (429,1,3,'72 69 218586',0,6,'2025-01-21 00:00:00'), + (430,34,3,'5806 864894',1,3,'2023-04-19 00:00:00'), + (431,20,4,'4745 578398',0,7,'2024-08-08 00:00:00'), + (432,6,1,'36 91 902164',0,8,'2024-05-27 00:00:00'), + (433,34,3,'94 42 402234',0,9,'2024-06-24 00:00:00'), + (434,21,5,'0398 387328',0,4,'2024-08-12 00:00:00'), + (435,2,6,'9904 233424',2,10,'2025-01-10 00:00:00'), + (436,6,1,'8506 008038',1,6,'2024-07-09 00:00:00'), + (437,34,6,'36 91 902164',1,7,'2024-09-09 00:00:00'), + (438,18,1,'56 58 064920',2,9,'2024-06-10 00:00:00'); +INSERT INTO public.statements (id,student_id,discipline_id,examiner,try_no,grade,conducted_at) VALUES + (439,40,5,'7702 425444',1,9,'2023-08-08 00:00:00'), + (440,25,7,'0986 685929',1,8,'2023-10-19 00:00:00'), + (441,14,1,'6296 899862',1,6,'2024-03-05 00:00:00'), + (442,38,2,'1044 943284',1,5,'2023-10-23 00:00:00'), + (443,3,5,'5232 128471',1,5,'2024-07-23 00:00:00'), + (444,13,2,'18 99 634606',0,8,'2024-10-24 00:00:00'), + (445,9,3,'46 55 985853',0,10,'2024-02-15 00:00:00'), + (446,29,4,'77 40 249009',2,8,'2024-02-11 00:00:00'), + (447,1,4,'6160 369983',2,5,'2025-01-16 00:00:00'), + (448,20,5,'18 99 634606',2,5,'2024-11-26 00:00:00'); +INSERT INTO public.statements (id,student_id,discipline_id,examiner,try_no,grade,conducted_at) VALUES + (449,3,2,'8471 027260',1,10,'2023-10-09 00:00:00'), + (451,32,5,'14 12 411167',1,6,'2023-04-11 00:00:00'), + (452,33,1,'2761 119404',1,9,'2023-09-06 00:00:00'), + (453,26,5,'55 52 044226',1,9,'2023-05-21 00:00:00'), + (454,7,5,'3351 401650',0,9,'2023-07-02 00:00:00'), + (455,4,6,'1067 399605',2,6,'2024-01-03 00:00:00'), + (456,35,4,'8467 963436',2,9,'2023-11-26 00:00:00'), + (457,29,4,'49 25 037018',1,3,'2024-02-24 00:00:00'), + (458,6,4,'99 95 325957',2,4,'2024-05-01 00:00:00'), + (459,26,7,'5880 740421',0,5,'2023-07-30 00:00:00'); +INSERT INTO public.statements (id,student_id,discipline_id,examiner,try_no,grade,conducted_at) VALUES + (460,9,6,'9710 721027',1,3,'2024-11-13 00:00:00'), + (461,36,1,'3351 401650',2,5,'2024-05-18 00:00:00'), + (462,17,3,'1241 163365',2,9,'2024-01-15 00:00:00'), + (463,6,6,'1992 996145',1,7,'2023-09-07 00:00:00'), + (464,30,6,'0747 164868',0,8,'2023-06-16 00:00:00'), + (465,6,3,'6645 249719',0,6,'2025-02-19 00:00:00'), + (466,1,7,'13 28 107942',1,3,'2024-02-05 00:00:00'), + (467,39,6,'46 08 590557',1,3,'2024-10-14 00:00:00'), + (468,6,7,'37 79 934242',1,9,'2023-10-22 00:00:00'), + (469,40,1,'45 29 173284',0,3,'2023-10-06 00:00:00'); +INSERT INTO public.statements (id,student_id,discipline_id,examiner,try_no,grade,conducted_at) VALUES + (470,38,3,'2569 140494',2,4,'2024-12-24 00:00:00'), + (471,9,3,'2569 140494',1,8,'2024-01-21 00:00:00'), + (472,15,3,'40 05 425729',2,5,'2024-07-08 00:00:00'), + (474,2,4,'05 31 223774',0,8,'2024-11-24 00:00:00'), + (475,21,5,'4153 099823',0,10,'2025-01-12 00:00:00'), + (476,30,3,'09 12 724570',2,6,'2023-06-07 00:00:00'), + (477,5,7,'18 99 634606',1,6,'2024-02-13 00:00:00'), + (478,22,5,'0311 211995',0,3,'2024-08-11 00:00:00'), + (480,31,1,'2526 907433',1,7,'2024-05-16 00:00:00'), + (481,36,1,'4045 341331',1,10,'2024-07-28 00:00:00'); +INSERT INTO public.statements (id,student_id,discipline_id,examiner,try_no,grade,conducted_at) VALUES + (484,19,7,'7524 941314',0,8,'2023-06-24 00:00:00'), + (485,32,1,'63 56 246295',2,8,'2025-02-08 00:00:00'), + (486,32,4,'1159 327403',0,4,'2023-11-06 00:00:00'), + (488,13,5,'3687 908787',2,7,'2024-08-12 00:00:00'), + (489,30,4,'41 99 760015',0,7,'2023-09-14 00:00:00'), + (490,29,6,'2765 941976',0,5,'2024-04-17 00:00:00'), + (491,22,4,'82 24 535742',2,3,'2024-12-19 00:00:00'), + (493,21,7,'8058 663467',1,6,'2025-02-11 00:00:00'), + (494,34,4,'5939 316202',2,10,'2023-09-05 00:00:00'), + (495,1,1,'8220 975187',2,5,'2024-02-24 00:00:00'); +INSERT INTO public.statements (id,student_id,discipline_id,examiner,try_no,grade,conducted_at) VALUES + (497,29,7,'3359 661291',0,10,'2024-04-22 00:00:00'), + (498,37,1,'47 50 548674',0,9,'2023-10-22 00:00:00'), + (499,34,1,'9710 721027',1,6,'2024-07-19 00:00:00'), + (500,35,5,'8467 963436',2,5,'2024-07-25 00:00:00'); + + +DO $$ +DECLARE + rec RECORD; + max_id BIGINT; + seq_name TEXT; +BEGIN + FOR rec IN + SELECT table_name, column_name + FROM information_schema.columns + WHERE table_schema = 'public' + AND column_default LIKE 'nextval%' + LOOP + seq_name := pg_get_serial_sequence(rec.table_name, rec.column_name); + EXECUTE format('SELECT COALESCE(MAX(%I), 0) + 1 FROM %I', rec.column_name, rec.table_name) INTO max_id; + EXECUTE format('ALTER SEQUENCE %s RESTART WITH %s', seq_name, max_id); + RAISE NOTICE 'Обновлена последовательность % для таблицы %.%', seq_name, rec.table_name, rec.column_name; + END LOOP; +END $$; \ No newline at end of file diff --git a/docs/funcs_and_procs.sql b/docs/funcs_and_procs.sql new file mode 100644 index 0000000..8d53457 --- /dev/null +++ b/docs/funcs_and_procs.sql @@ -0,0 +1,77 @@ +CREATE OR REPLACE FUNCTION fn_low_enrollment(threshold INTEGER) +RETURNS TABLE( + discipline_id INTEGER, + discipline_name VARCHAR, + department_name VARCHAR, + enrolled BIGINT +) AS $$ +BEGIN + RETURN QUERY + SELECT d.id, + d.name AS discipline_name, + dept.name AS department_name, + COUNT(st.id) AS enrolled + FROM Disciplines d + LEFT JOIN Departments dept ON d.department_id = dept.id + LEFT JOIN Statements st ON st.discipline_id = d.id + GROUP BY d.id, d.name, dept.name + HAVING COUNT(st.id) < threshold; +END; +$$ LANGUAGE plpgsql; + +CREATE OR REPLACE FUNCTION fn_generate_transcript(p_student INTEGER) +RETURNS TEXT +LANGUAGE plpgsql +AS $$ +DECLARE + rec RECORD; + student_info RECORD; + transcript TEXT; +BEGIN + SELECT p.name || ' ' || p.surname AS full_name, + s.group_id, + s.status + INTO student_info + FROM Students s + JOIN Physicals p ON s.person = p.passport_no + WHERE s.id = p_student; + + transcript := 'Transcript for student ' || p_student || E'\n' + || 'Name: ' || student_info.full_name || E'\n' + || 'Group: ' || student_info.group_id || E'\n' + || 'Status: ' || student_info.status || E'\n' || E'\n'; + + FOR rec IN + SELECT d.name AS discipline_name, + st.grade, + to_char(st.conducted_at,'YYYY-MM-DD') AS date + FROM Statements st + JOIN Disciplines d ON st.discipline_id = d.id + WHERE st.student_id = p_student + ORDER BY st.conducted_at + LOOP + transcript := transcript || rec.date || ' - ' || rec.discipline_name || ': ' || rec.grade || E'\n'; + END LOOP; + + RETURN transcript; +END; +$$; + +CREATE OR REPLACE PROCEDURE sp_graduate_by_admission_year(p_year INTEGER) +LANGUAGE plpgsql +AS $$ +DECLARE + rec RECORD; +BEGIN + FOR rec IN + SELECT s.id, g.study_starts + FROM Students s + JOIN Groups g ON s.group_id = g.group_id + WHERE EXTRACT(YEAR FROM g.study_starts) = p_year + AND s.status = 'УЧИТСЯ' + LOOP + INSERT INTO Movement(student_id, type, new_status, issued_at) + VALUES (rec.id, 'ОТЧИСЛЕН', 'ОТЧИСЛЕН', NOW()); + END LOOP; +END; +$$; \ No newline at end of file diff --git a/docs/indexes.sql b/docs/indexes.sql new file mode 100644 index 0000000..4fe370d --- /dev/null +++ b/docs/indexes.sql @@ -0,0 +1,9 @@ +CREATE INDEX idx_physicals_fulltext_name ON Physicals + USING GIN (to_tsvector('russian', name || ' ' || surname)); + +-- GIN (Generalized Inverted Index) хранит для каждой лексемы список указателей на строки, +-- в которых она встречается. Это ускоряет полнотекстовый поиск, так как позволяет быстро +-- находить все документы, содержащие нужные слова, без полного сканирования таблицы. + +CREATE INDEX idx_movement_recent ON Movement(issued_at) + WHERE issued_at >= '2024-09-01'::timestamp; \ No newline at end of file diff --git a/docs/requests.sql b/docs/requests.sql new file mode 100644 index 0000000..9b2fde5 --- /dev/null +++ b/docs/requests.sql @@ -0,0 +1,192 @@ +-- # +-- # "contingent-movement" project; +-- # author: gazakbayev.net +-- # ver: 1.0 +-- # + +-- 1 Студенты с одинаковыми фамилиями + +WITH student_info AS ( + SELECT + s.id as student_id, + p.passport_no, + p.surname, + p.name, + g.group_id, + f.name as faculty_name + FROM Students s + JOIN Physicals p ON s.person = p.passport_no + JOIN Groups g ON s.group_id = g.group_id + JOIN Faculties f ON g.faculty_id = f.id +) +SELECT + a.surname, + a.name as student1_name, + b.name as student2_name, + a.group_id as group1, + b.group_id as group2, + a.faculty_name as faculty1, + b.faculty_name as faculty2 +FROM student_info a +JOIN student_info b ON a.surname = b.surname + AND a.student_id < b.student_id +ORDER BY a.surname, a.name; + +-- 2 Средний балл студентов + +SELECT + s.id AS student_id, + p.name, + p.surname, + ROUND(AVG(st.grade)::numeric, 2) AS average_grade +FROM + Students s +JOIN + Physicals p ON s.person = p.passport_no +LEFT JOIN + Statements st ON s.id = st.student_id +GROUP BY + s.id, p.name, p.surname +ORDER BY + average_grade DESC NULLS LAST; + +-- 3 Топ 5 лучших + +SELECT + s.id, + p.surname, + p.name, + ROUND(AVG(st.grade)::numeric, 2) AS avg_grade, + DENSE_RANK() OVER (ORDER BY AVG(st.grade) DESC) AS rank +FROM Students s +JOIN Physicals p ON s.person = p.passport_no +JOIN Statements st ON s.id = st.student_id +GROUP BY s.id, p.surname, p.name +ORDER BY avg_grade DESC +LIMIT 5; + +-- 4 Количества у кафедры дисциплин и студентов + +SELECT + d.name AS department, + COUNT(DISTINCT disc.id) AS discipline_count, + COUNT(DISTINCT s.id) AS student_count +FROM Departments d +LEFT JOIN Disciplines disc ON d.id = disc.department_id +LEFT JOIN Groups g ON d.id = g.department_id +LEFT JOIN Students s ON g.group_id = s.group_id +GROUP BY d.id +HAVING COUNT(DISTINCT s.id) > 0 +ORDER BY student_count DESC; + +-- 5 ФИ обучающихся (статус Учится) + +SELECT + p.surname, + p.name +FROM Students s +JOIN Physicals p ON s.person = p.passport_no +WHERE EXISTS ( + SELECT 1 FROM Statements st + WHERE st.student_id = s.id +) +AND s.status = 'УЧИТСЯ'; + +-- 6 Прогресс изменения среднего балла по студентам + +SELECT + s.id, + p.surname, + p.name, + g.group_id, + st.conducted_at, + st.grade, + AVG(st.grade) OVER (PARTITION BY s.id ORDER BY st.conducted_at + ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS running_avg +FROM Students s +JOIN Physicals p ON s.person = p.passport_no +JOIN Groups g ON s.group_id = g.group_id +JOIN Statements st ON s.id = st.student_id +ORDER BY s.id, st.conducted_at; + +-- 7 Список группы с обучающимися, с указанием оценки успеваемости студента в группе "Ниже среднего" или "Выше среднего" + +WITH group_stats AS ( + SELECT + s.group_id, + AVG(st.grade) AS group_avg + FROM Students s + JOIN Statements st ON s.id = st.student_id + GROUP BY s.group_id +) +SELECT + s.id, + p.surname, + p.name, + g.group_id, + ROUND(AVG(st.grade)::numeric, 2) AS student_avg, + gs.group_avg, + CASE + WHEN AVG(st.grade) > gs.group_avg THEN 'Выше среднего' + WHEN AVG(st.grade) < gs.group_avg THEN 'Ниже среднего' + ELSE 'Средний' + END AS comparison +FROM Students s +JOIN Physicals p ON s.person = p.passport_no +JOIN Groups g ON s.group_id = g.group_id +JOIN Statements st ON s.id = st.student_id +JOIN group_stats gs ON g.group_id = gs.group_id +GROUP BY s.id, p.surname, p.name, g.group_id, gs.group_avg +ORDER BY g.group_id, comparison; + +-- 8 Статистика отчислений по месяцам, основываясь на движении контингента (приказах) +SELECT + DATE_TRUNC('month', m.issued_at) AS month, + COUNT(*) AS dropouts, + SUM(COUNT(*)) OVER (ORDER BY DATE_TRUNC('month', m.issued_at)) AS cumulative_total +FROM Movement m +WHERE m.type = 'ОТЧИСЛЕН' +GROUP BY DATE_TRUNC('month', m.issued_at) +ORDER BY month; + +-- 9 Научные руководители студентов + +SELECT + s.id AS student_id, + p.name AS student_name, + p.surname AS student_surname, + s.supervisor AS supervisor_id, + ph.name AS supervisor_name, + ph.surname AS supervisor_surname +FROM Students s +JOIN Physicals p ON s.person = p.passport_no +LEFT JOIN Supervisors sup ON s.supervisor = sup.person +LEFT JOIN Physicals ph ON sup.person = ph.passport_no +WHERE s.supervisor IS NOT NULL +ORDER BY student_surname; + +-- 10 Вывод преподавателей из ведомости по ФИО, принимающим предметам, средней оценки и уровня халявности: + +SELECT + p.surname AS "Фамилия", + p.name AS "Имя", + STRING_AGG(DISTINCT d.name, ', ' ORDER BY d.name) AS "Принимает дисциплины", + ROUND(AVG(st.grade), 2) AS "Средняя оценка", + CASE + WHEN AVG(st.grade) < 3 THEN 'Не халявный' + WHEN AVG(st.grade) < 5 THEN 'Хороший' + WHEN AVG(st.grade) < 8 THEN 'Халявный' + ELSE 'Ультра халявный' + END AS "Уровень халявности" +FROM + Statements st +JOIN + Physicals p ON st.examiner = p.passport_no +JOIN + Disciplines d ON st.discipline_id = d.id +GROUP BY + p.passport_no, p.surname, p.name +HAVING + COUNT(*) >= 5 +ORDER BY + "Средняя оценка" DESC; \ No newline at end of file diff --git a/docs/schema.sql b/docs/schema.sql new file mode 100644 index 0000000..5e3a217 --- /dev/null +++ b/docs/schema.sql @@ -0,0 +1,126 @@ +-- # +-- # "contingent-movement" project; +-- # author: gazakbayev.net +-- # ver: 1.0 +-- # + +CREATE TABLE Physicals ( + passport_no VARCHAR(30) PRIMARY KEY, + name VARCHAR(255) NOT NULL, + surname VARCHAR(255) NOT NULL, + birthday TIMESTAMP NOT NULL, + phone VARCHAR(20) NOT NULL, + mail VARCHAR(255) NOT NULL, + citizenship VARCHAR(50) NOT NULL, + address VARCHAR(255) NOT NULL, + access_card VARCHAR(20) NOT NULL CHECK (access_card ~ '^[A-F0-9]{2}(:[A-F0-9]{2}){5}$'), + access_level VARCHAR(10) NOT NULL CHECK (access_level IN ('КАМПУС', 'ОБЩЕЖИТИЯ', 'ПОЛНЫЙ')) +); + +CREATE TABLE Supervisors ( + id SERIAL PRIMARY KEY, + person VARCHAR(32) REFERENCES Physicals(passport_no), + experience INTEGER NOT NULL CHECK (experience >= 0), + defended_ratio REAL NOT NULL CHECK (defended_ratio >= 0 AND defended_ratio <= 1), + qualification VARCHAR(30) NOT NULL CHECK (qualification IN ('МЛАДШИЙ НАУЧНЫЙ СОТРУДНИК', 'СТАРШИЙ НАУЧНЫЙ СОТРУДНИК', 'ВЕДУЩИЙ НАУЧНЫЙ СОТРУДНИК', 'ГЛАВНЫЙ НАУЧНЫЙ СОТРУДНИК', 'НАУЧНЫЙ СОТРУДНИК')), + valid_from TIMESTAMP NOT NULL, + valid_to TIMESTAMP +); + +CREATE TABLE Faculties ( + id SERIAL PRIMARY KEY, + name VARCHAR(255) NOT NULL, + acronym VARCHAR(10) NOT NULL, + head VARCHAR(32) NOT NULL REFERENCES Physicals(passport_no), + vice VARCHAR(32) REFERENCES Physicals(passport_no), + address VARCHAR(255) NOT NULL +); + +CREATE TABLE Departments ( + id SERIAL PRIMARY KEY, + name VARCHAR(255) NOT NULL, + acronym VARCHAR(10) NOT NULL, + founded TIMESTAMP NOT NULL, + head VARCHAR(32) NOT NULL REFERENCES Physicals(passport_no), + vice VARCHAR(32) REFERENCES Physicals(passport_no), + secretary VARCHAR(32) REFERENCES Physicals(passport_no), + faculty_id INTEGER REFERENCES Faculties(id) +); + +CREATE TABLE Programs ( + id SERIAL PRIMARY KEY, + specification VARCHAR(20) NOT NULL, + degree VARCHAR(30) NOT NULL CHECK (degree IN ('BACHELOR', 'MAGISTER', 'ASPIRANT')), + name VARCHAR(255) NOT NULL, + parent_id INTEGER REFERENCES Programs(id) +); + +CREATE TABLE Groups ( + group_id VARCHAR(10) PRIMARY KEY CHECK (group_id ~ '^[АБМ]\d{2}-\d{3}[а-я]?$'), + faculty_id INTEGER NOT NULL REFERENCES Faculties(id), + program_id INTEGER NOT NULL REFERENCES Programs(id), + department_id INTEGER REFERENCES Departments(id), + study_starts TIMESTAMP NOT NULL DEFAULT NOW(), + study_ends TIMESTAMP NOT NULL DEFAULT NOW() + INTERVAL '4 years' +); + +CREATE TABLE Students ( + id SERIAL PRIMARY KEY, + person VARCHAR(32) NOT NULL UNIQUE REFERENCES Physicals(passport_no), + group_id VARCHAR(10) NOT NULL REFERENCES Groups(group_id), + supervisor_id INTEGER REFERENCES Supervisors(id), + education_form VARCHAR(255) NOT NULL CHECK (education_form IN ('ОЧНАЯ', 'ЗАОЧНАЯ', 'ВЕЧЕРНЯЯ')), + status VARCHAR(30) NOT NULL CHECK (status IN ('УЧИТСЯ', 'В АКАДЕМИЧЕСКОМ ОТПУСКЕ', 'ОТЧИСЛЕН')) +); + +CREATE TABLE Family ( + id SERIAL PRIMARY KEY, + person VARCHAR(32) NOT NULL REFERENCES Physicals(passport_no), + name VARCHAR(255) NOT NULL, + surname VARCHAR(255) NOT NULL, + kinship VARCHAR(10) NOT NULL CHECK (kinship IN ('MOTHER', 'FATHER', 'BROTHER', 'SISTER', 'ANOTHER')), + phone VARCHAR(20) NOT NULL UNIQUE, + address VARCHAR(255) NOT NULL, + CONSTRAINT unique_student_kinship UNIQUE (person, kinship) +); + +CREATE TABLE Files ( + id SERIAL PRIMARY KEY, + student_id INTEGER NOT NULL REFERENCES Students(id), + name VARCHAR(255) NOT NULL, + description VARCHAR(255) NOT NULL, + extension VARCHAR(5) NOT NULL CHECK (extension IN ('PNG', 'JPEG', 'PDF')), + size NUMERIC(10,2) NOT NULL CHECK (size <= 20), + path VARCHAR(255) NOT NULL UNIQUE, + loaded_at TIMESTAMP NOT NULL DEFAULT NOW() +); + +CREATE TABLE Disciplines ( + id SERIAL PRIMARY KEY, + name VARCHAR(255) NOT NULL, + department_id INTEGER NOT NULL REFERENCES Departments(id), + credit_units INTEGER NOT NULL, + academic_hours INTEGER NOT NULL, + general_hours INTEGER NOT NULL CHECK (general_hours > academic_hours), + is_annual BOOLEAN NOT NULL +); + +CREATE TABLE Statements ( + id SERIAL PRIMARY KEY, + student_id INTEGER NOT NULL REFERENCES Students(id), + discipline_id INTEGER NOT NULL REFERENCES Disciplines(id), + examiner VARCHAR(32) NOT NULL REFERENCES Physicals(passport_no), + try_no INTEGER NOT NULL CHECK (try_no BETWEEN 0 AND 2), + grade INTEGER NOT NULL CHECK (grade BETWEEN 1 AND 10), + conducted_at TIMESTAMP NOT NULL DEFAULT NOW() +); + +CREATE TABLE Movement ( + id SERIAL PRIMARY KEY, + student_id INTEGER NOT NULL REFERENCES Students(id), + type VARCHAR(30) NOT NULL CHECK (type IN ('ЗАЧИСЛЕН', 'ВОССТАНОВЛЕН', 'ОТЧИСЛЕН', 'В АКАДЕМИЧЕСКИЙ ОТПУСК', 'ПЕРЕВОД В ДРУГУЮ ГРУППУ')), + new_group VARCHAR(10) REFERENCES Groups(group_id), + new_status VARCHAR(30) CHECK (new_status IN ('УЧИТСЯ', 'В АКАДЕМИЧЕСКОМ ОТПУСКЕ', 'ОТЧИСЛЕН')), + issued_at TIMESTAMP NOT NULL DEFAULT NOW() +); + diff --git a/docs/triggers.sql b/docs/triggers.sql new file mode 100644 index 0000000..eff9cf0 --- /dev/null +++ b/docs/triggers.sql @@ -0,0 +1,101 @@ +-- Trigger 1 + +CREATE OR REPLACE FUNCTION trg_prevent_group_delete() +RETURNS TRIGGER LANGUAGE plpgsql AS $$ +DECLARE cnt INTEGER; +BEGIN + SELECT COUNT(*) INTO cnt FROM Students WHERE group_id = OLD.group_id AND status = 'УЧИТСЯ'; + IF cnt > 0 THEN + RAISE EXCEPTION 'Cannot delete group %: % active students exist', OLD.group_id, cnt; + END IF; + RETURN OLD; +END; +$$; + +CREATE TRIGGER prevent_group_delete +BEFORE DELETE ON Groups +FOR EACH ROW +EXECUTE PROCEDURE trg_prevent_group_delete(); + +-- Trigger 2 +CREATE OR REPLACE FUNCTION trg_lowercase_mail() +RETURNS TRIGGER LANGUAGE plpgsql AS $$ +BEGIN + NEW.mail := lower(NEW.mail); + RETURN NEW; +END; +$$; + +CREATE TRIGGER lowercase_mail +BEFORE INSERT OR UPDATE ON Physicals +FOR EACH ROW +EXECUTE PROCEDURE trg_lowercase_mail(); + +-- Trigger 3 +CREATE OR REPLACE FUNCTION trg_sync_student_status() +RETURNS TRIGGER LANGUAGE plpgsql AS $$ +BEGIN + UPDATE Students + SET status = NEW.new_status + WHERE id = NEW.student_id; + RETURN NEW; +END; +$$; + +CREATE TRIGGER sync_student_status +AFTER INSERT ON Movement +FOR EACH ROW +EXECUTE PROCEDURE trg_sync_student_status(); + +-- Trigger SCD 2 +CREATE OR REPLACE FUNCTION trg_supervisors_history() +RETURNS trigger AS $$ +BEGIN + NEW.valid_from = NOW(); + INSERT INTO Supervisors ( + person, + experience, + defended_ratio, + qualification, + valid_from, + valid_to + ) VALUES ( + OLD.person, + OLD.experience, + OLD.defended_ratio, + OLD.qualification, + OLD.valid_from, + NOW() + ); + RETURN NEW; +END; +$$ LANGUAGE plpgsql; + +CREATE OR REPLACE TRIGGER trg_supervisors_scd +BEFORE UPDATE ON Supervisors +FOR EACH ROW +EXECUTE PROCEDURE trg_supervisors_history(); + +CREATE OR REPLACE FUNCTION check_unique_supervisor() +RETURNS TRIGGER AS $$ +BEGIN + IF EXISTS ( + SELECT 1 FROM Supervisors + WHERE person = NEW.person + AND experience = NEW.experience + AND defended_ratio = NEW.defended_ratio + AND qualification = NEW.qualification + AND valid_from = NEW.valid_from + AND (valid_to = NEW.valid_to OR (valid_to IS NULL AND NEW.valid_to IS NULL)) + ) THEN + RAISE EXCEPTION 'Дублирующая запись в таблице Supervisors. Все поля (кроме id) должны быть уникальными.'; + END IF; + + RETURN NEW; +END; +$$ LANGUAGE plpgsql; + +CREATE TRIGGER unique_supervisor_trigger +BEFORE INSERT ON Supervisors +FOR EACH ROW +EXECUTE FUNCTION check_unique_supervisor(); \ No newline at end of file diff --git a/docs/views.sql b/docs/views.sql new file mode 100644 index 0000000..1a440de --- /dev/null +++ b/docs/views.sql @@ -0,0 +1,22 @@ +-- STUDENT PERFORMANCE -- +CREATE OR REPLACE VIEW vw_student_performance AS +SELECT s.id AS student_id, + p.name || ' ' || p.surname AS full_name, + s.group_id, + COUNT(st.id) FILTER (WHERE st.grade >= 3) AS passes, + COUNT(st.id) FILTER (WHERE st.grade < 3) AS fails, + ROUND(AVG(st.grade)::numeric, 2) AS avg_grade +FROM Students s +JOIN Physicals p ON s.person = p.passport_no +LEFT JOIN Statements st ON s.id = st.student_id +GROUP BY s.id, p.name, p.surname, s.group_id; + +-- BIRTHDAYS ON THIS MONTH -- +CREATE VIEW vw_birthdays_month AS +SELECT passport_no, + name || ' ' || surname AS full_name, + birthday, + EXTRACT(DAY FROM birthday) AS day_of_month +FROM Physicals +WHERE EXTRACT(MONTH FROM birthday) = EXTRACT(MONTH FROM NOW()) +ORDER BY day_of_month; \ No newline at end of file diff --git a/docs/Концептуальная модель.drawio b/docs/Концептуальная модель.drawio new file mode 100644 index 0000000..8dc4f22 --- /dev/null +++ b/docs/Концептуальная модель.drawio @@ -0,0 +1,110 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/Концептуальная модель.png b/docs/Концептуальная модель.png new file mode 100644 index 0000000..b4f2e86 Binary files /dev/null and b/docs/Концептуальная модель.png differ diff --git a/docs/Логическая модель.dbml b/docs/Логическая модель.dbml new file mode 100644 index 0000000..d1c911e --- /dev/null +++ b/docs/Логическая модель.dbml @@ -0,0 +1,193 @@ +Table Students { + id integer [pk, increment, not null, unique, note: 'Номер студенческого билета'] + person_id integer [not null, unique, note: 'Номер физического лица'] + group varchar [not null, note: 'Номер учебной группы'] + supervisor integer [note: 'Номер научного руководителя'] + education_form varchar [not null, default: 'Очная', note: 'Форма обучения студента'] + status varchar [not null, default: 'Учится', note: 'Статус обучающегося'] +} + +Table Persons { + id integer [pk, increment, not null, unique] + name varchar [not null] + surname varchar [not null] + birthday timestamp [not null] + phone varchar [not null] + mail varchar [default: null] + passport_no varchar [not null] + citizenship varchar [not null] + address varchar [not null] + access_card varchar [not null] + access_level varchar [not null] +} + +Table Groups { + group varchar [pk, not null, unique] + faculty_id integer [not null] + program_id integer [not null] + department_id integer [not null] + study_starts timestamp [not null] + study_ends timestamp [not null] +} + +Table Family { + id integer [pk, increment, not null, unique] + student_id integer [not null] + name varchar [not null] + surname varchar [not null] + kinship varchar [not null, note: 'Степень родства: mthr, fthr, brth, sstr'] + phone varchar [not null] + address varchar [not null] +} + +Table Files { + id integer [pk, increment, not null, unique] + student_id integer [not null] + name varchar [not null] + description varchar [not null] + extension varchar [not null, note: 'available: png, jpeg, pdf'] + size numeric [not null, note: 'size in mb'] + path varchar [not null, note: 'path to file /var/www/student_files/.'] + loaded_at timestamp [not null] +} + +Table Supervisors { + id integer [pk, increment, not null, unique] + person_id integer [not null] + experience integer [not null] + defended_ratio real [not null] + qualification varchar [not null] +} + +Table Movement { + id integer [pk, increment, not null, unique] + student_id integer [not null] + type varchar [not null] + new_group varchar + new_status varchar + issued_at timestamp [not null] +} + +Table Departments { + id integer [pk, increment, not null, unique] + name varchar [not null] + acronym varchar [not null] + founded timestamp [not null] + head integer [not null] + vice integer + secretary integer + faculty_id integer +} + +Table Programs { + id integer [pk, increment, not null, unique] + specification varchar [not null, note: 'Key from Russian register'] + degree varchar [not null] + name varchar [not null] + parent_id integer [not null] +} + +Table Faculties { + id integer [pk, increment, not null, unique] + name varchar [not null] + acronym varchar [not null] + head integer [not null] + vice integer + address varchar [not null] +} + +Table Statements { + id integer [pk, increment, not null, unique] + student_id integer [not null] + discipline_id integer [not null] + examiner_id integer [not null] + try_no integer [not null] + grade integer [not null] + conducted_at timestamp [not null] +} + +Table Disciplines { + id integer [pk, increment, not null, unique] + name varchar [not null] + department_id integer [not null] + credit_units integer [not null] + academic_hours integer [not null] + general_hours integer [not null] + is_annual boolean [not null] +} + +Ref "Студент к физлицу" { + Persons.id - Students.person_id [delete: no action] +} + +Ref "Загружен для" { + Files.student_id > Students.id [delete: no action] +} + +Ref "Руководитель к физлицу" { + Departments.head - Persons.id [delete: no action] +} + +Ref "Заместитель к физлицу" { + Departments.vice - Persons.id [delete: no action] +} + +Ref "Секретарь к физлицу" { + Departments.secretary - Persons.id [delete: no action] +} + +Ref "К научному руководителю" { + Students.supervisor > Supervisors.id [delete: no action] +} + +Ref "В учебной группе" { + Students.group > Groups.group [delete: no action] +} + +Ref "План/программа группы" { + Groups.program_id > Programs.id [delete: no action] +} + +Ref "Группа факультета" { + Groups.faculty_id > Faculties.id [delete: no action] +} + +Ref "Имеет базовую кафедру" { + Groups.department_id > Departments.id [delete: no action] +} + +Ref "Ведомость по студенту" { + Statements.student_id > Students.id [delete: no action] +} + +Ref "Ведомость по дисциплине" { + Statements.discipline_id > Disciplines.id [delete: no action] +} + +Ref "Экзаменатор к физлицу" { + Statements.examiner_id > Persons.id [delete: no action] +} + +Ref "Дисциплина к кафедре" { + Disciplines.department_id > Departments.id [delete: no action] +} + +Ref "Подразделение факультета" { + Departments.faculty_id > Faculties.id [delete: no action] +} + +Ref "Приказ по студенту" { + Movement.student_id > Students.id [delete: no action] +} + +Ref "Научный руководитель к физлицу" { + Supervisors.person_id - Persons.id [delete: no action] +} + +Ref "Дочерний к программе" { + Programs.parent_id - Programs.id [delete: no action] +} + +Ref "Родственник студента" { + Family.student_id > Students.id [delete: no action] +} diff --git a/docs/Логическая модель.jpg b/docs/Логическая модель.jpg new file mode 100644 index 0000000..09c7a66 Binary files /dev/null and b/docs/Логическая модель.jpg differ diff --git a/docs/Физическая модель.pdf b/docs/Физическая модель.pdf new file mode 100644 index 0000000..c023b06 Binary files /dev/null and b/docs/Физическая модель.pdf differ diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..8172958 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,3 @@ +Faker==37.0.1 +psycopg2==2.9.10 +tzdata==2025.1 diff --git a/Защита проекта.pptx b/Защита проекта.pptx new file mode 100644 index 0000000..4554bc7 Binary files /dev/null and b/Защита проекта.pptx differ