Prod: quarantine next-gen API surface - #740
Merged
Merged
Conversation
TThanos3000
marked this pull request as ready for review
September 11, 2026 09:47
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Что сделано
Добавлен явный runtime-флаг
NEXTGEN_SURFACE_ENABLEDс безопасным значением по умолчаниюFalse.При выключенном флаге будущий React/next-gen surface отсутствует из URLConf и отвечает
404, соответствующие модели не зарегистрированы в Django Admin, а next-gen notification emitters завершаются до чтения объектов и SQL. Общий модуль уведомлений, legacy Angular API, программные email-сценарии иlast_activityостаются активными.Это quarantine runtime surface, а не откат схемы или данных.
Revisions и аудит клиентов
907ced23273e298314e9d8604dbaabb25ded686955c2e93d96e45568dc50062d841521cc7ba75fbf8abbff5f103225dcc293aa4d22be1959aca32cc9origin/mainaudit:4b421707e1b873b35ec22b272de6fbb51169e7faАудит выполнен по фактическим Angular
HttpClient/repository/use-case URL, а не по совпадению названий frontend routes.Endpoint audit
/applications/*,/submissions/*,/evaluations/*,/expert/*,/team-invites/*,/submission-assignments/*404/programs/managed/,manager-overview, new applications/evaluations/submission-assignments404404/feed/news/*React API404/auth/profiles/*public profile API404/notifications/*/programs/*, project analytics, fields/submit, projects/apply/filter/projects/*,/invites/*,/vacancies/*,/rate-project/*/feed/, contextual program/project/user news/auth/users/*,/auth/specialists/*,/courses/*,/chats/*Сохранены в том числе контракты #732-#739:
current_project_application, canonicalprogramLinkId, case lifecycle, Project Analytics, rating, evaluation deadline, manager/expert access и production vacancy behavior.Notification audit
action_urlPROJECT_INVITE_CREATED,PROJECT_INVITE_REVOKED/invites/create/delete/office/projects/invitesPROJECT_INVITE_ACCEPTED/DECLINED/office/projects/<id>/edit?section=teamVACANCY_RESPONSE_CREATED/office/vacancies/<id>VACANCY_RESPONSE_ACCEPTED/DECLINED/office/vacancies/myTEAM_INVITE_*APPLICATION_*SUBMISSION_*EXPERT_ASSIGNMENT_*EVALUATION_*NEWS_COMMENT_CREATED/office/news/<id>Для legacy invite create/revoke добавлены недостающие вызовы существующего event layer внутри транзакции. Для нового vacancy response исправлен несуществующий Angular URL
/office/projects/.../responsesна существующий/office/vacancies/<id>. Базовыеcreate_notification()/create_notifications()не отключаются и сохраняют recipient isolation, auth, pagination, unread/read API и idempotency.React-dev
React-dev получает
NEXTGEN_SURFACE_ENABLED=Trueчерез атомарно создаваемый и ignored Compose override.react-dev-runtime/nextgen-surface.compose.ymlдля сервисовwebиcelerys.Deploy script:
Production deploy этот override не использует. Default setting остаётся
False; release deploy job и Docker-конфигурация не изменены. Вrelease-ci.ymlизменено только тестовое окружение, чтобы существующий полный next-gen suite выполнялся в режиме ON.Follow-up: общий PartnerProgram contract
На follow-up head
55c2e93d96e45568dc50062d841521cc7ba75fbfдочищен next-gen surface внутри legacy detail/admin программы:NEXTGEN_SURFACE_ENABLED=Falseполеapplication_policyполностью исключается черезPartnerProgramBaseSerializerMixin.get_fields()из member и non-member detail responses;current_project_application,courses,materials, welcome state и остальные legacy поля не меняются;PartnerProgramAdminскрываетparticipation_formatиз list display/links/filter и целиком убирает секцию «Участие и заявки» вместе с team sizes/application deadline;Follow-up regression:
33/33passed;33/33passed;86/86passed;checkиcheck --tag modelsв OFF/ON: passed;makemigrations --check --dry-run:No changes detected;git diff --check: passed.Existing cross-domain tests, которые намеренно reverse-ят quarantined
manager-overview/new evaluation routes, остаются ON-only и проверяются полным CI.Admin, БД и производительность
При OFF условно не регистрируются:
Application,Team,TeamMember,TeamInvite,Submission,SubmissionExpertAssignment,Evaluation,EvaluationScore,EvaluationAmendment.Это закрывает также прямые
/admin/partner_programs/<model>/...URL. Legacy PartnerProgram-модели остаются зарегистрированы.ActivityTrackingJWTAuthenticationне затронуты.Проверки
Локально, Python 3.11 из существующего Poetry environment:
68/68passed;375tests OK,4expected mode skips;159/159passed;67/67passed;check: OFF и ON passed;check --tag models: OFF и ON passed;makemigrations --check --dry-run:No changes detected;bash -n scripts/deploy_react_dev.sh: passed;git diff --check: passed;pyproject.toml/poetry.lockне изменились.Полный локальный suite запускался один раз в ON-режиме:
1501tests,1failure,8skipped. Единственный failure —FeedAPITests.test_feed_returns_project_news_as_news_contentпосле многократного reuse локальной SQLite БД через--keepdb. Этот же тест проходит:Failure классифицирован как локальное stale/reused-test-DB состояние, а не изменение quarantine logic. GitHub Linux CI с чистой БД является обязательным gate.
PostgreSQL suite локально не запускался: доступного Docker daemon/PostgreSQL окружения нет; dependency/Docker-конфигурация не менялась. PostgreSQL job запускает полный suite в ON и отдельный quarantine contract в OFF.
CI
GitHub CI исходного head
4543ab24cead452ecb9f9f334ec09b806bf3c425: 5/5 checks passed.Повторный CI для follow-up head
55c2e93d96e45568dc50062d841521cc7ba75fbf: выполняется.CI/Tests: passed,28m29s;Backend PostgreSQL CI: passed,11m59s;CI/Lint: passed,12s;Sync roadmappush и pull_request: passed.Чистые SQLite и PostgreSQL CI подтверждают, что локальный failure на многократно reused
--keepdbSQLite DB не является regression/blocker этого PR.Ограничения
PR не добавляет Angular bell UI и новые события
program_news_published,program_material_published,course_access_opened; текущая общая Notification foundation остаётся пригодной для отдельного Angular PR.Миграций, удаления endpoint-кода, удаления таблиц/данных, merge и deploy в рамках этой работы нет.