Skip to content

feat: editable university directory for profile education - #768

Merged
TThanos3000 merged 3 commits into
devfrom
feature/dev-university-directory
Oct 16, 2026
Merged

TThanos3000 merged 3 commits into
devfrom
feature/dev-university-directory

Conversation

@TThanos3000

@TThanos3000 TThanos3000 commented Oct 4, 2026 •

Copy link
Copy Markdown
Collaborator

В форме образования нужен выбор учреждения с поиском и редактируемый в Django-админке справочник. Добавлен отдельный справочник вузов с названиями, сокращениями, городом, активностью и ссылками на источники; публичный /auth/universities/ возвращает доступные записи с поиском и пагинацией. Фронтенд предлагает выбор из списка и «Другое» для собственного названия.

Образование пользователей продолжает хранить исходное название строкой. Миграции не изменяют профили, переименование и удаление записей справочника не затрагивают сохранённое образование. Старое название сохраняется точно, включая пробелы, при повторном сохранении. Названия школ и колледжей остаются допустимыми.

Начальное заполнение содержит 1 337 доступных записей, включая филиалы и отдельно представленные ведомственные институты. Снимок собран 04.10.2026: все 1 229 карточек публичного каталога vuzbase (62 страницы) дополнены 108 ведомственными и отдельно проверенными записями. Для каждой записи сохранена ссылка на источник; для основного каталога также сохранены идентификаторы мониторинга, ИНН/ОГРН и сведения о лицензии. Исходные 461 записи навигатора иностранного приёма больше не ограничивают состав справочника. Старые названия остаются поисковыми альтернативами, учтены переименования и присоединение ГАУ Северного Зауралья к Тюменскому госуниверситету.

Миграция 0064 добавляет отсутствующие коды и обновляет только полностью неизменённые записи первоначального заполнения 0063. Любая правка администратора сохраняет всю запись. Старая подсказка присоединённого вуза скрывается только при отсутствии ручных правок; название в профилях не меняется. Повторное заполнение не создаёт дублей.

Импорт JSON по умолчанию только добавляет отсутствующие коды; --update-existing явно обновляет сведения, сохраняя активность записей и образование пользователей. Импорт поддерживает собственный URL источника у каждой записи, валидирует весь файл до записи и выполняется в транзакции.

Источники, их даты и ограничения описаны в docs/university-directory.md и метаданных JSON. Основной каталог отражает ежемесячные копии реестров и может отставать до месяца. Для МВД доступен оригинальный полный перечень 2024 года; более новая полная выгрузка была недоступна. Снимок не выдаётся за исчерпывающий живой реестр лицензий. Фоновое обновление не добавлено: администратор меняет список вручную или проверенным импортом.

Проверено на итоговом изменении: 20 тестов API, профиля, импорта, исторических миграций, полного JSON, повторного заполнения и всех типов ручных правок проходят на SQLite в памяти; команда завершилась успешно. Django system check, makemigrations --check --dry-run, Black/flake8 изменённых Python-файлов и git diff --check проходят.

GitHub CI на итоговом коммите полностью проходит: Backend PostgreSQL CI, Tests и Lint. На PostgreSQL 15 миграции применились к пустой базе, проверки схемы/моделей прошли, целевые проверки блокировок и полный прогон 1 004 тестов завершились OK без пропусков. Стандартный полный прогон на SQLite также завершился успешно.

Frontend: PROCOLLAB-github/procollab#398. Порядок выкладки: backend с миграциями, затем frontend. PR не выкладывает изменения автоматически.

Совместимость проверена 16.10.2026 после объединения с актуальным dev (81bd6fe). PostgreSQL CI и Lint / Tests проходят. Перед выкладкой на dev сохранена приватная копия всех 19 записей образования, frontend и текущего backend-образа; контроль сохранности выполняется отдельно от миграций.

@TThanos3000
TThanos3000 marked this pull request as ready for review October 16, 2026 14:04
@TThanos3000
TThanos3000 merged commit ccf9203 into dev Oct 16, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants