Skip to content

Prod: add vacancy city metadata API - #711

Merged
TThanos3000 merged 1 commit into
masterfrom
feature/prod-vacancy-city-metadata-api
Aug 27, 2026
Merged

Prod: add vacancy city metadata API#711
TThanos3000 merged 1 commit into
masterfrom
feature/prod-vacancy-city-metadata-api

Conversation

@TThanos3000

@TThanos3000 TThanos3000 commented Aug 26, 2026

Copy link
Copy Markdown
Collaborator

Summary

Production port of the vacancy city metadata functionality verified on dev in PR #706 (feature commit 446cab5820ff32e0b74d7ec82a5f4fbf28df5d2d). The port is applied semantically on top of current master base 1aee63c8a506404282170909152da3756bd80255; dev was not merged and its merge/deploy fixes were not cherry-picked.

Changes

  • adds nullable Vacancy.city (max_length=255) through migration vacancy.0010_vacancy_city;
  • requires a trimmed city for office and hybrid vacancies;
  • clears city for remote vacancies;
  • validates the resulting object state for create, PUT, and PATCH;
  • accepts legacy Angular work format смешанная and stores/returns canonical смешанный формат;
  • exposes city in create, detail, list, catalog, legacy project nested, and workspace vacancy contracts;
  • adds editable metadata to the existing project nested vacancy contract;
  • adds regression coverage for create/update/normalization/legacy compatibility and production catalog/workspace contracts.

Production-only behavior preserved

  • current VacancyCatalogSerializer and public catalog contract;
  • existing response serializers, response-count annotations and selectors;
  • current vacancy permissions, including staff/superuser management access;
  • all newer response lifecycle and query optimizations from master.

No production file was replaced wholesale with its dev version.

Migration impact

vacancy/migrations/0010_vacancy_city.py follows 0009_vacancy_specialization and only adds a nullable column. Existing production vacancies remain valid with city = NULL; no data backfill from Project.region is performed.

Checks

  • GitHub CI repository-wide Flake8: passed (13s)
  • GitHub CI full backend suite: passed, 1225/1225 (22m24s)
  • PR Backend PostgreSQL CI: passed, including connection/locking verification, Django configuration/models, migration consistency/application, targeted locking/constraint tests, and full suite 1225/1225 (7m29s)
  • Black check for all changed Python files: passed
  • Flake8 for all changed Python files: passed
  • python manage.py check --tag models: passed
  • python manage.py makemigrations --check --dry-run --skip-checks: passed (No changes detected)
  • migration graph assertion: vacancy 0009 -> 0010, 0010 is the leaf
  • runtime serializer/normalization/final-state validation assertions: passed
  • python -m compileall: passed
  • git diff --check: passed

Local PostgreSQL was unavailable, so targeted DB tests could not run separately on Windows; every targeted vacancy/workspace test is included in and passed by the full PostgreSQL CI suite. The ordinary local manage.py check is blocked by the missing Windows WeasyPrint gobject-2.0-0 system library; Django system checks ran successfully as part of the Linux CI test command.

Scope confirmation

Changed files are limited to vacancy model/constants/serializers/migration/tests and one project workspace vacancy contract test. React, Angular/frontend, workflows, Docker/deploy, infrastructure, and unrelated backend modules are unchanged.

@TThanos3000
TThanos3000 marked this pull request as ready for review August 27, 2026 09:48
@TThanos3000
TThanos3000 merged commit 5af826b into master Aug 27, 2026
6 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.

1 participant